Function Calling 技術まとめ
Function Calling 技術まとめ
1. 定義
Function Calling は、開発者が JSON schema を通じて大規模言語モデル(LLM)に利用可能な外部ツール(API など)を記述できるメカニズムです。モデルがユーザーの質問に答えるためにツール呼び出しが必要と判断した場合、構造化された tool_calls JSON データを出力し、呼び出す関数名とパラメータを指定します。ホストプログラムがこの呼び出しを解析して実行し、結果をモデルに返し、モデルが最終的な回答を生成します。
2. 核心原理と解決する問題
- 本質:「2回の対話+中間実行」の閉ループ。1回目でモデルが判断しツール呼び出し要求を出力。中間でコードがツールを実行。2回目でモデルが実行結果に基づき最終回答を生成。
- 解決する問題:従来のモデルによるツール呼び出しで、不安定でエラーが発生しやすい自然言語解析(if/else 判断)に依存する問題を解決し、構造化出力により標準化と精度向上を実現。
3. 役割分担(タスク委任の類推)
- 開発者(HR):ツールを定義し、ツールの機能やパラメータなどを記述した JSON Schema を作成。
- LLM モデル(マネージャー):ツールの説明を理解し、呼び出しの必要性、どのツールを呼び出すか、パラメータを判断し、構造化された呼び出し要求(
tool_calls)を出力。モデルは判断とテキスト生成のみを行い、コードを自ら実行しない。 - 実行器/ホストコード(従業員):モデルの
tool_calls要求を解析し、実際に対応する関数や API 呼び出しを実行し、結果を返す。
4. ツール定義(JSON Schema)
Schema はツールの「説明書」であり、重要な情報は以下の通り:
- name:ツールの一意識別子。
- description:極めて重要。モデルはこの説明に完全に依存してツールを呼び出すか判断する。説明が明確で正確であればあるほど、モデルの判断も正確になる。
- parameters:ツールに必要なパラメータとその型、説明、制約(列挙値、必須かどうかなど)を定義。
5. 完全な呼び出しフロー
記事では、天気を問い合わせるコード例を通じて、ユーザーの質問から、ツール定義を伴う最初のモデル呼び出し、モデルが tool_calls を返す、コードが関数を実行、結果を role: "tool" メッセージとして会話履歴に追加、最後にモデルが最終的な自然言語回答を生成するまでの全プロセスを示しています。
6. 高度な機能 - 並列ツール呼び出し
ユーザーの質問に複数のツールが協調して答える必要がある場合(例:複数の都市の天気を同時に問い合わせる)、モデルは1回の応答で複数の tool_calls を含むリストを出力できます。ホストコードはこれらの呼び出しを並列実行し、すべての結果をまとめてモデルに返して統合することで、効率を向上させます。
评论
暂无已展示的评论。
发表评论(匿名)