Function Calling(Tools)

Function Calling(Tools)とMCP(Model Context Protocol)の関係について学ぶ。

Function Calling(ツール呼び出し)とは?

LLMが単にテキストだけを生成するのではなく、外部関数(Function)やAPIを直接呼び出せるようにする機能である。
たとえば、OpenAI APIが提供するfunction_call機能が代表的である。

動作原理

  1. ユーザー入力: 「今日のソウルの天気を教えて」
  2. LLMの判断: 「これは天気APIを呼び出す必要がある」
  3. ツール呼び出し: あらかじめ定義された関数(例: getWeather(location: string))を実行
  4. 結果受信: { "location": "Seoul", "temp": 28, "condition": "Sunny" }
  5. 最終応答生成: 「今日のソウルは晴れで28度です」

つまり、LLMは自然言語 -> 関数入力への変換を担当し、実際の計算や検索は外部関数/ツールが担う。

利点

  • リアルタイムデータの活用
    • LLM自体は訓練時点以降の知識を知らない。Function Callで最新APIに接続できる。
  • 正確な計算
    • LLMは数学演算が苦手である。代わりに計算機APIを呼び出せば正確な結果を返せる。
  • 業務自動化
    • 「メールを送って」 -> メールAPIを呼び出す
    • 「DBから顧客一覧を取得して」 -> DBクエリを実行

MCPとFunction Callingの違い

  • Function Calling

    • 個別ツールをLLMが直接呼び出す方式
    • APIや関数単位の呼び出し定義が必要
    • 例: getWeather(), searchStockPrice()
  • MCP(Model Context Protocol)

    • 複数のツール(Function/Resource)を標準化された方式で接続するプロトコル
    • 各ツールを「Provider」として抽象化し、LLMが一貫した方法でアクセス可能
    • Function Callを含む「ツール呼び出し」を体系的に管理する上位概念

実際の例

1. Function Calling単独使用

  • OpenAI Function Callの例:

    {
      "name": "getWeather",
      "description": "現在の天気を照会",
      "parameters": {
        "type": "object",
        "properties": {
          "location": { "type": "string" }
        },
        "required": ["location"]
      }
    }
    

    モデルが"서울"をlocationにマッピングしてAPIを実行する。

2. MCPベースのFunction Calling

  • MCPはFunctionをResource Registryとしてまとめて管理
  • LLMが「天気API」を直接知る必要はなく、MCPがtools.weatherのような抽象化されたインターフェースを提供
  • 複数のツールを標準プロトコルで接続し、Function Callの混乱や重複を減らす

比喩で整理

  • Function Calling = 個別の「ツールの使い方」(はさみ、ハンマー、ドライバーのような単一ツール)
  • MCP = 「工具箱/作業台」(ツールを標準化された方式で整理しておくシステム)

まとめ

Function Callingは個別APIを呼び出す技術であり、MCPは複数のFunction(ツール)を標準化された方式で管理・接続する上位レイヤーと理解すればよい。