Claudeでのツール使用
Claudeを外部ツールやAPIに接続します。ツールがどこで実行されるか、Claudeがいつツールを呼び出すか、そしてどのツールがタスクに適しているかを確認できます。
「tool use」(ツール使用、関数呼び出しとも呼ばれます)により、Claudeはあなたが定義した関数やAnthropicが提供する関数を呼び出すことができます。Claudeは、ユーザーのリクエストとツールの説明に基づいて、いつツールを呼び出すかを判断します。その後、あなたのアプリケーションが実行する(クライアントツール)か、Anthropicが実行する(サーバーツール)構造化された呼び出しを返します。
以下は、Anthropicが代わりに実行するサーバーツールであるWeb検索ツールを使用した最小限の例です:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=4096,
tools=[{"type": "web_search_20260209", "name": "web_search"}],
messages=[{"role": "user", "content": "What is the latest on the Mars rover?"}],
)
print(response.content)ClaudeはAnthropicのインフラストラクチャ上で検索を実行し、引用付きの結果を同じレスポンスで返します。あなたが定義した関数をClaudeに呼び出させるには、input_schemaを持つツールを渡し、Claudeがtool_useブロックを返したときにその呼び出しを実行します。クライアントツールの例では、その往復処理を最初から最後まで示しています。詳細については、ツールの定義とツール呼び出しの処理を参照してください。
ツール使用の仕組み
ツールは主に、コードがどこで実行されるかによって異なります。クライアントツール(ユーザー定義ツールや、bashやtext_editorなどのAnthropic定義のスキーマを持つツールを含む)は、あなたのアプリケーション内で実行されます。Claudeはstop_reason: "tool_use"と1つ以上のtool_useブロックで応答します。あなたのコードが操作を実行し、tool_resultを返送します。サーバーツール(web_search、web_fetch、code_execution、tool_searchなど)はAnthropicのインフラストラクチャ上で実行されます。Claudeがあなたのクライアントツールのいずれかと同じ並列ツール呼び出しのグループ内でそのツールを呼び出さない限り、実行を処理することなく結果を直接確認できます(停止理由とフォールバックを参照)。
以下は、クライアントツールにおけるそのラウンドトリップの全体です。最初のリクエストでget_weatherツールを定義し、Claudeはそれを呼び出すことで質問に答えます。レスポンスにはtool_useブロックが含まれ、あなたのコードが検索を実行し、2番目のリクエストで結果をtool_resultブロックに入れて送り返すことで、Claudeが回答を返せるようになります。
client = anthropic.Anthropic()
tools = [
{
"name": "get_weather",
"description": "Get the current weather for a given location.",
"input_schema": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "City and state, e.g. San Francisco, CA",
}
},
"required": ["location"],
},
}
]
messages = [{"role": "user", "content": "What's the weather in San Francisco?"}]
# Claude は、ツール名とその引数を指定した tool_use ブロックで応答します。
response = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
tools=tools,
# 各ターンでのツール呼び出しは最大 1 回までにするよう求めます。
tool_choice={"type": "auto", "disable_parallel_tool_use": True},
messages=messages,
)
tool_use = next(block for block in response.content if block.type == "tool_use")
print(f"Claude called {tool_use.name} with {json.dumps(tool_use.input)}")
# ツールを実行し、その結果を tool_result ブロックで返します。
weather = "15 degrees Celsius, partly cloudy" # your weather lookup goes here
messages += [
{"role": "assistant", "content": response.content},
{
"role": "user",
"content": [
{"type": "tool_result", "tool_use_id": tool_use.id, "content": weather}
],
},
]
followup = client.messages.create(
model="claude-opus-5-5",
max_tokens=1024,
tools=tools,
tool_choice={"type": "auto", "disable_parallel_tool_use": True},
messages=messages,
)
# Claude はその結果を使って元の質問に回答します。
final_text = next(block for block in followup.content if block.type == "text")
print(final_text.text)Claude called get_weather with {"location": "San Francisco, CA"}
The current weather in San Francisco is 15 degrees Celsius with partly cloudy skies.ツール呼び出しの処理では、結果のフォーマットやエラーの通知を含む各ステップを詳しく説明しています。並列ツール使用では、複数のツールを一度に呼び出すレスポンスについて説明しています。この往復処理を自分で書く手間を省くには、ツールランナーを使用してください。SDKがツールを実行し、結果を自動的に返送します。
エージェントループや各アプローチをいつ選択すべきかを含む完全な概念モデルについては、ツール使用の仕組みを参照してください。
「Model Context Protocol」、すなわちMCPのサーバーに接続するには、MCPコネクターを参照してください。独自のMCPクライアントを構築するには、Model Context ProtocolガイドのMCPクライアントの構築を参照してください。
Claudeがツールを使用するタイミング
デフォルトのtool_choiceである{"type": "auto"}では、Claudeは各ターンでツールを呼び出すか直接応答するかを判断します。リクエストがそのツールの説明された機能に対応し、かつ回答がまだコンテキスト内にない場合にツールを呼び出します。安定した知識、創造的なタスク、会話的なターンに対しては直接応答します。
この境界はシステムプロンプトを通じて調整可能です。期待したときにClaudeがツールを呼び出さない場合、"Use the tools to investigate before responding."のような軽い指示でツール使用が増加します。"Always call a tool first before responding."のようなより強い形式はさらに後押しします。逆に、"Use your judgment about whether to call a tool or respond directly."はトリガー動作を控えめに保ちます。
プロンプトに頼るのではなくツール呼び出しを必須にするには、tool_choiceを設定してください。
各サーバーツールのページでは、それぞれのトリガー境界についてより詳しく説明しています。
ユーザーのプロンプトにツールのすべての必須パラメータを埋めるのに十分な情報が含まれていない場合、Claude Opusはパラメータが不足していることを認識してそれを尋ねる可能性がはるかに高くなります。Claude Sonnetは、特にツールリクエストを出力する前に考えるよう促された場合には尋ねるかもしれません。しかし、妥当な値を推測することもあります。
例えば、locationパラメータを必要とするget_weatherツールがある場合、場所を指定せずにClaudeに「天気はどうですか?」と尋ねると、Claude(特にClaude Sonnet)はあなたが提供しなかった値を推測するかもしれません。
{
"type": "tool_use",
"id": "toolu_01A09q90qw90lq917835lq9",
"name": "get_weather",
"input": { "location": "New York, NY", "unit": "fahrenheit" }
}この動作は保証されておらず、特により曖昧なプロンプトや能力の低いモデルではなおさらです。
ツールを選択する
type文字列、バージョン、ベータヘッダーについては、ツールリファレンスを参照してください。
独自のツール
あなたが定義するツールでは、スキーマを記述し、アプリケーションが各呼び出しを実行します。
ツールスキーマを指定し、説明を書き、Claudeがいつツールを呼び出すかを制御します。
tool_useブロックを解析し、tool_resultレスポンスをフォーマットし、エラーを処理します。
Anthropicスキーマのクライアントツール
Anthropicがスキーマを公開し、Claudeをそのスキーマで訓練しています。各呼び出しの実行とtool_resultの返送は引き続きあなたのアプリケーションが行います。
あなたが管理するファイルに、会話をまたいで情報を保存および取得します。
状態を維持する永続的なセッションでシェルコマンドを実行します。
テキストファイルを表示および変更して、コードをデバッグ、修正、改善します。
デスクトップ環境でスクリーンショットを撮り、マウスとキーボードを操作します。
独自のブラウザ環境でWebページをナビゲート、閲覧、操作します。
サーバーツール
サーバーツールはAnthropicのインフラストラクチャ上で実行され、あなたのアプリケーションにハンドラーコードは不要です。それらが共有する仕組みについては、サーバーツールを参照してください。
知識のカットオフ以降の情報を、引用元付きでWeb検索します。
指定したWebページやPDFドキュメントの全内容を取得します。
サンドボックス化されたコンテナでPythonやBashのコードを実行し、データを分析してファイルを生成します。
より高速な実行モデルが、生成の途中でより高い知能を持つアドバイザーモデルに相談できるようにします。
オンデマンドでツールを発見して読み込むことで、数千のツールを扱います。
別途MCPクライアントを用意せずに、Messages APIからリモートMCPサーバーに接続します。
料金
「tool use」(ツール使用)リクエストの料金は、以下に基づいて決まります。
- モデルに送信される入力トークンの総数(
toolsパラメータ内のものを含む)。 - 生成される出力トークンの数。
- サーバーサイドツールの場合、追加の使用量ベースの料金(例えば、ウェブ検索は実行された検索ごとに課金されます)。
クライアントサイドツールは他の Claude API リクエストと同じ料金体系ですが、サーバーサイドツールはその具体的な使用状況に応じて追加料金が発生する場合があります。
ツール使用による追加トークンは、以下から発生します。
- API リクエスト内の
toolsパラメータ(ツール名、説明、スキーマ) - API リクエストおよびレスポンス内の
tool_useコンテンツブロック - API リクエスト内の
tool_resultコンテンツブロック
tools を使用すると、API はツール使用を有効にするための特別な「system prompt」(システムプロンプト)もモデルに自動的に含めます。各モデルに必要なツール使用トークン数は、以下の表に記載されています(前述の追加トークンは除きます)。この表は、少なくとも1つのツールを提供することを前提としています。tools を提供しない場合、ツール選択が none のときは追加のシステムプロンプトトークンは0になります。
| モデル | ツール使用時のシステムプロンプトトークン | |
|---|---|---|
| 名前 | トークン数 | |
Claude Opus 5.5For long-running agentic coding and knowledge work | auto, none | 286 トークン |
Claude Sonnet 5.5The best combination of speed and intelligence | auto, none | 286 トークン |
Claude Haiku 5.5For high-volume, latency-sensitive tasks such as classification, extraction, and routing | auto, none | 286 トークン |
any, tool | 406 トークン | |
auto, none | 286 トークン | |
any, tool | 406 トークン | |
auto, none | 290 トークン | |
any, tool | 410 トークン | |
auto, none | 675 トークン | |
any, tool | 804 トークン | |
auto, none | 497 トークン | |
any, tool | 589 トークン | |
auto, none | 496 トークン | |
any, tool | 588 トークン | |
Claude Opus 4.1 | auto, none | 313 トークン |
any, tool | 315 トークン | |
Claude Opus 4 | auto, none | 313 トークン |
any, tool | 315 トークン | |
auto, none | 354 トークン | |
any, tool | 474 トークン | |
auto, none | 497 トークン | |
any, tool | 589 トークン | |
auto, none | 496 トークン | |
any, tool | 588 トークン | |
Claude Sonnet 4 | auto, none | 313 トークン |
any, tool | 315 トークン | |
auto, none | 496 トークン | |
any, tool | 588 トークン | |
これらのトークン数は通常の入力トークンおよび出力トークンに加算され、リクエストの総コストが計算されます。
現在のモデルごとの価格については、モデル概要の表を参照してください。
ツール使用プロンプトを送信すると、他のAPIリクエストと同様に、レスポンスには報告されるusageメトリクスに入力トークン数と出力トークン数の両方が含まれます。
一部のサーバーツールでは、トークンに加えて使用量ベースの料金が発生します。料金については、Web検索ツールの使用量と料金およびコード実行ツールの使用量と料金を参照してください。
次のステップ
ツール使用のループ、ツールが実行される場所、そして文章の代わりにツールを使用すべきタイミングを理解します。
単一のツール呼び出しから本番環境対応のエージェントループまでのガイド付きウォークスルーです。
Anthropicが提供するツールの一覧と、オプションのツール定義プロパティのリファレンスです。
このページは役に立ちましたか?