

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 拡張思考
<a name="claude-messages-extended-thinking"></a>

拡張思考により、Claude は複雑なタスクの推論機能が向上し、最終的な回答を提供する前の段階的思考プロセスにさまざまなレベルの透明性が提供されます。Claude の思考モードを有効にするたびに、内部推論プロセスに Claude が使用できるトークンの最大数の予算を設定する必要があります。

サポートされているモデルは次のとおりです。


| モデル | モデル ID | 
| --- | --- | 
| Claude Opus 4.5 | `anthropic.claude-opus-4-5-20251101-v1:0` | 
| Claude Opus 4 | `anthropic.claude-opus-4-20250514-v1:0` | 
| Claude Sonnet 4 | `anthropic.claude-sonnet-4-20250514-v1:0` | 
| Claude Sonnet 4.5 | `anthropic.claude-sonnet-4-5-20250929-v1:0` | 
| Claude Sonnet 4.6 | `anthropic.claude-sonnet-4-6` | 
| Claude Opus 4.6 | `anthropic.claude-opus-4-6-v1` | 
| Claude Haiku 4.5 | `anthropic.claude-haiku-4-5-20251001-v1:0` | 
| Claude 3.7 Sonnet | `anthropic.claude-3-7-sonnet-20250219-v1:0` | 

**注記**  
API の動作は、Claude 3.7 モデルと Claude 4 モデルでは異なります。詳細については、「[モデルバージョン間の思考の差異](claude-messages-thinking-differences.md)」を参照してください。

**Topics**
+ [拡張思考のベストプラクティスと考慮事項](#claude-messages-extended-thinking-bps)
+ [拡張思考の仕組み](#claude-messages-how-extended-thinking-works)
+ [拡張思考の使用方法](#claude-messages-use-extended-thinking)
+ [ツール使用を伴う拡張思考](#claude-messages-extended-thinking-tool-use)
+ [思考ブロッククリア (ベータ)](#claude-messages-thinking-block-clearing)
+ [プロンプトキャッシュを伴う拡張思考](#claude-messages-extended-thinking-prompt-caching)
+ [思考ブロックキャッシング動作の理解](#claude-messages-extended-thinking-caching-behavior)
+ [拡張思考を使用したトークンとコンテキストウィンドウの最大サイズ](#claude-messages-extended-thinking-max-tokens)
+ [拡張思考トークンのコストに関する考慮事項](#claude-messages-extended-thinking-cost)

## 拡張思考のベストプラクティスと考慮事項
<a name="claude-messages-extended-thinking-bps"></a>

使用上のガイドライン
+ **タスクの選択**: 数学、コーディング、分析など、ステップバイステップの推論が役に立つ特に複雑なタスクには、拡張思考を使用します。
+ **コンテキスト処理**: 以前の思考ブロックを自分で削除する必要はありません。Anthropic API は前のターンの思考ブロックを自動的に無視し、コンテキスト使用量を計算するときには含まれません。
+ **プロンプトエンジニアリング**: Anthropic の思考能力を最大限に引き出したい場合は、[Claude の拡張思考プロンプトのヒント](https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/extended-thinking-tips)を確認します。

パフォーマンスに関する考慮事項
+ **応答時間**: 推論プロセスに必要な追加処理により、応答時間が長くなる可能性があることに備えます。思考ブロックを生成すると全体的な応答時間が長くなる可能性があることを考慮してください。
+ **ストリーミング要件**: `max_tokens` が 21,333 を超える場合、ストリーミングが必要です。ストリーミング時には、`thinking` と `text` の両方のコンテンツブロックが到着したら処理する準備をしてください。

機能の互換性
+ 思考は `temperature`、`top_p`、または `top_k` の変更や[強制ツール使用](https://docs.anthropic.com/en/docs/agents-and-tools/tool-use/implement-tool-use#forcing-tool-use)と互換性がありません。
+ 思考が有効になっている場合、レスポンスを事前に入力することはできません。
+ 思考予算を変更すると、メッセージを含むキャッシュされたプロンプトプレフィックスが無効になります。ただし、キャッシュされたシステムプロンプトとツール定義は、思考パラメータが変更されても機能し続けます。

思考予算の使用
+ **予算の最適化**: 最小予算は 1,024 トークンです。Anthropic では、最小予算から始めて、段階的に思考予算を増やし、ユースケースに最適な範囲を見つけることを推奨します。トークン数が多いほど、より包括的で微妙な推論が可能になりますが、タスクによってはリターンが低下する可能性もあります。思考予算は厳密な制限ではなくターゲットです。実際のトークン使用量はタスクによって異なる場合があります。
+ **最小および最適な設定**: 最小予算は 1,024 トークンです。最小予算から始めて、段階的に思考予算を増やし、Claude がユースケースで適切にパフォーマンスを発揮するための最適な範囲を見つけることをお勧めします。トークン数が多いほど、より包括的で微妙な推論が可能になりますが、タスクによってはリターンが低下する場合もあります。思考予算は厳密な制限ではなくターゲットです。実際のトークン使用量はタスクによって異なります。
+ **実験**: 最大思考予算設定が異なると、モデルのパフォーマンスが異なる場合があります。最大思考予算を増やすと、モデルの思考能力が向上したり思考が難しくなったりする可能性がありますが、レイテンシーが増加するというトレードオフが生じます。重要なタスクでは、品質とパフォーマンスの最適なバランスを見つけるために、さまざまな予算設定をテストすることを検討してください。
+ **大規模な予算**: 32,000 トークンを超える予算を考える場合は、ネットワークの問題を回避するためにバッチ処理を使用することをお勧めします。モデルに 32,000 トークンを超えて思考させるリクエストは、リクエストの実行時間長くなり、システムタイムアウトやオープン接続制限が発生する可能性があります。`max_tokens` 制限は Claude モデルによって異なることに注意してください。詳細については、「[拡張思考を使用したトークンとコンテキストウィンドウの最大サイズ](#claude-messages-extended-thinking-max-tokens)」を参照してください。
+ **トークン使用状況の追跡**: コストとパフォーマンスを最適化するために、思考トークンの使用状況をモニタリングします。

## 拡張思考の仕組み
<a name="claude-messages-how-extended-thinking-works"></a>

拡張思考をオンにすると、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..."
    }
  ]
}
```

拡張思考のレスポンス形式の詳細については、「Anthropic Messages API」の「[リクエストとレスポンス](model-parameters-anthropic-claude-messages-request-response.md)」を参照してください。

## 拡張思考の使用方法
<a name="claude-messages-use-extended-thinking"></a>

拡張思考を有効にするには、`thinking` パラメータを有効に設定し、拡張思考用の `budget_tokens` を指定されたトークン予算に設定して、`thinking` オブジェクトを追加します。

`budget_tokens` パラメータは、Claude が内部推論プロセスに使用できるトークンの最大数を決定します。Claude 4 モデルでは、この制限は完全な思考トークンに適用され、要約された出力には適用されません。予算が多いほど複雑な問題をより詳細に分析できるため、レスポンスの品質が向上しますが、特に 32,000 を超える範囲では、Claude は割り当てられた予算を使い切らない場合があります。

`budget_tokens` の値は、`max_tokens` より小さい値に設定する必要があります。ただし、ツールで [インターリーブ思考 (ベータ版)](#claude-messages-extended-thinking-tool-use-interleaved) を使用する場合、トークンの制限がコンテキストウィンドウ全体 (20 万トークン) になるため、この制限を超える可能性があります。

### 要約された思考
<a name="claude-messages-use-extended-thinking-summarized"></a>

拡張思考を有効にすると、Claude 4 モデルの Messages API は、Claude の完全な思考プロセスの要約を返します。要約された思考は、誤用を防ぎながら、思考拡張の完全なインテリジェンス上のメリットを提供します。

以下は、要約された思考に関する重要な考慮事項です。
+ 要約トークンではなく、元のリクエストによって生成された完全な思考トークンに対して課金されます。
+ 請求される出力トークン数は、レスポンスに表示されるトークンの数と一致しません。
+ サマライザーモデルに提供されるプロンプトは変更になる可能性があります。
+ 最初の数行の思考出力はより詳細であり、プロンプトエンジニアリングの目的に特に役立つ詳細な推論を提供します。

**注記**  
Claude 3.7 Sonnet は引き続き完全な思考出力を返します。

### ストリーミング思考
<a name="claude-messages-use-extended-thinking-streaming"></a>

サーバー送信イベント (SSE) を使用して、拡張思考レスポンスをストリーミングできます。ストリーミングが拡張思考に対して有効になっている場合、思考コンテンツは `thinking_delta` イベントを介して受信されます。ストリーミングイベントは、一定の速度で返されるとは限りません。ストリーミングイベントの間に遅延が発生する可能性があります。Messages API を介したストリーミングの詳細については、「[ストリーミングメッセージ](https://docs.anthropic.com/en/docs/build-with-claude/streaming)」を参照してください。

**InvokeModelWithResponseStream** を使用して思考でストリーミングを処理する方法は次のとおりです。

```
{
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 10000,
    "thinking": {
        "type": "enabled",
        "budget_tokens": 4000
    },
    "messages": [
        {
            "role": "user",
            "content": "What is 27 * 453?"
        }
    ]
}
```

レスポンス:

```
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-3-7-sonnet-20250219", "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": "Let me solve this step by step:\n\n1. First break down 27 * 453"}}

event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n2. 453 = 400 + 50 + 3"}}

// 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": "27 * 453 = 12,231"}}

// 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"}
```

**思考によるストリーミング動作について**  
思考を有効にしてストリーミングを使用すると、テキストが大きなチャンクで届く場合と小さなトークンごとに配信される場合が交互に繰り返されることがあります。これは、特に思考コンテンツの場合に予想される動作です。ストリーミングシステムは、最適なパフォーマンスを得るためにコンテンツをバッチ処理する必要があり、その結果としてこの配信パターンが発生する可能性があります。

## ツール使用を伴う拡張思考
<a name="claude-messages-extended-thinking-tool-use"></a>

拡張思考は Claude と併用でき、[ツール使用](model-parameters-anthropic-claude-messages-tool-use.md) はツールの選択と結果処理を通じた推論ができるようになります。ツール使用を伴う拡張思考を使用する場合は、次の制限に注意してください。
+ **ツール選択の制限**: 思考でのツールの使用は`tool_choice: auto`、 (デフォルト) または のみをサポートします`tool_choice: none`。強制ツールの使用 (`any` または特定のツールの指定) はサポートされていません。
+ **思考ブロックの保存**: ツールの使用中に、最後のアシスタントメッセージの思考ブロックを API に返す必要があります。推論の連続性を維持するために、完全な未修正ブロックを API に返します。

コンテキストウィンドウ管理とツールの連携方法を次に示します。

```
{
    "anthropic_version": "bedrock-2023-05-31",
    "max_tokens": 10000,
    "thinking": {
        "type": "enabled",
        "budget_tokens": 4000
    },
  "tools": [
  {
    "name": "get_weather",
    "description": "Get current weather for a location",
    "input_schema": {
      "type": "object",
      "properties": {
        "location": {
          "type": "string"
        }
      },
      "required": [
        "location"
      ]
    }
  }
],
    "messages": [
        {
            "role": "user",
            "content": "What's the weather in Paris?"
        }
    ]
}
```

最初のレスポンスは次のとおりです。

```
{
    "content": [
        {
            "type": "thinking",
            "thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`...",
            "signature": "BDaL4VrbR2Oj0hO4XpJxT28J5TILnCrrUXoKiiNBZW9P+nr8XSj1zuZzAl4egiCCpQNvfyUuFFJP5CncdYZEQPPmLxYsNrcs...."
        },
        {
            "type": "text",
            "text": "I can help you get the current weather information for Paris. Let me check that for you"
        },
        {
            "type": "tool_use",
            "id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
            "name": "get_weather",
            "input": {
                "location": "Paris"
            }
        }
    ]
}
```

ツール使用を伴う会話を続けると、別のレスポンスが生成されます。`tool_use_block` だけでなく `thinking_block` も渡されることに注意してください。これが渡されないと、エラーが発生します。

```
{
  "anthropic_version": "bedrock-2023-05-31",
  "max_tokens": 10000,
  "thinking": {
    "type": "enabled",
    "budget_tokens": 4000
  },
  "tools": [
    {
      "name": "get_weather",
      "description": "Get current weather for a location",
      "input_schema": {
        "type": "object",
        "properties": {
          "location": {
            "type": "string"
          }
        },
        "required": [
          "location"
        ]
      }
    }
  ],
      "messages": [
        {
          "role": "user",
          "content": "What's the weather in Paris?"
        },
        {
          "role": "assistant",
          "content": [
            {
              "type": "thinking",
              "thinking": "The user wants to know the current weather in Paris. I have access to a function `get_weather`…",
              "signature": "BDaL4VrbR2Oj0hO4XpJxT28J5TILnCrrUXoKiiNBZW9P+nr8XSj1zuZzAl4egiCCpQNvfyUuFFJP5CncdYZEQPPmLxY",
            },
            {
              "type": "tool_use",
              "id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
              "name": "get_weather",
              "input": {
                "location": "Paris"
              }
            }
          ]
        },
        {
          "role": "user",
          "content": [
            {
              "type": "tool_result",
              "tool_use_id": "toolu_01CswdEQBMshySk6Y9DFKrfq",
              "content": "Current temperature: 88°F"
            }
          ]
        }
      ]
    }
```

API レスポンスにテキストのみが含まれるようになりました。

```
{
  "content": [
    {
      "type": "text",
      "text": "Currently in Paris, the temperature is 88°F (31°C)"
    }
  ]
}
```

### 思考ブロックの保持
<a name="claude-messages-extended-thinking-tool-use-thinking-blocks"></a>

ツール使用中は、思考ブロックを API に返す必要があり、完全な未修正ブロックを API に返す必要があります。これは、モデルの推論フローと会話の整合性を維持する上で重要です。

**ヒント**  
以前の `assistant` ロールターンから `thinking` ブロックを省略することはできますが、マルチターン会話では、常にすべての思考ブロックを API に返すことをお勧めします。API は以下を実行します。  
提供された思考ブロックを自動的にフィルタリングする
モデルの推論を保持するために必要な関連する思考ブロックを使用する
Claude に表示されるブロックの入力トークンのみに対して課金する

Claude がツールを呼び出すと、外部情報を待つるためにレスポンスの構築が一時停止されます。ツールの結果が返されると、Claude はその既存のレスポンスの構築を続行します。そのためには、以下の理由により、ツール使用中に思考ブロックを保持する必要があります。
+ **推論の連続性**: 思考ブロックは、ツールリクエストにつながった Claude の段階的な推論をキャプチャします。ツール結果を投稿するときに元の思考を含めることで、Claude は中断したところから推論を続行できます。
+ **コンテキストの維持**: ツール結果は API 構造ではユーザーメッセージとして表示されますが、継続的な推論フローの一部です。思考ブロックを保持すると、複数の API コールにわたってこの概念的なフローが維持されます。

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

### インターリーブ思考 (ベータ版)
<a name="claude-messages-extended-thinking-tool-use-interleaved"></a>

**警告**  
インターリーブ思考は、 AWS サービス条件で定義されている「ベータサービス」として利用できます。本ライセンス条項には、 AWS および AWS サービス条件、および該当するモデル EULA とのお客様の契約が適用されます。

Claude 4 モデルはインターリーブ思考をサポートしています。インターリーブ思考は、Claude がツール呼び出し間で思考し、ツールの結果を受け取った後にさらに高度な推論を行えるようにする機能です。これにより、Claude が以下を実行できる、より複雑なエージェントインタラクションが可能になります。
+ ツールコールの結果について推論してから、次に何をするかを決定する
+ 推論ステップが間に入った複数のツール呼び出しをチェーンする
+ 中間結果に基づいてより微妙な意思決定を下す

インターリーブ思考を有効にするには、API リクエストにベータヘッダー `interleaved-thinking-2025-05-14` を追加します。

**注記**  
インターリーブ思考では、`budget_tokens` は `max_tokens` パラメータを超える可能性があります。これは、1 回のアシスタントターンですべての思考ブロックの合計予算を表すためです。

## 思考ブロッククリア (ベータ)
<a name="claude-messages-thinking-block-clearing"></a>

**警告**  
思考ブロッククリアは、 AWS サービス条件で定義されている「ベータサービス」として利用できます。

**注記**  
この機能は現在、Claude Sonnet 4/4.5、Claude Haiku 4.5、および Claude Opus 4/4.1/4.5 でサポートされています。

思考ブロッククリアは、Anthropic Claude モデル機能 (ベータ) です。この機能を使用すると、Claude は古い思考ブロックを以前のターンから自動的にクリアできます。思考ブロッククリアを使用するには、anthropic\_beta リクエストパラメータのベータヘッダーのリスト`context-management-2025-06-27`に を追加する必要があります。また、 の使用を指定`clear_thinking_20251015`し、次の設定オプションから選択する必要があります。

`clear_thinking_20251015` コンテキスト管理戦略で使用できるコントロールは次のとおりです。すべてにオプションまたはデフォルトがあります。


| **設定オプション** | **説明** | 
| --- | --- | 
| `keep`<br />デフォルト: 1 つの思考ターン | 保存すべき思考ブロックを持つ最近のアシスタントのターン数を定義します。最後の `{"type": "thinking_turns", "value": N}` N ターンを保持するか、すべての思考ブロック`{"type": "all"}`を保持するには、N が > 0 である必要があります。 | 

------
#### [ Request ]

```
{
      "anthropic_version": "bedrock-2023-05-31",
      "max_tokens": 10000,
      "anthropic_beta": [
        "context-management-2025-06-27"
      ],
      "thinking": {
        "type": "enabled",
        "budget_tokens": 4000
      },
      "tools": [
        {
          "name": "get_weather",
          "description": "Get current weather for a location",
          "input_schema": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string"
              }
            },
            "required": [
              "location"
            ]
          }
        }
      ],
      "messages": [
        {
          "role": "user",
          "content": "What's the weather in Paris?"
        },
        {
          "role": "assistant",
          "content": [
            {
              "type": "thinking",
              "thinking": "The user is asking for the weather in Paris. I have access to a get_weather function that takes a location as a parameter. I have all the information I need to make this call - the location is \"Paris\".\n\nLet me call the get_weather function with \"Paris\" as the location.",
              "signature": "ErgDCkgIChABGAIqQC/Ccv8GC+5VfcMEiq78XmpU2Ef2cT+96pHKMedKcRNuPz1x0kFlo5HBpW0r1NcQFVQUPuj6PDmP7jdHY7GsrUwSDKNBMogjaM7wYkwfPhoMswjlmfF09JLjZfFlIjB03NkghGOxLbr3VCQHIY0lMaV9UBvt7ZwTpJKzlz+mulBysfvAmDfcnvdJ/6CZre4qnQJsTZaiXdEgASwPIc5jOExBguerrtYSWVC/oPjSi7KZM8PfhP/SPXupyLi8hwYxeqomqkeG7AQhD+3487ecerZJcpJSOSsf0I1OaMpmQEE/b7ehnvTV/A4nLhxIjP4msyIBW+dVwHNFRFlpJLBHUJvN99b4run6YmqBSf4y9TyNMfOr+FtfxedGE0HfJMBd4FHXmUFyW5y91jAHMWqwNxDgacaKkFCAMaqce5rm0ShOxXn1uwDUAS3jeRP26Pynihq8fw5DQwlqOpo7vvXtqb5jjiCmqfOe6un5xeIdhhbzWddhEk1Vmtg7I817pM4MZjVaeQN02drPs8QgDxihnP6ZooGhd6FCBP2X3Ymdlj5zMlbVHxmSkA4wcNtg4IAYAQ=="
            },
            {
              "type": "tool_use",
              "id": "toolu_bdrk_01U7emCvL5v5z5GT7PDr2vzc",
              "name": "get_weather",
              "input": {
                "location": "Paris"
              }
            }
          ]
        },
        {
          "role": "user",
          "content": [
            {
              "type": "tool_result",
              "tool_use_id": "toolu_bdrk_01U7emCvL5v5z5GT7PDr2vzc",
              "content": "Current temperature: 88°F"
            }
          ]
        }
      ],
      "context_management": {
        "edits": [
          {
            "type": "clear_thinking_20251015",
            "keep": {
              "type": "thinking_turns",
              "value": 1
            }
          }
        ]
      }
    }
```

------
#### [ Response ]

```
{
      "model": "claude-haiku-4-5-20251001",
      "id": "msg_bdrk_01KyTbyFbdG2kzPwWMJY1kum",
      "type": "message",
      "role": "assistant",
      "content": [
        {
          "type": "text",
          "text": "The current weather in Paris is **88°F** (approximately 31°C). It's quite warm! If you need more detailed information like humidity, wind conditions, or a forecast, please let me know."
        }
      ],
      "stop_reason": "end_turn",
      "stop_sequence": null,
      "usage": {
        "input_tokens": 736,
        "cache_creation_input_tokens": 0,
        "cache_read_input_tokens": 0,
        "cache_creation": {
          "ephemeral_5m_input_tokens": 0,
          "ephemeral_1h_input_tokens": 0
        },
        "output_tokens": 47
      },
      "context_management": {
        "applied_edits": [...]
      }
    }
```

------

## プロンプトキャッシュを伴う拡張思考
<a name="claude-messages-extended-thinking-prompt-caching"></a>

[プロンプトキャッシュ](https://docs.aws.amazon.com/bedrock/latest/userguide/prompt-caching.html)と思考には、いくつかの重要な考慮事項があります。

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

**キャッシュ無効化パターン**
+ 思考パラメータの変更 (予算割り当ての有効化、無効化、変更など) は、メッセージキャッシュブレークポイントを無効にします。
+ [インターリーブ思考 (ベータ版)](#claude-messages-extended-thinking-tool-use-interleaved) はキャッシュの無効化を増幅します。思考ブロックは複数のツールコール間で発生する可能性があるためです。
+ システムプロンプトとツールは、思考パラメータの変更またはブロック削除にもかかわらずキャッシュされたままになります。

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

## 思考ブロックキャッシング動作の理解
<a name="claude-messages-extended-thinking-caching-behavior"></a>

ツール使用を伴う拡張思考を使用する場合、思考ブロックはトークンカウントに影響する特定のキャッシング動作を示します。次のシーケンスは、この仕組みを示しています。

1. キャッシングは、ツール結果を含む後続のリクエストを行った場合にのみ発生します。

1. 後続のリクエストが行われると、以前の会話履歴 (思考ブロックを含む) をキャッシュできます。

1. これらのキャッシュされた思考ブロックは、キャッシュから読み取られるときに使用状況メトリクスの入力トークンとしてカウントされます。

1. 非ツール結果ユーザーブロックが含まれている場合、以前の思考ブロックはすべて無視され、コンテキストから削除されます。

詳細なフローの例を次に示します。

リクエスト 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]
```

非ツール結果ユーザーブロックが含まれていたため、以前の思考ブロックはすべて無視されます。このリクエストは、次のリクエストと同じように処理されます。

リクエスト 3 代替:

```
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]
```

この動作は、通常の思考でもインターリーブ思考でも一貫しています。

## 拡張思考を使用したトークンとコンテキストウィンドウの最大サイズ
<a name="claude-messages-extended-thinking-max-tokens"></a>

古いClaudeモデル ( より前Claude 3.7 Sonnet) では、プロンプトトークンと max\_tokens の合計がモデルのコンテキストウィンドウを超えた場合、システムはコンテキスト制限内に収まるように max\_tokens を自動的に調整します。これは、大きな max\_tokens 値を設定でき、システムが必要に応じてそれをそのまま減らすことを意味します。Claude 3.7 および 4 モデルでは、`max_tokens` (思考が有効になっている場合の思考予算を含む) では、厳密な制限として適用されます。プロンプトトークン \+ max\_tokens がコンテキストウィンドウサイズを超えた場合、システムは検証エラーを返すようになりました。

### 拡張思考を使用したコンテキストウィンドウ
<a name="claude-messages-extended-thinking-max-tokens-calculate"></a>

思考を有効にしてコンテキストウィンドウの使用量を計算する場合、注意すべきいくつかの考慮事項があります。
+ 前のターンからの思考ブロックは削除され、コンテキストウィンドウにはカウントされません。
+ 現在のターンの思考は、そのターンの `max_tokens` 制限にカウントされます。

有効なコンテキストウィンドウは、コンテキストウィンドウ = (現在の入力トークン - 以前の思考トークン) \+ (思考トークン \+ 暗号化された思考トークン \+ テキスト出力トークン) として計算されます。

### ツール使用を伴う拡張思考トークンの管理
<a name="claude-messages-extended-thinking-max-tokens-manage-tool"></a>

ツール使用を伴う拡張思考を使用する場合は、思考ブロックを明示的に保持し、ツール結果とともに返す必要があります。ツール使用を伴う拡張思考の有効なコンテキストウィンドウの計算は次のようになります。

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

### 拡張思考を使用したトークン管理
<a name="claude-messages-extended-thinking-max-tokens-manage"></a>

Claude 3.7 および 4 (拡張思考) モデルのコンテキストウィンドウと `max_tokens` 動作を考えると、次のいずれかのアクションを実行する必要がある場合があります。
+ トークン使用量をより積極的にモニタリングおよび管理する。
+ プロンプトの長さの変更に応じて `max_tokens` 値を調整する。
+ 以前の思考ブロックはコンテキストウィンドウに蓄積されないことに注意する。この変更は、特にトークンの最大制限が大幅に増加したため、より予測可能で透過的な動作を提供するために行われました。

## 拡張思考トークンのコストに関する考慮事項
<a name="claude-messages-extended-thinking-cost"></a>

思考プロセスには、以下の料金が発生します。
+ 思考中に使用されるトークン (出力トークン)
+ 後続のリクエストに含まれる最後のアシスタントターンからの思考ブロック (入力トークン)
+ 標準テキスト出力トークン

**ヒント**  
拡張思考を有効にすると、この機能をサポートするために専用の 28 または 29 トークンシステムプロンプトが自動的に含まれます。

`budget_tokens` パラメータは、Claude が内部推論プロセスに使用できるトークンの最大数を決定します。予算が多いほど複雑な問題をより詳細に分析できるため、レスポンスの品質が向上しますが、特に 32,000 を超える範囲では、Claude は割り当てられた予算を使い切らない場合があります。

インターリーブ思考では、`budget_tokens` は `max_tokens` パラメータを超える可能性があります。これは、1 回のアシスタントターンですべての思考ブロックの合計予算を表すためです。

要約された思考を使用する場合は、次の情報に注意してください。
+ **入力トークン**: 元のリクエストのトークン
+ **出力トークン (請求)**: Claude 内部で生成された元の思考トークン
+ **出力トークン (表示)**: レスポンスに表示される要約された思考トークン
+ **課金なし**: 要約の生成に使用されるトークン
+ `summary_status` フィールドは、トークンの制限が要約に影響するかどうかを示すことができます。
+ 請求される出力トークン数は、レスポンスに表示されるトークン数と一致しません。表示される要約ではなく、思考プロセス全体に対して課金されます。