Claude API Tool Use(関数呼び出し)の実装ガイド

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

Claude API Tool Use(関数呼び出し)の実装ガイド

AI初心者

AIを知りたい

Claude APIの「Tool Use」って何ですか?GPTのFunction Callingと同じものですか?

AIエンジニア

AIエンジニア

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

AI初心者

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を知りたい

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

AIエンジニア

AIエンジニア

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

AI初心者

AIを知りたい

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

AIエンジニア

AIエンジニア

はい。Claudeは必要に応じて複数のツールを連続して呼び出します。例えば「東京とニューヨークの天気を比較して」という質問には、天気APIを2回呼び出す判断をします。また並列でのツール呼び出しにも対応しているので、独立した複数の処理を効率的に実行できます。

機能 Claude Tool Use GPT Function Calling Gemini Function Calling
並列呼び出し 対応 対応 対応
ストリーミング 対応 対応 対応
ツール結果の型 テキスト/画像 テキスト テキスト
強制呼び出し tool_choice指定 tool_choice指定 tool_config指定

3社のFunction Calling比較

AI初心者

AIを知りたい

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

AIエンジニア

AIエンジニア

機能的にはほぼ同等ですが、Claudeのtool_useはレスポンスにテキストと画像を含められる点がユニークです。GPTのFunction Callingが最も歴史が長くドキュメントが充実。GeminiはGoogle検索をビルトインツールとして利用できるのが強みです。

まとめ

Tool UseはClaude APIの外部ツール連携を実現する核心機能です。ツール定義→API送信→ツール実行→結果返却のサイクルでAIに外部データやアクション実行の能力を付与できます。GPTのFunction Calling、GeminiのFunction Callingと同等の機能で、AIエージェント構築の基盤技術です。

関連記事

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蓄積は不要です。