Loading...
    • 開発者ガイド
    • API リファレンス
    • MCP
    • リソース
    • リリースノート
    Search...
    ⌘K
    はじめに
    Claude の紹介クイックスタート
    モデルと料金
    モデル概要モデルの選び方Claude 4.6 の新機能移行ガイドモデルの廃止料金
    Claude で構築する
    機能概要Messages API の使用停止理由の処理プロンプトのベストプラクティス
    コンテキスト管理
    コンテキストウィンドウコンパクションコンテキスト編集
    機能
    プロンプトキャッシング拡張思考適応型思考エフォートメッセージのストリーミングバッチ処理引用多言語サポートトークンカウントエンベディングビジョンPDF サポートFiles API検索結果構造化出力
    ツール
    概要ツール使用の実装方法きめ細かいツールストリーミングBash ツールコード実行ツールプログラムによるツール呼び出しコンピュータ使用ツールテキストエディタツールWeb フェッチツールWeb 検索ツールメモリツールツール検索ツール
    Agent Skills
    概要クイックスタートベストプラクティスエンタープライズ向け SkillsAPI での Skills の使用
    Agent SDK
    概要クイックスタートTypeScript SDKTypeScript V2(プレビュー)Python SDK移行ガイド
    API での MCP
    MCP コネクタリモート MCP サーバー
    サードパーティプラットフォームの Claude
    Amazon BedrockMicrosoft FoundryVertex AI
    プロンプトエンジニアリング
    概要プロンプトジェネレータープロンプトテンプレートの使用プロンプト改善ツール明確かつ直接的に例を使う(マルチショットプロンプティング)Claude に考えさせる(CoT)XML タグを使うClaude に役割を与える(システムプロンプト)複雑なプロンプトを連鎖させる長文コンテキストのヒント拡張思考のヒント
    テストと評価
    成功基準の定義テストケースの開発評価ツールの使用レイテンシの削減
    ガードレールの強化
    ハルシネーションの削減出力の一貫性を高めるジェイルブレイクの軽減ストリーミング拒否プロンプト漏洩の防止Claude をキャラクターに保つ
    管理とモニタリング
    Admin API 概要データレジデンシーワークスペースUsage and Cost APIClaude Code Analytics APIゼロデータリテンション
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

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

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • 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
    • Catalog
    • 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
    機能

    拡張思考を使った構築

    拡張思考を使ったClaudeの構築方法について学びます。

    拡張思考は、Claudeに複雑なタスクに対する強化された推論能力を提供し、最終的な回答を提供する前のステップバイステップの思考プロセスに対してさまざまなレベルの透明性を提供します。

    Claude Opus 4.6では、このページで説明されている手動思考モードの代わりに、アダプティブ思考(thinking: {type: "adaptive"})とeffortパラメータの使用を推奨します。手動のthinking: {type: "enabled", budget_tokens: N}設定はOpus 4.6では非推奨であり、将来のモデルリリースで削除される予定です。

    サポートされているモデル

    拡張思考は以下のモデルでサポートされています:

    • Claude Opus 4.6(claude-opus-4-6)— アダプティブ思考を推奨;手動モード(type: "enabled")は非推奨
    • Claude Opus 4.5(claude-opus-4-5-20251101)
    • Claude Opus 4.1(claude-opus-4-1-20250805)
    • Claude Opus 4(claude-opus-4-20250514)
    • Claude Sonnet 4.5(claude-sonnet-4-5-20250929)
    • Claude Sonnet 4(claude-sonnet-4-20250514)
    • Claude Sonnet 3.7(claude-3-7-sonnet-20250219)(非推奨)
    • Claude Haiku 4.5(claude-haiku-4-5-20251001)

    APIの動作はClaude Sonnet 3.7とClaude 4モデル間で異なりますが、APIの形状はまったく同じです。

    詳細については、モデルバージョン間の思考の違いを参照してください。

    拡張思考の仕組み

    拡張思考がオンになると、Claudeは内部推論を出力するthinkingコンテンツブロックを作成します。Claudeはこの推論からの洞察を取り入れてから最終的な応答を作成します。

    APIレスポンスにはthinkingコンテンツブロックが含まれ、その後にtextコンテンツブロックが続きます。

    デフォルトのレスポンス形式の例を以下に示します:

    {
      "content": [
        {
          "type": "thinking",
          "thinking": "Let me analyze this step by step...",
          "signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
        },
        {
          "type": "text",
          "text": "Based on my analysis..."
        }
      ]
    }

    拡張思考のレスポンス形式の詳細については、Messages APIリファレンスを参照してください。

    拡張思考の使い方

    Messages APIで拡張思考を使用する例を以下に示します:

    curl https://api.anthropic.com/v1/messages \
         --header "x-api-key: $ANTHROPIC_API_KEY" \
         --header "anthropic-version: 2023-06-01" \
         --header "content-type: application/json" \
         --data \
    '{
        "model": "claude-sonnet-4-5",
        "max_tokens": 16000,
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10000
        },
        "messages": [
            {
                "role": "user",
                "content": "Are there an infinite number of prime numbers such that n mod 4 == 3?"
            }
        ]
    }'

    拡張思考をオンにするには、thinkingオブジェクトを追加し、typeパラメータをenabledに設定し、budget_tokensを拡張思考用の指定トークン予算に設定します。Claude Opus 4.6では、代わりにtype: "adaptive"の使用を推奨します — 詳細はアダプティブ思考を参照してください。type: "enabled"とbudget_tokensはOpus 4.6でまだサポートされていますが、非推奨であり将来のリリースで削除される予定です。

    budget_tokensパラメータは、Claudeが内部推論プロセスに使用できるトークンの最大数を決定します。Claude 4以降のモデルでは、この制限は完全な思考トークンに適用され、要約された出力には適用されません。より大きな予算は、複雑な問題に対するより徹底的な分析を可能にすることで応答品質を向上させることができますが、特に32kを超える範囲では、Claudeが割り当てられた予算全体を使用しない場合があります。

    budget_tokensはClaude Opus 4.6では非推奨であり、将来のモデルリリースで削除される予定です。代わりにアダプティブ思考とeffortパラメータを使用して思考の深さを制御することを推奨します。

    Claude Opus 4.6は最大128K出力トークンをサポートしています。以前のモデルは最大64K出力トークンをサポートしています。

    budget_tokensはmax_tokensより小さい値に設定する必要があります。ただし、ツールとのインターリーブ思考を使用する場合、トークン制限がコンテキストウィンドウ全体(200kトークン)になるため、この制限を超えることができます。

    要約された思考

    With extended thinking enabled, the Messages API for Claude 4 models returns a summary of Claude's full thinking process. Summarized thinking provides the full intelligence benefits of extended thinking, while preventing misuse.

    Here are some important considerations for summarized thinking:

    • You're charged for the full thinking tokens generated by the original request, not the summary tokens.
    • The billed output token count will not match the count of tokens you see in the response.
    • The first few lines of thinking output are more verbose, providing detailed reasoning that's particularly helpful for prompt engineering purposes.
    • As Anthropic seeks to improve the extended thinking feature, summarization behavior is subject to change.
    • Summarization preserves the key ideas of Claude's thinking process with minimal added latency, enabling a streamable user experience and easy migration from Claude Sonnet 3.7 to Claude 4 and later models.
    • Summarization is processed by a different model than the one you target in your requests. The thinking model does not see the summarized output.

    Claude Sonnet 3.7 continues to return full thinking output.

    In rare cases where you need access to full thinking output for Claude 4 models, contact our sales team.

    ストリーミング思考

    サーバー送信イベント(SSE)を使用して拡張思考レスポンスをストリーミングできます。

    拡張思考でストリーミングが有効になっている場合、thinking_deltaイベントを通じて思考コンテンツを受信します。

    Messages APIを介したストリーミングの詳細なドキュメントについては、ストリーミングメッセージを参照してください。

    思考を含むストリーミングの処理方法を以下に示します:

    curl https://api.anthropic.com/v1/messages \
         --header "x-api-key: $ANTHROPIC_API_KEY" \
         --header "anthropic-version: 2023-06-01" \
         --header "content-type: application/json" \
         --data \
    '{
        "model": "claude-sonnet-4-5",
        "max_tokens": 16000,
        "stream": true,
        "thinking": {
            "type": "enabled",
            "budget_tokens": 10000
        },
        "messages": [
            {
                "role": "user",
                "content": "What is the greatest common divisor of 1071 and 462?"
            }
        ]
    }'

    Try in Console

    ストリーミング出力の例:

    event: message_start
    data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-5", "stop_reason": null, "stop_sequence": null}}
    
    event: content_block_start
    data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": ""}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "I need to find the GCD of 1071 and 462 using the Euclidean algorithm.\n\n1071 = 2 × 462 + 147"}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n462 = 3 × 147 + 21\n147 = 7 × 21 + 0\n\nSo GCD(1071, 462) = 21"}}
    
    // Additional thinking deltas...
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}
    
    event: content_block_stop
    data: {"type": "content_block_stop", "index": 0}
    
    event: content_block_start
    data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}}
    
    event: content_block_delta
    data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "The greatest common divisor of 1071 and 462 is **21**."}}
    
    // Additional text deltas...
    
    event: content_block_stop
    data: {"type": "content_block_stop", "index": 1}
    
    event: message_delta
    data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}}
    
    event: message_stop
    data: {"type": "message_stop"}

    思考を有効にしたストリーミングを使用する場合、テキストが大きなチャンクで到着し、小さなトークン単位の配信と交互になることがあります。これは特に思考コンテンツで予想される動作です。

    ストリーミングシステムは最適なパフォーマンスのためにコンテンツをバッチで処理する必要があり、ストリーミングイベント間に遅延が生じる可能性のある「チャンキー」な配信パターンになることがあります。この体験の改善に継続的に取り組んでおり、将来のアップデートでは思考コンテンツがよりスムーズにストリーミングされることに焦点を当てています。

    ツール使用との拡張思考

    拡張思考はツール使用と併用でき、Claudeがツールの選択と結果の処理を推論できるようになります。

    拡張思考をツール使用と併用する場合、以下の制限に注意してください:

    1. ツール選択の制限: 思考を伴うツール使用はtool_choice: {"type": "auto"}(デフォルト)またはtool_choice: {"type": "none"}のみをサポートします。tool_choice: {"type": "any"}またはtool_choice: {"type": "tool", "name": "..."}を使用するとエラーが発生します。これらのオプションはツール使用を強制するため、拡張思考と互換性がありません。

    2. 思考ブロックの保持: ツール使用中は、最後のアシスタントメッセージのthinkingブロックをAPIに渡す必要があります。推論の継続性を維持するために、完全な未変更のブロックをAPIに含めてください。

    会話中の思考モードの切り替え

    ツール使用ループ中を含め、アシスタントターンの途中で思考を切り替えることはできません。アシスタントターン全体が単一の思考モードで動作する必要があります:

    • 思考が有効な場合、最後のアシスタントターンは思考ブロックで始まる必要があります。
    • 思考が無効な場合、最後のアシスタントターンには思考ブロックが含まれてはいけません。

    モデルの観点から、ツール使用ループはアシスタントターンの一部です。アシスタントターンは、Claudeが完全な応答を完了するまで完了しません。これには複数のツール呼び出しと結果が含まれる場合があります。

    例えば、以下のシーケンスはすべて単一のアシスタントターンの一部です:

    User: "What's the weather in Paris?"
    Assistant: [thinking] + [tool_use: get_weather]
    User: [tool_result: "20°C, sunny"]
    Assistant: [text: "The weather in Paris is 20°C and sunny"]

    複数のAPIメッセージがありますが、ツール使用ループは概念的には1つの連続したアシスタント応答の一部です。

    思考のグレースフルデグラデーション

    ターン途中の思考の競合が発生した場合(ツール使用ループ中に思考のオン/オフを切り替えるなど)、APIはそのリクエストの思考を自動的に無効にします。モデルの品質を維持し、分布内に留まるために、APIは以下を行う場合があります:

    • 無効なターン構造を作成する場合、会話から思考ブロックを削除する
    • 会話履歴が思考の有効化と互換性がない場合、現在のリクエストの思考を無効にする

    これは、ターン途中で思考を切り替えようとしてもエラーは発生しませんが、そのリクエストでは思考がサイレントに無効化されることを意味します。思考がアクティブだったかどうかを確認するには、レスポンスにthinkingブロックが存在するかどうかを確認してください。

    実践的なガイダンス

    ベストプラクティス: ターン途中で切り替えようとするのではなく、各ターンの開始時に思考戦略を計画してください。

    例: ターン完了後の思考の切り替え

    User: "What's the weather?"
    Assistant: [tool_use] (thinking disabled)
    User: [tool_result]
    Assistant: [text: "It's sunny"]
    User: "What about tomorrow?"
    Assistant: [thinking] + [text: "..."] (thinking enabled - new turn)

    思考を切り替える前にアシスタントターンを完了することで、新しいリクエストで思考が実際に有効になることを確認できます。

    思考モードの切り替えは、メッセージ履歴のプロンプトキャッシュも無効にします。詳細については、プロンプトキャッシュとの拡張思考セクションを参照してください。

    思考ブロックの保持

    ツール使用中は、thinkingブロックをAPIに渡す必要があり、完全な未変更のブロックをAPIに含める必要があります。これはモデルの推論フローと会話の整合性を維持するために重要です。

    以前のassistantロールのターンからthinkingブロックを省略することはできますが、マルチターン会話では常にすべての思考ブロックをAPIに渡すことをお勧めします。APIは以下を行います:

    • 提供された思考ブロックを自動的にフィルタリングする
    • モデルの推論を保持するために必要な関連する思考ブロックを使用する
    • Claudeに表示されるブロックの入力トークンのみを課金する

    会話中に思考モードを切り替える場合、ツール使用ループを含むアシスタントターン全体が単一の思考モードで動作する必要があることを覚えておいてください。詳細については、会話中の思考モードの切り替えを参照してください。

    Claudeがツールを呼び出す際、外部情報を待つために応答の構築を一時停止しています。ツール結果が返されると、Claudeはその既存の応答の構築を続けます。これにより、ツール使用中に思考ブロックを保持する必要があります。理由はいくつかあります:

    1. 推論の継続性: 思考ブロックは、ツールリクエストに至ったClaudeのステップバイステップの推論をキャプチャします。ツール結果を投稿する際に、元の思考を含めることで、Claudeが中断したところから推論を続けることができます。

    2. コンテキストの維持: ツール結果はAPI構造ではユーザーメッセージとして表示されますが、連続した推論フローの一部です。思考ブロックを保持することで、複数のAPI呼び出しにわたってこの概念的なフローが維持されます。コンテキスト管理の詳細については、コンテキストウィンドウに関するガイドを参照してください。

    重要: thinkingブロックを提供する場合、連続するthinkingブロックのシーケンス全体が、元のリクエスト中にモデルが生成した出力と一致する必要があります。これらのブロックのシーケンスを並べ替えたり変更したりすることはできません。

    インターリーブ思考

    Claude 4モデルでのツール使用を伴う拡張思考はインターリーブ思考をサポートしており、Claudeがツール呼び出し間で思考し、ツール結果を受信した後により洗練された推論を行うことができます。

    インターリーブ思考により、Claudeは以下が可能になります:

    • ツール呼び出しの結果について推論してから次のアクションを決定する
    • 間に推論ステップを挟んで複数のツール呼び出しを連鎖させる
    • 中間結果に基づいてより微妙な判断を下す

    Claude Opus 4.6では、アダプティブ思考を使用する際にインターリーブ思考が自動的に有効になります — ベータヘッダーは不要です。

    Claude 4モデルでは、APIリクエストにベータヘッダー interleaved-thinking-2025-05-14を追加してインターリーブ思考を有効にします。

    インターリーブ思考に関する重要な考慮事項を以下に示します:

    • インターリーブ思考では、budget_tokensはmax_tokensパラメータを超えることができます。これは1つのアシスタントターン内のすべての思考ブロックにわたる合計予算を表すためです。
    • インターリーブ思考はMessages APIを介して使用されるツールでのみサポートされています。
    • Claude 4モデルでは、インターリーブ思考にはベータヘッダーinterleaved-thinking-2025-05-14が必要です。
    • Claude APIへの直接呼び出しでは、任意のモデルへのリクエストでinterleaved-thinking-2025-05-14を渡すことができますが、効果はありません。
    • サードパーティプラットフォーム(例:Amazon BedrockやVertex AI)では、Claude Opus 4.6、Claude Opus 4.5、Claude Opus 4.1、Opus 4、またはSonnet 4以外のモデルにinterleaved-thinking-2025-05-14を渡すと、リクエストは失敗します。

    プロンプトキャッシュとの拡張思考

    プロンプトキャッシュと思考にはいくつかの重要な考慮事項があります:

    拡張思考タスクは完了までに5分以上かかることがよくあります。より長い思考セッションやマルチステップワークフローにわたってキャッシュヒットを維持するために、1時間のキャッシュ期間の使用を検討してください。

    思考ブロックのコンテキスト削除

    • 以前のターンの思考ブロックはコンテキストから削除され、キャッシュブレークポイントに影響を与える可能性があります
    • ツール使用で会話を続ける場合、思考ブロックはキャッシュされ、キャッシュから読み取られる際に入力トークンとしてカウントされます
    • これにはトレードオフがあります:思考ブロックは視覚的にはコンテキストウィンドウのスペースを消費しませんが、キャッシュされた場合は入力トークンの使用量にカウントされます
    • 思考が無効になり、現在のツール使用ターンで思考コンテンツを渡した場合、思考コンテンツは削除され、そのリクエストでは思考は無効のままになります

    キャッシュ無効化パターン

    • 思考パラメータの変更(有効/無効または予算割り当て)はメッセージキャッシュブレークポイントを無効にします
    • インターリーブ思考はキャッシュ無効化を増幅します。思考ブロックが複数のツール呼び出し間で発生する可能性があるためです
    • システムプロンプトとツールは、思考パラメータの変更やブロックの削除にもかかわらずキャッシュされたままです

    思考ブロックはキャッシュとコンテキストの計算のために削除されますが、ツール使用で会話を続ける場合、特にインターリーブ思考では保持する必要があります。

    思考ブロックのキャッシュ動作の理解

    拡張思考をツール使用と組み合わせて使用する場合、思考ブロックにはトークンカウントに影響する特定のキャッシュ動作があります:

    仕組み:

    1. キャッシュはツール結果を含む後続のリクエストを行った場合にのみ発生します
    2. 後続のリクエストが行われると、以前の会話履歴(思考ブロックを含む)がキャッシュされる可能性があります
    3. これらのキャッシュされた思考ブロックは、キャッシュから読み取られる際に使用量メトリクスで入力トークンとしてカウントされます
    4. ツール結果以外のユーザーブロックが含まれると、以前のすべての思考ブロックは無視され、コンテキストから除去されます

    詳細なフロー例:

    リクエスト1:

    User: "What's the weather in Paris?"

    レスポンス1:

    [thinking_block_1] + [tool_use block 1]

    リクエスト2:

    User: ["What's the weather in Paris?"], 
    Assistant: [thinking_block_1] + [tool_use block 1], 
    User: [tool_result_1, cache=True]

    レスポンス2:

    [thinking_block_2] + [text block 2]

    リクエスト2はリクエストコンテンツ(レスポンスではなく)のキャッシュを書き込みます。キャッシュには元のユーザーメッセージ、最初の思考ブロック、ツール使用ブロック、およびツール結果が含まれます。

    リクエスト3:

    User: ["What's the weather in Paris?"],
    Assistant: [thinking_block_1] + [tool_use block 1],
    User: [tool_result_1, cache=True],
    Assistant: [thinking_block_2] + [text block 2],
    User: [Text response, cache=True]

    Claude Opus 4.5以降(Claude Opus 4.6を含む)では、以前のすべての思考ブロックがデフォルトで保持されます。古いモデルでは、ツール結果以外のユーザーブロックが含まれているため、以前のすべての思考ブロックは無視されます。このリクエストは以下と同じように処理されます:

    User: ["What's the weather in Paris?"],
    Assistant: [tool_use block 1],
    User: [tool_result_1, cache=True],
    Assistant: [text block 2],
    User: [Text response, cache=True]

    重要なポイント:

    • このキャッシュ動作は、明示的な cache_control マーカーがなくても自動的に発生します
    • この動作は、通常の思考でもインターリーブ思考でも一貫しています

    拡張思考における最大トークンとコンテキストウィンドウサイズ

    古いClaudeモデル(Claude Sonnet 3.7より前)では、プロンプトトークンと max_tokens の合計がモデルのコンテキストウィンドウを超えた場合、システムは自動的に max_tokens をコンテキスト制限内に収まるように調整していました。これは、大きな max_tokens 値を設定しても、システムが必要に応じて暗黙的に削減することを意味していました。

    Claude 3.7および4モデルでは、max_tokens(思考が有効な場合は思考バジェットを含む)は厳密な制限として適用されます。プロンプトトークン + max_tokens がコンテキストウィンドウサイズを超えた場合、システムはバリデーションエラーを返すようになりました。

    より詳細な解説については、コンテキストウィンドウに関するガイドをご覧ください。

    拡張思考におけるコンテキストウィンドウ

    思考が有効な状態でコンテキストウィンドウの使用量を計算する際、注意すべき点がいくつかあります:

    • 以前のターンの思考ブロックは除去され、コンテキストウィンドウにカウントされません
    • 現在のターンの思考は、そのターンの max_tokens 制限にカウントされます

    以下の図は、拡張思考が有効な場合の特殊なトークン管理を示しています:

    拡張思考を使用したコンテキストウィンドウの図

    有効なコンテキストウィンドウは以下のように計算されます:

    context window =
      (current input tokens - previous thinking tokens) +
      (thinking tokens + encrypted thinking tokens + text output tokens)

    特に思考を含むマルチターン会話を扱う場合は、特定のユースケースに対する正確なトークンカウントを取得するためにトークンカウントAPIの使用をお勧めします。

    拡張思考とツール使用におけるコンテキストウィンドウ

    拡張思考をツール使用と組み合わせる場合、思考ブロックは明示的に保持され、ツール結果とともに返される必要があります。

    拡張思考とツール使用における有効なコンテキストウィンドウの計算は以下のようになります:

    context window =
      (current input tokens + previous thinking tokens + tool use tokens) +
      (thinking tokens + encrypted thinking tokens + text output tokens)

    以下の図は、拡張思考とツール使用におけるトークン管理を示しています:

    拡張思考とツール使用を使用したコンテキストウィンドウの図

    拡張思考でのトークン管理

    拡張思考を使用するClaude 3.7および4モデルのコンテキストウィンドウと max_tokens の動作を考慮すると、以下が必要になる場合があります:

    • トークン使用量をより積極的に監視・管理する
    • プロンプトの長さが変わるにつれて max_tokens の値を調整する
    • トークンカウントエンドポイントをより頻繁に使用する
    • 以前の思考ブロックがコンテキストウィンドウに蓄積されないことを認識する

    この変更は、特に最大トークン制限が大幅に増加したことに伴い、より予測可能で透明性の高い動作を提供するために行われました。

    思考の暗号化

    Full thinking content is encrypted and returned in the signature field. This field is used to verify that thinking blocks were generated by Claude when passed back to the API.

    It is only strictly necessary to send back thinking blocks when using tools with extended thinking. Otherwise you can omit thinking blocks from previous turns, or let the API strip them for you if you pass them back.

    If sending back thinking blocks, we recommend passing everything back as you received it for consistency and to avoid potential issues.

    Here are some important considerations on thinking encryption:

    • When streaming responses, the signature is added via a signature_delta inside a content_block_delta event just before the content_block_stop event.
    • signature values are significantly longer in Claude 4 models than in previous models.
    • The signature field is an opaque field and should not be interpreted or parsed - it exists solely for verification purposes.
    • signature values are compatible across platforms (Claude APIs, Amazon Bedrock, and Vertex AI). Values generated on one platform will be compatible with another.

    思考の墨消し

    Occasionally Claude's internal reasoning will be flagged by our safety systems. When this occurs, we encrypt some or all of the thinking block and return it to you as a redacted_thinking block. redacted_thinking blocks are decrypted when passed back to the API, allowing Claude to continue its response without losing context.

    When building customer-facing applications that use extended thinking:

    • Be aware that redacted thinking blocks contain encrypted content that isn't human-readable
    • Consider providing a simple explanation like: "Some of Claude's internal reasoning has been automatically encrypted for safety reasons. This doesn't affect the quality of responses."
    • If showing thinking blocks to users, you can filter out redacted blocks while preserving normal thinking blocks
    • Be transparent that using extended thinking features may occasionally result in some reasoning being encrypted
    • Implement appropriate error handling to gracefully manage redacted thinking without breaking your UI

    Here's an example showing both normal and redacted thinking blocks:

    {
      "content": [
        {
          "type": "thinking",
          "thinking": "Let me analyze this step by step...",
          "signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
        },
        {
          "type": "redacted_thinking",
          "data": "EmwKAhgBEgy3va3pzix/LafPsn4aDFIT2Xlxh0L5L8rLVyIwxtE3rAFBa8cr3qpPkNRj2YfWXGmKDxH4mPnZ5sQ7vB9URj2pLmN3kF8/dW5hR7xJ0aP1oLs9yTcMnKVf2wRpEGjH9XZaBt4UvDcPrQ..."
        },
        {
          "type": "text",
          "text": "Based on my analysis..."
        }
      ]
    }

    Seeing redacted thinking blocks in your output is expected behavior. The model can still use this redacted reasoning to inform its responses while maintaining safety guardrails.

    If you need to test redacted thinking handling in your application, you can use this special test string as your prompt: ANTHROPIC_MAGIC_STRING_TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB

    When passing thinking and redacted_thinking blocks back to the API in a multi-turn conversation, you must include the complete unmodified block back to the API for the last assistant turn. This is critical for maintaining the model's reasoning flow. We suggest always passing back all thinking blocks to the API. For more details, see the Preserving thinking blocks section.

    モデルバージョン間の思考の違い

    Messages APIは、Claude Sonnet 3.7とClaude 4モデル間で思考の処理が異なり、主に墨消しと要約の動作に違いがあります。

    以下の表で簡潔な比較をご覧ください:

    機能Claude Sonnet 3.7Claude 4モデル(Opus 4.5より前)Claude Opus 4.5Claude Opus 4.6(アダプティブ思考)
    思考出力完全な思考出力を返す要約された思考を返す要約された思考を返す要約された思考を返す
    インターリーブ思考サポートなしinterleaved-thinking-2025-05-14 ベータヘッダーでサポートinterleaved-thinking-2025-05-14 ベータヘッダーでサポートアダプティブ思考で自動(ベータヘッダー不要)
    思考ブロックの保持ターン間で保持されないターン間で保持されないデフォルトで保持デフォルトで保持

    Claude Opus 4.5以降での思考ブロックの保持

    Claude Opus 4.5以降(Claude Opus 4.6を含む)では、以前のアシスタントターンの思考ブロックがデフォルトでモデルコンテキストに保持されます。これは、以前のターンの思考ブロックを削除する古いモデルとは異なります。

    思考ブロック保持の利点:

    • キャッシュの最適化:ツール使用時に、保持された思考ブロックはツール結果とともに返され、アシスタントターン全体で段階的にキャッシュされるため、キャッシュヒットが可能になり、マルチステップワークフローでのトークン節約につながります
    • 知能への影響なし:思考ブロックの保持はモデルのパフォーマンスに悪影響を与えません

    重要な考慮事項:

    • コンテキスト使用量:思考ブロックがコンテキストに保持されるため、長い会話ではより多くのコンテキストスペースを消費します
    • 自動動作:これはClaude Opus 4.5以降のモデル(Opus 4.6を含む)のデフォルト動作です—コード変更やベータヘッダーは不要です
    • 後方互換性:この機能を活用するには、ツール使用時と同様に、完全で未変更の思考ブロックをAPIに返し続けてください

    古いモデル(Claude Sonnet 4.5、Opus 4.1など)では、以前のターンの思考ブロックは引き続きコンテキストから削除されます。プロンプトキャッシュを使用した拡張思考セクションで説明されている既存の動作がこれらのモデルに適用されます。

    料金

    For complete pricing information including base rates, cache writes, cache hits, and output tokens, see the pricing page.

    The thinking process incurs charges for:

    • Tokens used during thinking (output tokens)
    • Thinking blocks from the last assistant turn included in subsequent requests (input tokens)
    • Standard text output tokens

    When extended thinking is enabled, a specialized system prompt is automatically included to support this feature.

    When using summarized thinking:

    • Input tokens: Tokens in your original request (excludes thinking tokens from previous turns)
    • Output tokens (billed): The original thinking tokens that Claude generated internally
    • Output tokens (visible): The summarized thinking tokens you see in the response
    • No charge: Tokens used to generate the summary

    The billed output token count will not match the visible token count in the response. You are billed for the full thinking process, not the summary you see.

    拡張思考のベストプラクティスと考慮事項

    思考バジェットの取り扱い

    • バジェットの最適化: 最小バジェットは1,024トークンです。最小値から始めて、ユースケースに最適な範囲を見つけるために思考バジェットを段階的に増やすことをお勧めします。トークン数が多いほどより包括的な推論が可能になりますが、タスクによっては収穫逓減が生じます。バジェットを増やすとレスポンス品質が向上しますが、レイテンシが増加するトレードオフがあります。重要なタスクでは、最適なバランスを見つけるために異なる設定をテストしてください。思考バジェットは厳密な制限ではなく目標値であることに注意してください—実際のトークン使用量はタスクに基づいて変動する場合があります。
    • 開始点: 複雑なタスクには大きな思考バジェット(16k以上のトークン)から始め、ニーズに応じて調整してください。
    • 大きなバジェット: 32kを超える思考バジェットの場合、ネットワーキングの問題を避けるためにバッチ処理の使用をお勧めします。モデルに32kトークン以上の思考を促すリクエストは、システムのタイムアウトやオープン接続制限に達する可能性のある長時間実行リクエストを引き起こします。
    • トークン使用量の追跡: コストとパフォーマンスを最適化するために思考トークンの使用量を監視してください。

    パフォーマンスに関する考慮事項

    • レスポンス時間: 推論プロセスに必要な追加処理により、レスポンス時間が長くなる可能性があることに備えてください。思考ブロックの生成が全体的なレスポンス時間を増加させる可能性があることを考慮してください。
    • ストリーミング要件: SDKは、長時間実行リクエストでのHTTPタイムアウトを避けるため、max_tokens が21,333を超える場合にストリーミングを必要とします。これはクライアント側のバリデーションであり、APIの制限ではありません。イベントを段階的に処理する必要がない場合は、.stream() と .get_final_message()(Python)または .finalMessage()(TypeScript)を使用して、個々のイベントを処理せずに完全な Message オブジェクトを取得できます—詳細はストリーミングメッセージをご覧ください。ストリーミング時は、思考コンテンツブロックとテキストコンテンツブロックの両方が到着するのを処理する準備をしてください。

    機能の互換性

    • 思考は temperature や top_k の変更、および強制ツール使用とは互換性がありません。
    • 思考が有効な場合、top_p を1から0.95の間の値に設定できます。
    • 思考が有効な場合、レスポンスの事前入力はできません。
    • 思考バジェットの変更は、メッセージを含むキャッシュされたプロンプトプレフィックスを無効化します。ただし、キャッシュされたシステムプロンプトとツール定義は、思考パラメータが変更されても引き続き機能します。

    使用ガイドライン

    • タスクの選択: 数学、コーディング、分析など、段階的な推論が有益な特に複雑なタスクに拡張思考を使用してください。
    • コンテキストの処理: 以前の思考ブロックを自分で削除する必要はありません。Claude APIは以前のターンの思考ブロックを自動的に無視し、コンテキスト使用量の計算に含めません。
    • プロンプトエンジニアリング: Claudeの思考能力を最大限に活用したい場合は、拡張思考のプロンプティングのヒントをご確認ください。

    次のステップ

    拡張思考クックブックを試す

    クックブックで思考の実践的な例を探索してください。

    拡張思考のプロンプティングのヒント

    拡張思考のプロンプトエンジニアリングのベストプラクティスを学びましょう。

    Was this page helpful?

    • Claude Opus 4.5以降での思考ブロックの保持