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

「コンテキストウィンドウ」とは、言語モデルが新しいテキストを生成する際に振り返って参照できるテキストの総量と、生成する新しいテキストの全体を指します。これは言語モデルが訓練された大規模なデータコーパスとは異なり、モデルの「作業記憶」を表します。より大きなコンテキストウィンドウにより、モデルはより複雑で長いプロンプトを理解し応答できるようになり、一方で小さなコンテキストウィンドウは、より長いプロンプトを処理したり、長時間の会話で一貫性を保つモデルの能力を制限する可能性があります。

以下の図は、APIリクエストの標準的なコンテキストウィンドウの動作を示しています1

1claude.aiなどのチャットインターフェースでは、コンテキストウィンドウは「先入れ先出し」システムでローリング設定することもできます。

  • 段階的トークン蓄積: 会話がターンを通じて進行するにつれて、各ユーザーメッセージとアシスタントの応答がコンテキストウィンドウ内に蓄積されます。以前のターンは完全に保持されます。
  • 線形成長パターン: コンテキスト使用量は各ターンで線形に成長し、以前のターンは完全に保持されます。
  • 200Kトークン容量: 利用可能な総コンテキストウィンドウ(200,000トークン)は、会話履歴を保存しClaudeから新しい出力を生成するための最大容量を表します。
  • 入力-出力フロー: 各ターンは以下で構成されます:
    • 入力フェーズ: すべての以前の会話履歴と現在のユーザーメッセージを含む
    • 出力フェーズ: 将来の入力の一部となるテキスト応答を生成する

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

拡張思考を使用する場合、思考に使用されるトークンを含むすべての入力および出力トークンがコンテキストウィンドウの制限にカウントされ、マルチターン状況ではいくつかのニュアンスがあります。

思考予算トークンはmax_tokensパラメータのサブセットであり、出力トークンとして課金され、レート制限にカウントされます。

ただし、以前の思考ブロックはAnthropic APIによってコンテキストウィンドウの計算から自動的に除外され、モデルが後続のターンで「見る」会話履歴の一部ではなく、実際の会話内容のためのトークン容量を保持します。

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

  • 拡張思考の除去: 拡張思考ブロック(濃いグレーで表示)は各ターンの出力フェーズで生成されますが、後続のターンの入力トークンとして引き継がれません。思考ブロックを自分で除去する必要はありません。Anthropic 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は100万トークンのコンテキストウィンドウをサポートしています。この拡張されたコンテキストウィンドウにより、はるかに大きなドキュメントを処理し、より長い会話を維持し、より広範囲なコードベースで作業することができます。

1Mトークンコンテキストウィンドウは現在、使用階層 4の組織とカスタムレート制限を持つ組織向けのベータ版です。1Mトークンコンテキストウィンドウは、Claude Sonnet 4でのみ利用可能です。

1Mトークンコンテキストウィンドウを使用するには、APIリクエストにcontext-1m-2025-08-07 ベータヘッダーを含めてください:

from anthropic import Anthropic

client = Anthropic()

response = client.beta.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Process this large document..."}
    ],
    betas=["context-1m-2025-08-07"]
)

重要な考慮事項:

  • ベータステータス:これは変更される可能性のあるベータ機能です。機能と価格は将来のリリースで変更または削除される可能性があります。
  • 使用階層要件:1Mトークンコンテキストウィンドウは、使用階層 4の組織とカスタムレート制限を持つ組織で利用可能です。下位階層の組織は、この機能にアクセスするために使用階層4に進む必要があります。
  • 可用性:1MトークンコンテキストウィンドウはAnthropic APIとAmazon Bedrockで現在利用可能です。Google Vertex AIのサポートは後日提供されます。
  • 価格設定:200Kトークンを超えるリクエストは自動的にプレミアム料金(入力2倍、出力1.5倍の価格設定)で課金されます。詳細については価格設定ドキュメントをご覧ください。
  • レート制限:長いコンテキストリクエストには専用のレート制限があります。詳細についてはレート制限ドキュメントをご覧ください。
  • マルチモーダルの考慮事項:大量の画像やPDFを処理する際は、ファイルのトークン使用量が変動する可能性があることに注意してください。大きなプロンプトと大量の画像を組み合わせる場合、リクエストサイズ制限に達する可能性があります。

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

新しいClaudeモデル(Claude Sonnet 3.7以降)では、プロンプトトークンと出力トークンの合計がモデルのコンテキストウィンドウを超える場合、システムはコンテキストを静かに切り詰めるのではなく、検証エラーを返します。この変更により、より予測可能な動作が提供されますが、より注意深いトークン管理が必要になります。

トークン使用量を計画し、コンテキストウィンドウの制限内に収まることを確認するために、トークンカウントAPIを使用して、メッセージをClaudeに送信する前にどれだけのトークンを使用するかを推定できます。

モデル別のコンテキストウィンドウサイズのリストについては、モデル比較テーブルをご覧ください。

次のステップ