AIに「天気を調べて」と言えば本当にAPIを叩いてくれる——それを実現するのがTool Use(関数呼び出し)です。Claude APIでの実装方法をステップごとに解説します。
Claude API Tool Use(関数呼び出し)の実装ガイド

AIを知りたい
Claude APIの「Tool Use」って何ですか?GPTのFunction Callingと同じものですか?

AIエンジニア
はい、基本的に同じ概念です。AIモデルが外部のツール(関数)を呼び出す機能で、APIレスポンスで「この関数をこの引数で呼んでほしい」という指示を返してきます。天気API、データベース検索、計算処理などをAIに使わせることができます。

AIを知りたい
具体的にどう実装するのですか?

AIエンジニア
API呼び出し時にtoolsパラメータでツールの定義(名前、説明、パラメータのJSON Schema)を渡します。Claudeが必要と判断するとtool_useレスポンスを返すので、実際に関数を実行して結果をtool_resultとして返します。このやり取りを繰り返すのがTool Useの基本フローです。
Tool Use(ツール利用)とは、Claude APIがユーザー定義のツール(関数)を呼び出す機能で、AIに外部データの取得や実際のアクション実行を可能にします。
OpenAI GPTのFunction Calling、Google GeminiのFunction Callingと同等の機能です。Webスクレイピング、DB操作、API連携、計算処理などの外部ツールをAIに使わせることで、より高度なタスクを実行できます。
Tool Useの実装フロー

AIを知りたい
実装の全体的な流れを教えてください。

AIエンジニア
4ステップです。1)ツールを定義(名前、説明、パラメータスキーマ)。2)APIリクエストにtools配列を含めて送信。3)レスポンスでtool_useが返ったら実際にツールを実行。4)結果をtool_resultとして返す。Claudeが最終回答を返すまで3-4を繰り返します。

AIを知りたい
1回の会話で複数のツールを呼ぶことはできますか?

AIエンジニア
はい。Claudeは必要に応じて複数のツールを連続して呼び出します。例えば「東京とニューヨークの天気を比較して」という質問には、天気APIを2回呼び出す判断をします。また並列でのツール呼び出しにも対応しているので、独立した複数の処理を効率的に実行できます。
| 機能 | Claude Tool Use | GPT Function Calling | Gemini Function Calling |
|---|---|---|---|
| 並列呼び出し | 対応 | 対応 | 対応 |
| ストリーミング | 対応 | 対応 | 対応 |
| ツール結果の型 | テキスト/画像 | テキスト | テキスト |
| 強制呼び出し | tool_choice指定 | tool_choice指定 | tool_config指定 |
3社のFunction Calling比較

AIを知りたい
Claude、GPT、Geminiの関数呼び出し、違いはありますか?

AIエンジニア
機能的にはほぼ同等ですが、Claudeのtool_useはレスポンスにテキストと画像を含められる点がユニークです。GPTのFunction Callingが最も歴史が長くドキュメントが充実。GeminiはGoogle検索をビルトインツールとして利用できるのが強みです。
まとめ
Tool UseはClaude APIの外部ツール連携を実現する核心機能です。ツール定義→API送信→ツール実行→結果返却のサイクルでAIに外部データやアクション実行の能力を付与できます。GPTのFunction Calling、GeminiのFunction Callingと同等の機能で、AIエージェント構築の基盤技術です。
関連記事
- AIエージェント開発入門:自律型AIシステムの作り方完全ガイド
- Claude Code MCP(Model Context Protocol)サーバー設定ガイド
- Claude Prompt Caching入門:APIコストを90%削減する方法
Claude API Tool Use(関数呼び出し)に関するよくある質問(FAQ)
Q1. Tool UseとOpenAIのFunction Callingはどう違いますか?
基本概念は同じ(モデルが外部関数を呼び出す仕組み)ですが、実装に違いがあります。Claude Tool UseではtoolsパラメータにJSON Schemaでツール定義を渡し、モデルがtool_useタイプのcontent blockで呼び出しを返します。開発者がツールを実行した後、tool_resultとして結果をメッセージに追加して再度APIを呼び出す「ループ」構造が特徴です。OpenAI Function Callingとの主な差異は、レスポンス構造(Claudeはcontent blocks方式、OpenAIはtool_calls方式)と、並列呼び出しの扱い方にあります。
Q2. ツール定義を書くときのコツはありますか?
3つの重要なコツがあります。第一に、descriptionフィールドには「いつ」「なぜ」このツールを使うべきかを自然言語で明確に記述してください。モデルはこの説明文に基づいてツール選択を判断します。第二に、パラメータのdescriptionも詳細に書き、期待するフォーマット(例:「ISO 8601形式の日付文字列」)を明記します。第三に、enumを活用して入力値を制限することで、無効な引数の生成を防げます。ツール名は動詞+名詞(例:search_documents)の命名規則が推奨されます。
Q3. 1回のリクエストで複数のツールを同時に呼び出せますか?
はい、Claude Tool Useは1回のレスポンスで複数のtool_useブロックを返すことがあります。これは独立した情報取得が複数必要な場合に発生します(例:天気の取得と為替の取得を同時に行う)。開発者側では、返された全てのtool_useブロックに対して並列にツールを実行し、同じ順序でtool_resultをまとめて返すことが推奨されます。依存関係のあるツール呼び出し(例:検索結果を使ってデータ取得)は、モデルが自動的に複数ターンに分割してくれます。
Q4. ツール実行中にエラーが発生した場合はどう返しますか?
tool_resultのis_errorフィールドをtrueに設定し、contentにエラーメッセージを記載して返します。モデルはエラー内容を解釈し、パラメータを修正して再試行したり、ユーザーに対して代替手段を提案したりします。重要なのは、例外をキャッチしてプログラムを中断させるのではなく、必ずtool_resultとして返すことです。モデルがエラーから学習して対応できるよう、エラーメッセージは具体的に(「Not Found: user_id=123」など)記述してください。
Q5. ストリーミング中でもTool Useは使えますか?
はい、ストリーミングモードでもTool Useは完全に動作します。ストリーミング時はcontent_block_startイベントでtool_useブロックの開始が通知され、content_block_deltaでJSON入力が部分的に送信され、content_block_stopでブロックが完了します。ツール呼び出しのJSONが完成するまで待ってから実行する必要があるため、部分JSONを蓄積してパースするロジックが必要です。Anthropic公式SDKを使えば、この処理は自動的にハンドリングされるため、手動でのJSON蓄積は不要です。
