Claude Platform Docs
Messagesツール

ツール呼び出しの処理

tool_use ブロックの解析、tool_result レスポンスのフォーマット、is_error によるエラー処理について説明します。

このページでは、ツール呼び出しのライフサイクルについて説明します。Claudeのレスポンスから tool_use ブロックを読み取り、返信で tool_result ブロックをフォーマットし、エラーを通知する方法です。これを自動的に処理するSDKの抽象化については、Tool Runnerを参照してください。

Claudeのレスポンスは、クライアントツールとサーバーツールのどちらを使用するかによって異なります。

クライアントツールからの結果の処理

レスポンスの stop_reason は tool_use となり、以下を含む1つ以上の tool_use コンテンツブロックが含まれます。

  • id:この特定のツール使用ブロックの一意の識別子。後でツール結果と照合するために使用されます。
  • name:使用されるツールの名前。
  • input:ツールに渡される入力を含むオブジェクト。ツールの input_schema に準拠します。

computer useまたはbrowser useツールセットのメンバーに対する tool_use ブロックには、toolset_name フィールド("computer" または "browser")も含まれます。その name は、screenshot や navigate など、Claudeが呼び出しているメンバーツールであるため、これらのブロックは両方のフィールドに基づいてディスパッチしてください。

クライアントツールに対するツール使用レスポンスを受け取ったら、次のようにします。

  1. tool_use ブロックから name、id、input を抽出します。
  2. そのツール名に対応するコードベース内の実際のツールを、ツールの input を渡して実行します。
  3. role が user で、tool_result タイプと以下の情報を含む content ブロックを持つ新しいメッセージを送信して、会話を続けます。
    • tool_use_id:この結果が対応するツール使用リクエストの id。
    • content(オプション):ツールの結果。文字列(例:"content": "15 degrees")、ネストされたコンテンツブロックのリスト(例:"content": [{"type": "text", "text": "15 degrees"}])、またはドキュメントブロックのリスト(例:"content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}])として指定します。これらのコンテンツブロックでは、text、image、document、または search_result タイプを使用できます。
    • is_error(オプション):ツールの実行がエラーになった場合は true に設定します。

computer useまたはbrowser useのメンバーブロックに応答する tool_result は、tool_use ブロックと同じ toolset_name の値もそのまま返す必要があります。これを省略したメンバー結果は拒否されます。また、その content はより限定されています。メンバー結果には text ブロックと image ブロックのみを含めることができ、browser useの結果には1つの browser_state ブロックを追加できます(タブ管理メンバーはそのブロックのみを返します)。

ツール結果を受け取った後、Claudeはその情報を使用して、元のユーザープロンプトに対するレスポンスの生成を続けます。

サーバーツールからの結果の処理

Claudeはツールを内部で実行し、追加のユーザー操作を必要とせずに結果をレスポンスに直接組み込みます。

is_error によるエラー処理

Claudeでツールを使用する際に発生する可能性のあるエラーには、いくつかの種類があります。

次のステップ

Claudeが1回のターンで複数のツールを呼び出すレスポンスを処理します。

tool_use ループ、結果のフォーマット、再試行をSDKに任せます。

Claudeを適切なツールへ導くスキーマと説明を記述します。

Was this page helpful?