ツール使用の仕組み
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とサンフランシスコ、カリフォルニア州の結果を持つget_locationのツール結果] |
Assistant | [以下の入力でget_weatherのツール使用]{ “location”: “San Francisco, CA”, “unit”: “fahrenheit” } |
User | [一致するidと「59°F(15°C)、ほぼ曇り」の結果を持つ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
tools
parameter) - The number of output tokens generated
- For server-side tools, additional usage-based pricing (e.g., web search charges per search performed)
- The
tools
parameter in API requests (tool names, descriptions, and schemas) tool_use
content blocks in API requests and responsestool_result
content 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 , none any , tool | 346 tokens 313 tokens |
Claude Opus 4 | auto , none any , tool | 346 tokens 313 tokens |
Claude Sonnet 4 | auto , none any , tool | 346 tokens 313 tokens |
Claude Sonnet 3.7 | auto , none any , tool | 346 tokens 313 tokens |
Claude Sonnet 3.5 (Oct) (deprecated) | auto , none any , tool | 346 tokens 313 tokens |
Claude Sonnet 3.5 (June) (deprecated) | auto , none any , tool | 294 tokens 261 tokens |
Claude Haiku 3.5 | auto , none any , tool | 264 tokens 340 tokens |
Claude Opus 3 (deprecated) | auto , none any , tool | 530 tokens 281 tokens |
Claude Sonnet 3 | auto , none any , tool | 159 tokens 235 tokens |
Claude Haiku 3 | auto , none any , tool | 264 tokens 340 tokens |
usage
メトリクスの一部として入力トークンと出力トークンの両方のカウントを出力します。