Claude Platform Docs
  • Messages
  • Managed Agents
  • 管理

Search...
⌘K
はじめに
Claudeの紹介クイックスタート
Claudeで構築する
機能の概要Messages APIの使用停止理由とフォールバック拒否とフォールバックフォールバッククレジット
モデルの機能
拡張思考適応型思考エフォートタスク予算(ベータ版)高速モード(リサーチプレビュー)構造化出力引用ストリーミングMessagesバッチ処理検索結果ストリーミング拒否多言語サポート埋め込み
ツール
概要ツール使用の仕組みチュートリアル:ツール使用エージェントの構築ツールの定義ツール呼び出しの処理並列ツール使用Tool Runner(SDK)厳密なツール使用サーバーツールWeb検索ツールWeb取得ツールコード実行ツールアドバイザーツールツール検索ツールメモリツールBashツールテキストエディタツールコンピュータ使用ツールトラブルシューティング
ツールインフラストラクチャ
ツールリファレンスツールコンテキストの管理ツールの組み合わせプロンプトキャッシングを使用したツール使用プログラムによるツール呼び出しきめ細かいツールストリーミング
コンテキスト管理
コンテキストウィンドウコンパクションコンテキスト編集プロンプトキャッシング会話途中のシステムメッセージオーケストレーションモードの構築キャッシュ診断(ベータ版)トークンカウント
ファイルの操作
Files APIPDFサポート
スキル
概要クイックスタートベストプラクティスエンタープライズ向けスキルAPIでのスキル
MCP
リモートMCPサーバーMCPコネクタ
クラウドプラットフォーム上のClaude
Amazon BedrockAmazon Bedrock(レガシー)AWS上のClaude PlatformGoogle CloudMicrosoft Foundry

Log in
ツール呼び出しの処理
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Messages/ツール

ツール呼び出しの処理

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

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



Tool Runnerでより簡単に:このページで説明する手動のツール処理は、Tool Runnerによって自動的に管理されます。ツール実行をカスタム制御する必要がある場合にこのページを使用してください。

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

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

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

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

クライアントツールのツール使用レスポンスを受け取った場合、以下を行う必要があります。

  1. tool_useブロックからname、id、inputを抽出します。
  2. そのツール名に対応するコードベース内の実際のツールを実行し、ツールのinputを渡します。
  3. userのroleと、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に設定します。


重要なフォーマット要件:

  • ツール結果ブロックは、メッセージ履歴内で対応するツール使用ブロックの直後に配置する必要があります。アシスタントのツール使用メッセージとユーザーのツール結果メッセージの間に他のメッセージを含めることはできません。
  • ツール結果を含むユーザーメッセージでは、tool_resultブロックがコンテンツ配列の最初に来る必要があります。テキストはすべてのツール結果の後に配置する必要があります。
  • アシスタントのターンで、まだ結果ブロックがないサーバーツールも呼び出された場合、ユーザーメッセージにはtool_resultブロックのみを含める必要があります。結果の後にテキストがあるとターンが早期に終了します。Claudeが直接呼び出したサーバーツールの場合、リクエストは未解決のサーバーツール名を示す400エラーで失敗します。停止理由とフォールバックを参照してください。

例えば、以下は400エラーを引き起こします。

{
  "role": "user",
  "content": [
    { "type": "text", "text": "Here are the results:" }, // ❌ Text before tool_result
    { "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ }
  ]
}

アシスタントのターンがクライアントツールのみを呼び出す場合、以下が正しい形式です。

{
  "role": "user",
  "content": [
    { "type": "tool_result", "tool_use_id": "toolu_01" /* ... */ },
    { "type": "text", "text": "What should I do next?" } // ✅ Text after tool_result
  ]
}

「tool_use ids were found without tool_result blocks immediately after」のようなエラーが表示された場合は、ツール結果が正しくフォーマットされているか確認してください。



ツール結果には、Webページ、受信メール、ユーザーアップロード、サードパーティAPIなど、制御外のソースからのコンテンツが含まれることがよくあります。そのコンテンツは信頼できないものとして扱ってください。それに影響を与えることができる攻撃者は、Claudeをリダイレクトしようとする指示を埋め込む可能性があります(間接的なプロンプトインジェクション)。信頼できないコンテンツは、systemプロンプトやプレーンなユーザーtextブロックではなく、tool_resultブロック内に保持してください。さらなる強化については、ジェイルブレイクとプロンプトインジェクションの軽減を参照してください。

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

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

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



レスポンスには、クライアントのtool_useブロックと、まだ結果ブロックがないserver_tool_useブロックの両方が含まれる場合があります。そのサーバーツール呼び出しはまだ完了しておらず、その結果ブロックは後のレスポンスで届きます。クライアントツールのtool_resultブロックのみを含むユーザーメッセージで返信し、同じtools配列を維持してください。Claudeが直接呼び出したサーバーツールの場合、APIはそのリクエストでツールを実行し、次のレスポンスはその結果ブロックから始まります。停止理由とフォールバックを参照してください。



他のAPIとの違い

ツール使用を分離したり、toolやfunctionのような特別なロールを使用したりするAPIとは異なり、Claude APIはツールをuserおよびassistantメッセージ構造に直接統合します。

メッセージにはtext、image、tool_use、tool_resultブロックの配列が含まれます。userメッセージにはクライアントコンテンツとtool_resultが含まれ、assistantメッセージにはAI生成コンテンツとtool_useが含まれます。

is_errorによるエラー処理

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

次のステップ

並列ツール使用

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


Tool Runner(SDK)

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

ツールの定義

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

Was this page helpful?

  • クライアントツールからの結果の処理
  • サーバーツールからの結果の処理
  • is_errorによるエラー処理
  • 次のステップ