コンテンツにスキップ

青写真篇 - ツールコール

Tool Call(ツールコール)はFunction Calling(関数コール)とも呼ばれ、大規模言語モデルが会話内容に基づいて外部ツールや関数の呼び出しが必要かどうかを判断し、情報取得や操作実行を行う仕組みです。モデルは呼び出すべき関数名とパラメータを返し、開発者が実際に関数を呼び出した後、その結果をモデルに返して会話を続行します。

AIChatPlus は以下のプラットフォームの Tool Call 機能をサポートしています:

  • OpenAI
  • Claude
  • Gemini
  • Ollama
  • CllamaServer(llama.cpp サーバー)

中核概念

ツール定義

ツールの定義には以下の主要なフィールドが含まれます:

  • タイプ: ツールの種類。現時点では Function のみをサポートしています。
  • 名前: 関数名。a-z、A-Z、0-9、アンダースコアまたはハイフンで構成され、最大長は64文字です。
  • 説明: 関数の説明で、モデルはこの説明に基づいて関数をいつ呼び出すかを判断します
  • プロパティ: 関数のパラメータリストで、各パラメータにはName、Description、Type、Requiredなどの属性が含まれます

ツールコールのプロセス

Tool Callの完全なフローは以下の通りです:

  1. リクエストを送信する: ツール定義を含むチャットリクエストをモデルに送信する
  2. モデル判断: モデルは対話内容に基づいてツールを呼び出す必要があるかどうかを判断します
  3. Tool Callsの返却: 呼び出しが必要な場合、モデルは呼び出す関数名と引数を返します。
  4. 関数の実行: 開発者は返された情報に基づいて実際の関数呼び出しを実行します
  5. 結果を返す: 関数の実行結果を新しいメッセージとしてモデルに送信する
  6. 会話を続ける: モデルが関数の結果に基づいて最終的な返答を生成する

OpenAIツールコールの例

以下にOpenAIを例として、Tool Call機能の使用方法をデモンストレーションします。

1. Tool を定義する

最初にツール定義を作成します。この例では、宅配便の配達日を取得する関数 get_delivery_date を定義します。

guide bludprint

2. Toolパラメータの定義

ToolにProperties(プロパティ)を追加します。この例では、order_idというパラメータを追加し、タイプをstringに設定し、必須項目とします。

guide bludprint

3. 配置オプション

OpenAI Chat Request Optionsノードを作成し、APIキーとモデルを設定して、ツール配列をオプションに接続します。

guide bludprint

4. メッセージを作成

ユーザーメッセージを作成し、宅配便の小包に関する質問をする。

guide bludprint

5. リクエストを送信し、Tool Callを処理する

Send OpenAI Chat Request In World ノードを作成し、On Message Finished イベントをバインドします。イベントコールバック内で、PayloadからToolCalls配列を取得します。

モデルがツールの呼び出しを決定した場合、ToolCalls配列は空ではありません。配列を順に処理して各Tool Callの情報を取得します:

  • ID: Tool Callの一意な識別子
  • FunctionName: 呼び出す関数名
  • FunctionArguments: 関数の引数(JSON文字列形式)

guide bludprint

6. 関数を実行して結果を返す

FunctionName に基づいて対応する関数ロジックを実行し(この例では宅配便の到着時間をシミュレート)、その結果を ToolCallResult 型のメッセージとしてモデルに返します。

新しいメッセージを作成するには、以下を設定する必要があります:

  • 役割: ツール に設定
  • 内容: 関数実行の結果
  • ToolCallResults: FAIChatPlus_ChatRequestToolCallResult を追加し、Id(前回のTool Call Idを使用)、FunctionName、およびFunctionResultを設定します

guide bludprint

7. 会話を続ける

ツールコールの結果を含むメッセージを履歴メッセージに追加し、再度リクエストを送信します。モデルは関数が返した結果に基づいて、最終的な自然言語での返答を生成します。

guide bludprint

9. 完全な青写真

10. 実行結果

上級者向けの使い方

複数のツール

複数のツールを同時に定義することができ、モデルは必要に応じてどの関数を呼び出すか選択します。

guide bludprint

複雑なパラメータ型

ツールのパラメータは複数の型をサポートしており、ExtraJsonStringExtraJsonObject フィールドを通じてより複雑なパラメータ定義(例えば列挙型など)を追加できます:

{"enum": ["Beijing", "HongKong"]}

guide bludprint

他のプラットフォーム

Claude、Gemini、Ollama、そしてCllamaServerにおけるTool Callの使用方法はOpenAIと似ており、対応するRequestとOptionsノードを置き換えるだけで済みます。各プラットフォームのコアデータ構造(FAIChatPlus_ChatRequestToolFAIChatPlus_ChatResponseToolCallなど)は共通です。

Original: https://wiki.disenone.site/ja

This post is protected by CC BY-NC-SA 4.0 agreement, should be reproduced with attribution.

この投稿はChatGPTを使用して翻訳されたものです。ご意見・ご感想はフィードバック中指出した抜け漏れを記す。