ツール使用(Tool / Function calling)
LLMは文章を生成できますが、それ自体ではWebを検索したり計算を実行したりはできません。そこで登場するのが**ツール使用(Tool use / Function calling)**です。結論から言うと、ツール使用とは、モデルが「この関数をこの引数で呼んでほしい」という指示を構造化データ(JSON)で出力し、外部のプログラムがそれを実行して結果をモデルに返す仕組みです。これがエージェントが外界に作用する手段になります。
どう動くのか
おおまかな流れはこうです。
- 開発者が、使えるツールをスキーマ(名前・説明・引数の形)として定義し、モデルに渡す。
- ユーザーの依頼を見て、モデルは「このツールを呼ぶべき」と判断したら、ツール名と引数を出力する。
- アプリ側がその関数を実際に実行し、結果をモデルに返す。
- モデルは結果を踏まえて回答を続ける。
Anthropic のドキュメントでは、モデルが自分で実行するのではなく「呼ぶべき関数とその引数を返し、実行はアプリ側が行う(クライアントツール)」形が基本だと説明されています。なお検索などをモデル提供側の基盤で実行する「サーバーツール」もあります。
スキーマの例(擬似的なJSON)
ツール定義は、たとえば次のような形をイメージしてください。
{
"name": "get_weather",
"description": "指定した都市の現在の天気を返す",
"input_schema": {
"type": "object",
"properties": { "city": { "type": "string" } },
"required": ["city"]
}
}
「天気は?」とだけ聞かれて都市が不明な場合、賢いモデルは引数を勝手に埋めず聞き返すことがある、ともドキュメントは述べています。
どんなツールがあるか
代表例として、Web検索、コード実行、社内APIやデータベースへの問い合わせ、ファイル操作などがあります。Lilian Weng も、外部ツールの呼び出しはLLMの能力を大きく広げる要素だと位置づけています。
まとめ
ツール使用は、モデルが構造化された「関数呼び出しの依頼」を出し、外部が実行して結果を戻す仕組みです。これによりエージェントは検索・計算・操作といった現実の作業を行えるようになります。次のレッスンでは、これを繰り返す基本ループ(ReAct)を学びます。