Function Calling(Tools)
Function Calling(Tools)とMCP(Model Context Protocol)の関係について学ぶ。
Function Calling(ツール呼び出し)とは?
LLMが単にテキストだけを生成するのではなく、外部関数(Function)やAPIを直接呼び出せるようにする機能である。
たとえば、OpenAI APIが提供するfunction_call機能が代表的である。
動作原理
- ユーザー入力: 「今日のソウルの天気を教えて」
- LLMの判断: 「これは天気APIを呼び出す必要がある」
- ツール呼び出し: あらかじめ定義された関数(例:
getWeather(location: string))を実行 - 結果受信:
{ "location": "Seoul", "temp": 28, "condition": "Sunny" } - 最終応答生成: 「今日のソウルは晴れで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(ツール)を標準化された方式で管理・接続する上位レイヤーと理解すればよい。