GEO

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

ファンクションコーリング(ツール利用とも呼ばれます)は、LLMがユーザーのリクエストを分析し、構造化されたJSON形式で外部の関数やAPIを呼び出せるようにする機能です。OpenAIは2023年6月に公式サポートを導入しました。それ以降、Claude、Gemini、Llamaのいずれも標準機能として搭載しており、AIエージェント実装の最小単位となっています。

ファンクションコーリング(ツール利用とも呼ばれます)は、LLMがユーザーのリクエストを分析し、構造化されたJSON形式で外部の関数やAPIを呼び出せるようにする機能です。OpenAIは2023年6月に公式サポートを導入しました。それ以降、Claude、Gemini、Llamaのいずれも標準機能として搭載しており、AIエージェント実装の最小単位となっています。

なぜ重要なのか

LLMは本質的にテキスト生成器です。ファンクションコーリングがなければ、「今のソウルの天気は?」と尋ねても、学習時点の知識しか引き出せません。ファンクションコーリングを使うと、モデルはget_weather(location: "Seoul")をJSONとして出力し、ホストアプリが実際のAPIを実行し、その結果が最終的な回答のためにモデルへと戻されます。このシンプルな仕組みが、AIエージェント、AI検索、そしてMCPエコシステム全体の基盤となっています。

仕組み

  1. ツール定義: アプリがLLMに利用可能な関数のリスト、つまり名前、説明、パラメータスキーマを渡します。
  2. ユーザーのリクエスト: ユーザーが自然言語の質問を入力します。
  3. 呼び出しの判断: LLMがどの関数を呼び出すかを決定し、引数をJSONとして生成します。
  4. 実際の実行: ホストアプリがJSONを解析し、実際の関数を実行します。モデル自体はコードを実行しません。
  5. 結果の注入: 関数の出力がLLMのコンテキストに戻されます。
  6. 最終的な応答: LLMが結果に基づいた自然言語の回答を生成します。

ツール定義:

{
  "name": "search_blog_posts",
  "description": "Search blog posts by keyword",
  "parameters": {
    "type": "object",
    "properties": {
      "keyword": { "type": "string", "description": "search keyword" },
      "limit": { "type": "integer", "default": 5 }
    },
    "required": ["keyword"]
  }
}

ユーザー: 「GEOに関する投稿を3件見つけて」

モデルの応答:

{
  "tool_call": "search_blog_posts",
  "arguments": { "keyword": "GEO", "limit": 3 }
}

アプリがツールを実行した後: [{title: "...", url: "..."}, ...]

最終的な応答: 「GEOに関する投稿を3件見つけました...」

ファンクションコーリング vs MCP vs ReAct

観点ファンクションコーリングMCPReAct
レベルAPI呼び出しプロトコル標準化されたツール接続プロトコルプロンプティングパターン
役割モデルがツールを呼び出すためにJSONを出力する異なるホスト/サーバー間でツールを共有する段階的な推論とアクションのループ
関係MCPの基盤アプリ間でファンクションコーリングを標準化するループ内でファンクションコーリングを利用する

ファンクションコーリングは単一のツール呼び出しであり、MCPは多くのアプリが同じツールを共有する方法であり、ReActは推論を伴う呼び出しをループさせるためのパターンです。

制約と注意点

ハルシネーションのリスク: モデルが存在しない関数を作り出したり、不正な引数を生成したりすることがあります。厳格なスキーマ検証が必須です。

並列呼び出し: フロンティアモデル(GPT-4o、Claude Opus 4.6)は複数の関数を並列で呼び出せます。これによって依存関係の管理が必要になります。

コスト: 呼び出しのたびにコンテキストが拡張され、トークン消費が増えます。ツールの露出を絞り込むことで、パフォーマンスとコストの両方が改善します。

セキュリティ: プロンプトインジェクションと組み合わさると、ファンクションコーリングは被害を増幅させる可能性があります。決済や削除のようなリスクの高いアクションには、ユーザーの確認を要求してください。

GEOへの示唆

AI検索がブログから情報を抽出する際、内部ではfetch_web_contentsearch_knowledgecite_sourceといった関数を呼び出します。クリーンなHTMLと構造化データを公開しているブログは、これらの呼び出しの品質を高め、引用される確率を上げます。言い換えれば、「関数が読み取りやすいブログ」こそがGEOに適したブログなのです。

Sources: