ツール使用の仕組み
Claudeは2種類のツールをサポートしています:- クライアントツール:あなたのシステム上で実行されるツールで、以下が含まれます:
- サーバーツール:ウェブ検索やウェブフェッチツールなど、Anthropicのサーバー上で実行されるツール。これらのツールはAPIリクエストで指定する必要がありますが、あなたの側での実装は不要です。
Anthropicが定義したツールは、モデルバージョン間での互換性を確保するためにバージョン付きタイプ(例:
web_search_20250305、text_editor_20250124)を使用します。クライアントツール
以下の手順でクライアントツールをClaudeと統合します:1
Claudeにツールとユーザープロンプトを提供
- APIリクエストで名前、説明、入力スキーマを含むクライアントツールを定義します。
- これらのツールが必要になる可能性のあるユーザープロンプトを含めます(例:「サンフランシスコの天気はどうですか?」)
2
Claudeがツールの使用を決定
- Claudeはユーザーのクエリに対してツールが役立つかどうかを評価します。
- 役立つ場合、Claudeは適切にフォーマットされたツール使用リクエストを構築します。
- クライアントツールの場合、APIレスポンスの
stop_reasonがtool_useになり、Claudeの意図を示します。
3
ツールを実行して結果を返す
- Claudeのリクエストからツール名と入力を抽出
- あなたのシステム上でツールコードを実行
tool_resultコンテンツブロックを含む新しいuserメッセージで結果を返す
4
Claudeがツール結果を使用してレスポンスを作成
- Claudeはツール結果を分析して、元のユーザープロンプトに対する最終的なレスポンスを作成します。
サーバーツール
サーバーツールは異なるワークフローに従います:1
2
Claudeがサーバーツールを実行
- Claudeはサーバーツールがユーザーのクエリに役立つかどうかを評価します。
- 役立つ場合、Claudeはツールを実行し、結果が自動的にClaudeのレスポンスに組み込まれます。
3
Claudeがサーバーツール結果を使用してレスポンスを作成
- Claudeはサーバーツール結果を分析して、元のユーザープロンプトに対する最終的なレスポンスを作成します。
- サーバーツールの実行には追加のユーザーインタラクションは必要ありません。
ツール使用の例
様々なツール使用パターンと技術を実演するコード例をいくつか紹介します。簡潔にするため、ツールはシンプルなツールで、ツールの説明は最高のパフォーマンスを確保するために理想的な長さよりも短くしています。単一ツールの例
単一ツールの例
JSON
get_weather関数を実行し、新しいuserメッセージで結果を返す必要があります:JSON
並列ツール使用
並列ツール使用
Claudeは単一のレスポンス内で複数のツールを並列で呼び出すことができ、これは複数の独立した操作を必要とするタスクに有用です。並列ツールを使用する場合、すべての並列ツール呼び出しの実装に関する包括的な例、テストスクリプト、ベストプラクティスについては、実装ガイドの並列ツール使用セクションをご覧ください。
tool_useブロックが単一のassistantメッセージに含まれ、対応するすべてのtool_resultブロックが後続のuserメッセージで提供される必要があります。重要:APIエラーを避け、Claudeが並列ツールを継続して使用できるよう、ツール結果は正しくフォーマットされている必要があります。詳細なフォーマット要件と完全なコード例については、実装ガイドをご覧ください。
複数ツールの例
複数ツールの例
単一のリクエストでClaudeに選択できる複数のツールを提供できます。以下はこの場合、Claudeは以下のいずれかを行う可能性があります:
get_weatherとget_timeツールの両方を含む例で、両方を求めるユーザークエリも含まれています。- ツールを順次使用(一度に一つ)— 最初に
get_weatherを呼び出し、天気の結果を受け取った後にget_timeを呼び出す - 並列ツール呼び出しを使用 — 操作が独立している場合、単一のレスポンスで複数の
tool_useブロックを出力
userメッセージで返す必要があり、各結果は独自のtool_resultブロックに含める必要があります。情報不足
情報不足
ユーザーのプロンプトにツールの必須パラメータをすべて埋めるのに十分な情報が含まれていない場合、Claude Opusはパラメータが不足していることを認識し、それを求める可能性が高くなります。Claude Sonnetも、特にツールリクエストを出力する前に考えるよう促された場合は求める可能性があります。しかし、合理的な値を推測しようとする場合もあります。例えば、上記のこの動作は保証されておらず、特により曖昧なプロンプトや知能の低いモデルの場合はそうです。Claude Opusが必須パラメータを埋めるのに十分なコンテキストを持っていない場合、ツール呼び出しを行う代わりに明確化の質問で応答する可能性がはるかに高くなります。
get_weatherツールを使用して、場所を指定せずに「天気はどうですか?」とClaudeに尋ねた場合、特にClaude Sonnetは、ツール入力について推測を行う可能性があります:JSON
順次ツール
順次ツール
一部のタスクでは、あるツールの出力を別のツールの入力として使用して、複数のツールを順次呼び出す必要がある場合があります。そのような場合、Claudeは一度に一つのツールを呼び出します。すべてのツールを一度に呼び出すよう促された場合、Claudeは上流のツールのツール結果に依存している下流のツールのパラメータを推測する可能性があります。以下は、この場合、Claudeは最初に
この例は、Claudeが異なるソースからデータを収集する必要がある質問に答えるために、複数のツール呼び出しを連鎖させる方法を実演しています。主要な手順は以下の通りです:
get_locationツールを使用してユーザーの場所を取得し、その場所をget_weatherツールに渡す例です:get_locationツールを呼び出してユーザーの場所を取得します。tool_resultで場所を返した後、Claudeはその場所でget_weatherを呼び出して最終的な答えを得ます。完全な会話は以下のようになる可能性があります:| 役割 | 内容 |
|---|---|
| User | 私がいる場所の天気はどうですか? |
| Assistant | まず現在の場所を見つけて、そこの天気を確認します。[get_locationのツール使用] |
| User | [一致するidとSan Francisco, CAの結果を含むget_locationのツール結果] |
| Assistant | [以下の入力でget_weatherのツール使用]{ “location”: “San Francisco, CA”, “unit”: “fahrenheit” } |
| User | [一致するidと”59°F (15°C), mostly cloudy”の結果を含むget_weatherのツール結果] |
| Assistant | サンフランシスコ、カリフォルニア州の現在の場所に基づくと、現在の天気は59°F(15°C)で、ほぼ曇りです。街では比較的涼しく曇った日です。外出する場合は軽いジャケットを持参することをお勧めします。 |
- Claudeは最初に天気の質問に答えるためにユーザーの場所が必要であることを認識し、
get_locationツールを呼び出します。 - ユーザー(つまりクライアントコード)が実際の
get_location関数を実行し、tool_resultブロックで結果「San Francisco, CA」を返します。 - 場所が判明したので、Claudeは
get_weatherツールの呼び出しに進み、locationパラメータとして「San Francisco, CA」を渡します(unitは必須パラメータではないため、推測されたunitパラメータも含む)。 - ユーザーは再び提供された引数で実際の
get_weather関数を実行し、別のtool_resultブロックで天気データを返します。 - 最後に、Claudeは天気データを元の質問への自然言語レスポンスに組み込みます。
思考の連鎖ツール使用
思考の連鎖ツール使用
デフォルトでは、Claude Opusはツール使用クエリに答える前に考えるよう促されており、ツールが必要かどうか、どのツールを使用するか、適切なパラメータを最適に決定します。Claude SonnetとClaude Haikuは可能な限りツールを使用するよう促されており、不要なツールを呼び出したり、不足しているパラメータを推測したりする可能性が高くなります。SonnetやHaikuにツール呼び出しを行う前にユーザークエリをより適切に評価するよう促すには、以下のプロンプトを使用できます:思考の連鎖プロンプト
関連するツール(利用可能な場合)を使用してユーザーのリクエストに答えてください。ツールを呼び出す前に、いくつかの分析を行ってください。まず、提供されたツールのうち、ユーザーのリクエストに答えるのに関連するツールはどれかを考えてください。次に、関連するツールの各必須パラメータを確認し、ユーザーが直接提供したか、値を推測するのに十分な情報を与えているかを判断してください。パラメータが推測できるかどうかを決定する際は、特定の値をサポートするかどうかを慎重にすべてのコンテキストを考慮してください。すべての必須パラメータが存在するか、合理的に推測できる場合は、ツール呼び出しを続行してください。しかし、必須パラメータの値のいずれかが不足している場合は、関数を呼び出さず(不足しているパラメータの代替値を使用してでも)、代わりにユーザーに不足しているパラメータを提供するよう求めてください。提供されていない場合、オプションパラメータについてより多くの情報を求めないでください。 JSONモード
JSONモード
ツールを使用して、そのツールや関数を通じて出力を実行する意図がなくても、スキーマに従うJSON出力をClaudeに生成させることができます。この方法でツールを使用する場合:
- 通常は単一のツールを提供したいでしょう
tool_choiceを設定して(ツール使用の強制を参照)、モデルにそのツールを明示的に使用するよう指示する必要があります- モデルが
inputをツールに渡すことを覚えておいてください。そのため、ツールの名前と説明はモデルの視点から記述する必要があります。
record_summaryツールを使用して特定のフォーマットに従って画像を説明する例です。価格
Tool use requests are priced based on:- The total number of input tokens sent to the model (including in the
toolsparameter) - The number of output tokens generated
- For server-side tools, additional usage-based pricing (e.g., web search charges per search performed)
- The
toolsparameter in API requests (tool names, descriptions, and schemas) tool_usecontent blocks in API requests and responsestool_resultcontent blocks in API requests
tools, we also automatically include a special system prompt for the model which enables tool use. The number of tool use tokens required for each model are listed below (excluding the additional tokens listed above). Note that the table assumes at least 1 tool is provided. If no tools are provided, then a tool choice of none uses 0 additional system prompt tokens.
| Model | Tool choice | Tool use system prompt token count |
|---|---|---|
| Claude Opus 4.1 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Opus 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 4 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 3.7 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 3.5 (Oct) (deprecated) | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Sonnet 3.5 (June) (deprecated) | auto, noneany, tool | 294 tokens 261 tokens |
| Claude Haiku 4.5 | auto, noneany, tool | 346 tokens 313 tokens |
| Claude Haiku 3.5 | auto, noneany, tool | 264 tokens 340 tokens |
| Claude Opus 3 (deprecated) | auto, noneany, tool | 530 tokens 281 tokens |
| Claude Sonnet 3 | auto, noneany, tool | 159 tokens 235 tokens |
| Claude Haiku 3 | auto, noneany, tool | 264 tokens 340 tokens |
usageメトリクスの一部として入力トークンと出力トークンの両方のカウントを出力します。