カスタムツールの作成

GitBookアシスタントにカスタムツールを追加して、製品やウェブサイトなどと連携できるようにする

Docs Embed のカスタムツールを使うと、アシスタントがあなたの製品やウェブ上で賢くアクションを振り分けることができます。例えば、GitBook Assistant に API を呼び出させたり、プロダクト操作を行わせたり、他のツールを開かせたりするカスタムツールを作成できます。

Docs Embed の設定で定義するカスタムツールに加えて、アシスタントは常に次のものにアクセスできます: サイトの AI 設定で定義した MCP サーバー

ツールは次を通じて定義できます: configure スクリプト実装を使用する場合はメソッドとして、NPM パッケージ/React コンポーネントを使用する場合は props として定義します。

例を見てみましょう:

window.GitBook("configure", {
  tools: [
    {
      // ツールを名前と説明で登録します。
      name: "create_ticket",
      description:
        "ユーザーのためにチケットを作成します。ticket_issue フィールドを必ず埋めてください。",

      // input schema は execute 関数内でアクセスできるデータです。
      inputSchema: {
        type: "object",
        properties: {
          ticket_issue: {
            type: "string",
            description:
              "チケットを作成するための問題。不明な場合は先にユーザーに尋ねてください。",
          },
        },
        required: ["ticket_issue"],
      },

      // 実行関数が呼ばれる前に表示される任意の確認ボタン。
      confirmation: { icon: "circle-question", label: "サポートチケットを作成しますか?" },

      // execute 関数はツールが使用されたときに呼ばれる関数です。
      execute: async (input) => {
        const { ticket_issue } = input;

        // ユーザーの問題でチケットを作成します
        const ticket = await fetch("/api/tickets", {
          method: "POST",
          body: JSON.stringify({ issue: ticket_issue }),
        }).then((r) => r.json());

        return {
          // 出力は AI に渡されます。
          output: {
            ticketId: ticket.id,
            status: "success",
          },
          // summary はユーザーに表示されます。
          summary: `Created ticket #${ticket.id} for ${ticket_issue}`,
        };
      },
    },
  ],
});

仕組み

GitBook Assistant を設定するときに提供されたツールは AI を通じて利用可能になります — つまり、アシスタントはコンテキストに合うと判断したときにあなたのツールを賢く実行できます。

上の例では、アシスタントがユーザーにサポートチケットの作成が必要だと判断したときに、ユーザーに問題を尋ね、その後チケットを記録する関数を実行します。

キー
説明

name

ツールの一意の識別子。

を追加し、

GitBook Assistant が定義されたツールをいつ使用するかの文脈を知ることを可能にします。

inputSchema

ツールの入力パラメータを定義する JSON スキーマ。以下でアクセスできます: input 引数で execute 呼び出し。

confirmation

execute 関数を発火する前にユーザーの操作を指定できる任意の確認ボタン。形式: { icon?: string, label: string }.

execute

ツールが呼ばれたときに実行される非同期関数。次を返す必要があります: { output: any, summary: string }output は AI に提供され、AI がそれを基に作業を続けます(ユーザーには表示されません)。 summary はユーザーのチャットウィンドウに表示される視覚的な要約です。

最終更新

役に立ちましたか?