コンテキストウィンドウの理解

「コンテキストウィンドウ」とは、言語モデルが新しいテキストを生成する際に参照できるテキストの総量と、生成する新しいテキストの全体を指します。これは言語モデルが訓練された大規模なデータコーパスとは異なり、モデルの「作業メモリ」を表します。より大きなコンテキストウィンドウにより、モデルはより複雑で長いプロンプトを理解し応答できるようになり、一方で小さなコンテキストウィンドウは、より長いプロンプトを処理したり、長時間の会話で一貫性を保つモデルの能力を制限する可能性があります。 以下の図は、APIリクエストの標準的なコンテキストウィンドウの動作を示しています1 コンテキストウィンドウ図 1claude.aiなどのチャットインターフェースでは、コンテキストウィンドウは「先入れ先出し」システムでローリング設定することもできます。
  • 段階的トークン蓄積: 会話がターンを通じて進行するにつれて、各ユーザーメッセージとアシスタントの応答がコンテキストウィンドウ内に蓄積されます。以前のターンは完全に保持されます。
  • 線形成長パターン: コンテキスト使用量は各ターンで線形に成長し、以前のターンは完全に保持されます。
  • 200Kトークン容量: 利用可能な総コンテキストウィンドウ(200,000トークン)は、会話履歴を保存しClaudeから新しい出力を生成するための最大容量を表します。
  • 入力-出力フロー: 各ターンは以下で構成されます:
    • 入力フェーズ: すべての以前の会話履歴と現在のユーザーメッセージを含む
    • 出力フェーズ: 将来の入力の一部となるテキスト応答を生成する

拡張思考でのコンテキストウィンドウ

拡張思考を使用する場合、思考に使用されるトークンを含むすべての入力および出力トークンがコンテキストウィンドウの制限にカウントされ、マルチターン状況ではいくつかのニュアンスがあります。 思考予算トークンはmax_tokensパラメータのサブセットであり、出力トークンとして課金され、レート制限にカウントされます。 ただし、以前の思考ブロックはClaude APIによってコンテキストウィンドウ計算から自動的に除外され、モデルが後続のターンで「見る」会話履歴の一部ではなく、実際の会話内容のためのトークン容量を保持します。 以下の図は、拡張思考が有効になっている場合の特殊なトークン管理を示しています: 拡張思考でのコンテキストウィンドウ図
  • 拡張思考の除去: 拡張思考ブロック(濃いグレーで表示)は各ターンの出力フェーズで生成されますが、後続のターンの入力トークンとして引き継がれません。思考ブロックを自分で除去する必要はありません。Claude APIが、それらを戻す場合に自動的にこれを行います。
  • 技術的実装の詳細:
    • APIは、会話履歴の一部として戻す際に、以前のターンからの思考ブロックを自動的に除外します。
    • 拡張思考トークンは、生成時に一度だけ出力トークンとして課金されます。
    • 効果的なコンテキストウィンドウ計算は次のようになります:context_window = (input_tokens - previous_thinking_tokens) + current_turn_tokens
    • 思考トークンにはthinkingブロックとredacted_thinkingブロックの両方が含まれます。
このアーキテクチャはトークン効率的で、思考ブロックは長さが相当になる可能性があるため、トークンの無駄なく広範囲な推論を可能にします。
コンテキストウィンドウと拡張思考について詳しくは、拡張思考ガイドをご覧ください。

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

以下の図は、拡張思考とツール使用を組み合わせた場合のコンテキストウィンドウトークン管理を示しています: 拡張思考とツール使用でのコンテキストウィンドウ図
1

最初のターンアーキテクチャ

  • 入力コンポーネント: ツール設定とユーザーメッセージ
  • 出力コンポーネント: 拡張思考 + テキスト応答 + ツール使用リクエスト
  • トークン計算: すべての入力および出力コンポーネントがコンテキストウィンドウにカウントされ、すべての出力コンポーネントが出力トークンとして課金されます。
2

ツール結果処理(ターン2)

  • 入力コンポーネント: 最初のターンのすべてのブロックとtool_result。拡張思考ブロックは対応するツール結果と一緒に返される必要があります。これは思考ブロックを返さなければならない唯一のケースです。
  • 出力コンポーネント: ツール結果がClaudeに戻された後、Claudeはテキストのみで応答します(次のuserメッセージまで追加の拡張思考はありません)。
  • トークン計算: すべての入力および出力コンポーネントがコンテキストウィンドウにカウントされ、すべての出力コンポーネントが出力トークンとして課金されます。
3

第3ステップ

  • 入力コンポーネント: すべての入力と前のターンからの出力が、Claudeが完全なツール使用サイクルを完了したため削除できる思考ブロックを除いて引き継がれます。APIは戻す場合に思考ブロックを自動的に除去するか、この段階で自分で除去することもできます。これは次のUserターンを追加する場所でもあります。
  • 出力コンポーネント: ツール使用サイクル外に新しいUserターンがあるため、Claudeは新しい拡張思考ブロックを生成し、そこから続行します。
  • トークン計算: 以前の思考トークンはコンテキストウィンドウ計算から自動的に除去されます。他のすべての以前のブロックは依然としてトークンウィンドウの一部としてカウントされ、現在のAssistantターンの思考ブロックはコンテキストウィンドウの一部としてカウントされます。
  • 拡張思考でのツール使用の考慮事項:
    • ツール結果を投稿する際、その特定のツールリクエストに付随する完全な未修正の思考ブロック(署名/編集された部分を含む)を含める必要があります。
    • 拡張思考でのツール使用の効果的なコンテキストウィンドウ計算は次のようになります:context_window = input_tokens + current_turn_tokens
    • システムは暗号化署名を使用して思考ブロックの真正性を検証します。ツール使用中に思考ブロックを保持しないと、Claudeの推論の連続性が破綻する可能性があります。したがって、思考ブロックを修正すると、APIはエラーを返します。
Claude 4モデルはインターリーブ思考をサポートしており、Claudeがツール呼び出し間で思考し、ツール結果を受け取った後により洗練された推論を行うことができます。Claude Sonnet 3.7はインターリーブ思考をサポートしていないため、間に非tool_resultユーザーターンがない限り、拡張思考とツール呼び出しのインターリーブはありません。拡張思考でのツール使用について詳しくは、拡張思考ガイドをご覧ください。

1Mトークンコンテキストウィンドウ

Claude Sonnet 4と4.5は100万トークンのコンテキストウィンドウをサポートしています。この拡張されたコンテキストウィンドウにより、はるかに大きなドキュメントを処理し、より長い会話を維持し、より広範囲なコードベースで作業できます。
1Mトークンコンテキストウィンドウは現在、使用階層4の組織およびカスタムレート制限を持つ組織向けのベータ版です。1MトークンコンテキストウィンドウはClaude Sonnet 4とSonnet 4.5でのみ利用可能です。
1Mトークンコンテキストウィンドウを使用するには、APIリクエストにcontext-1m-2025-08-07 ベータヘッダーを含めてください:
from anthropic import Anthropic

client = Anthropic()

response = client.beta.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Process this large document..."}
    ],
    betas=["context-1m-2025-08-07"]
)
重要な考慮事項:
  • ベータステータス: これは変更される可能性のあるベータ機能です。機能と価格は将来のリリースで修正または削除される可能性があります。
  • 使用階層要件: 1Mトークンコンテキストウィンドウは使用階層4の組織およびカスタムレート制限を持つ組織で利用可能です。下位階層の組織はこの機能にアクセスするために使用階層4に進む必要があります。
  • 可用性: 1MトークンコンテキストウィンドウはClaude API、Amazon Bedrock、およびGoogle CloudのVertex AIで現在利用可能です。
  • 価格: 200Kトークンを超えるリクエストは自動的にプレミアム料金(入力2倍、出力1.5倍の価格)で課金されます。詳細については価格ドキュメントをご覧ください。
  • レート制限: 長いコンテキストリクエストには専用のレート制限があります。詳細についてはレート制限ドキュメントをご覧ください。
  • マルチモーダルの考慮事項: 大量の画像やPDFを処理する際は、ファイルのトークン使用量が変動する可能性があることに注意してください。大きなプロンプトと大量の画像を組み合わせる場合、リクエストサイズ制限に達する可能性があります。

Claude Sonnet 4.5とHaiku 4.5でのコンテキスト認識

Claude Sonnet 4.5とClaude Haiku 4.5はコンテキスト認識機能を備えており、これらのモデルが会話を通じて残りのコンテキストウィンドウ(つまり「トークン予算」)を追跡できます。これにより、Claudeは作業に使用できるスペースの量を理解することで、タスクを実行し、コンテキストをより効果的に管理できます。Claudeは、残りのトークン数を推測するのではなく、最後まで正確にタスクを継続するために、このコンテキストを正確に使用するようにネイティブに訓練されています。モデルにとって、コンテキスト認識がないことは、時計なしで料理番組に参加するようなものです。Claude 4.5モデルは、残りのコンテキストについてモデルに明示的に情報を提供することでこれを変更し、利用可能なトークンを最大限に活用できるようにします。 仕組み: 会話の開始時に、Claudeは総コンテキストウィンドウに関する情報を受け取ります:
<budget:token_budget>200000</budget:token_budget>
予算は200Kトークン(標準)、500Kトークン(Claude.ai Enterprise)、または1Mトークン(適格な組織向けベータ)に設定されます。 各ツール呼び出し後、Claudeは残り容量の更新を受け取ります:
<system_warning>Token usage: 35000/200000; 165000 remaining</system_warning>
この認識により、Claudeは作業に残っている容量を判断し、長時間実行されるタスクでより効果的な実行を可能にします。画像トークンはこれらの予算に含まれます。 利点: コンテキスト認識は特に以下に価値があります:
  • 持続的な集中を必要とする長時間実行されるエージェントセッション
  • 状態遷移が重要なマルチコンテキストウィンドウワークフロー
  • 慎重なトークン管理を必要とする複雑なタスク
コンテキスト認識を活用するためのプロンプトガイダンスについては、Claude 4ベストプラクティスガイドをご覧ください。

新しいClaudeモデルでのコンテキストウィンドウ管理

新しいClaudeモデル(Claude Sonnet 3.7以降)では、プロンプトトークンと出力トークンの合計がモデルのコンテキストウィンドウを超える場合、システムはコンテキストを静かに切り詰めるのではなく、検証エラーを返します。この変更により、より予測可能な動作が提供されますが、より慎重なトークン管理が必要になります。 トークン使用量を計画し、コンテキストウィンドウ制限内に収まることを確実にするために、トークンカウントAPIを使用して、メッセージをClaudeに送信する前にどれだけのトークンを使用するかを推定できます。 モデル別のコンテキストウィンドウサイズのリストについては、モデル比較表をご覧ください。

次のステップ