Re Reference AI

エージェント

ファンクションコーリングとは

Function Calling / 関数呼び出し

LLMに外部関数の呼び出し内容を構造化データとして出力させる、OpenAIが導入したツール連携の仕組み

LLMツール連携

ひとことで言うと

AIに、呼び出したい関数の内容を決まった形式で出力させる仕組み。

概要

Function Calling(ファンクションコーリング)とは、あらかじめ定義した関数の名前・説明・引数のスキーマをLLMへ提示しておき、ユーザーの入力に応じてLLMがどの関数をどんな引数で呼び出すべきかを構造化されたJSON形式で出力させる仕組み。 OpenAIがChat Completions APIの機能として最初に導入した名称であり、現在ではTool Callingという、より一般的な名称でも呼ばれる。 LLMが自由形式のテキストではなく決まったスキーマに沿った出力を返すため、アプリケーション側でその出力をそのままプログラム的に処理できる点が特徴。 スキーマには多くの場合JSON Schemaが使われ、パラメータの型や必須項目を明確に定義しておくことで、LLMによる誤った形式の引数生成のリスクを減らせる。

背景

LLMにツールを使わせたい場合、出力が自由な自然言語のままではプログラムから安定して解釈するのが難しい。 Function Callingは、呼び出す関数名と引数をあらかじめ定義したJSON Schema等の形式でLLMに出力させることで、この解釈の問題を解消するために導入された。

歴史

2023年6月: OpenAIがChat Completions APIにFunction Calling機能を追加すると発表し、LLMからの構造化されたツール呼び出しを公式にサポート。 以降、他のLLMプロバイダも同様の機能を追加し、名称としてはより包括的なTool Callingが広く使われるようになる。

アーキテクチャ

開発者は、関数名・説明文・引数のJSON Schemaを含む関数定義のリストをAPIリクエストに含める。 LLMは、ユーザーの入力に対しある関数の呼び出しが適切と判断すると、その関数名とスキーマに従って生成した引数を含むJSONを出力する。 アプリケーションはこのJSONをパースして実際の関数を実行し、結果を会話履歴へ追加して次の応答生成に利用する。

利点

  • LLMの出力を、プログラムが安定して解釈できる構造化データとして得られる
  • 既存のAPIや社内システムの関数をそのままLLMから呼び出せるように統合しやすい

欠点

  • 引数のスキーマ定義や関数の説明文の質が、呼び出し精度に大きく影響する
  • 定義する関数の数が増えるほど、必要な関数の選択を誤りやすくなる

比較

  • ツールコーリングFunction Callingは、Tool Callingという、より一般的な呼び方の元になったOpenAI発の名称
  • MCPMCPは、Function Calling的な仕組みで使うツールの提供・接続方法を標準化するプロトコル

関連用語

ツールコーリングMCPAIエージェントStructured Output

よくある質問

Function Callingは今も使われている用語?

OpenAIのドキュメントやAPIでは現在も使われているが、業界全体としては複数プロバイダ・複数種類の外部連携を包含するTool Callingという呼び方がより一般的になっている。

参考文献

関連Zenn記事