コンテキストウィンドウの仕組み

Claude API コンテキスト管理 8分で読めます

コンテキストウィンドウは、モデルが応答を生成するときに参照できるテキスト全体のことです。会話が長くなるほど上限に近づき、あるところで必ず頭打ちになります。この記事では、リクエストの何がコンテキストウィンドウに数えられるのか、拡張思考とツール利用がどう影響するのか、そして上限に達したときに何が起きるのかを整理します。

コンテキストウィンドウとは何か

コンテキストウィンドウとは、言語モデルが応答を生成する際に参照できるテキストすべてを指します。応答そのものも含まれます。これは学習に使われた大量のデータとは別のもので、モデルにとっての「作業記憶」にあたります。

ここで注意が要るのは、コンテキストが広ければ広いほど良いわけではないという点です。トークン数が増えるにつれて、精度と想起の質は劣化していきます。この現象はcontext rot(コンテキストの腐敗)と呼ばれています。つまり、どれだけの容量があるかと同じくらい、そこに何を入れるかを吟味することが重要になります。

リクエストの中で、コンテキストウィンドウに数えられるものは次のとおりです。

各レスポンスの usage フィールドに、そのリクエストが実際に消費した量が報告されます。プロンプトキャッシュを使っている場合、入力の数は input_tokens / cache_read_input_tokens / cache_creation_input_tokens の3つに分かれますが、3つとも同じようにコンテキストウィンドウを消費します。キャッシュが変えるのは支払う金額であって、ウィンドウを占めるかどうかではありません。

送信前に見積もりたい場合は、トークンカウント API が使えます。

モデル別のサイズ

コンテキストウィンドウのサイズはモデルによって異なります。

1Mトークンのモデルは、Claude Opus 5、Claude Opus 4.8、Claude Opus 4.7、Claude Opus 4.6、Claude Sonnet 5、Claude Sonnet 4.6 です。Claude API のほか、Amazon Bedrock、Google Cloud、Microsoft Foundry でも同じ1Mトークンです。Claude Fable 5 と Claude Mythos 5 も1Mトークンです。

それ以外のモデル(Claude Sonnet 4.5 を含む)は200kトークンです。

1Mトークンのモデルについて、押さえておくべき点が2つあります。

画像とPDFには別の上限があります。1回のリクエストに含められるのは、1Mトークンのモデルで最大600枚(ページ)、200kトークンのモデルで100枚(ページ)です。画像や大きなドキュメントを多く送る場合、トークン上限より先にリクエストサイズの上限に当たることがあります

思考トークンの扱い

拡張思考を使うと、思考トークンもコンテキストウィンドウを消費します。ここには多少の込み入った事情があります。

まず基本として、思考トークンは max_tokens パラメータの内側に含まれ、出力トークンとして課金され、レート制限にも数えられます。アダプティブ思考を使う場合、Claude が思考量を動的に決めるため、リクエストごとに思考トークンの消費量は変わります。

込み入っているのは、前のターンの思考ブロックが会話に残るかどうかがモデルによって違う点です。

課金の観点で整理すると、思考トークンは生成された時点で出力トークンとして1回課金されます。思考ブロックを保持するモデルでは、保持されたブロックがその後のリクエストの入力の一部となり、会話履歴の他の部分と同様に入力トークンとして課金されます。

この既定の挙動をどちらの方向にも上書きしたい場合は、コンテキスト編集の思考ブロッククリア機能を使います。

思考とツール利用を組み合わせた場合

拡張思考とツール利用を組み合わせると、思考ブロックの扱いがさらに一段複雑になります。思考ブロックを除去するモデルを例に、3つのターンで何が起きるかを追います。

1ターン目。入力はツール設定とユーザーメッセージ、出力は思考ブロック+テキスト応答+ツール利用リクエストです。入力・出力のすべてがコンテキストウィンドウを消費し、出力はすべて出力トークンとして課金されます。

2ターン目(ツール結果を返す)。入力には1ターン目のすべてのブロックと tool_result が含まれます。ここが重要で、対応するツール結果と一緒に、思考ブロックを必ず返さなければなりません。思考ブロックの返却が必須になるのは、このケースだけです。ツール結果を渡したあと、Claude はテキストのみで応答します(インターリーブ思考を有効にしていない限り、次の user メッセージまで追加の思考は行われません)。

3ターン目(新しいユーザーターン)。前ターンまでの入力と出力が引き継がれます。完了したツール利用サイクルの思考ブロックは、もうコンテキストに留まる必要がありません。思考ブロックを除去するモデルでは渡し返した時点で API が自動的に落とし、保持するモデルではこの段階で自分で取り除けます。新しい user ターンがツール利用サイクルの外にあるため、Claude は新しい思考ブロックを生成してそこから続けます。

実装上、特に注意すべき点が2つあります。

なお現行の多くの Claude モデルはインターリーブ思考に対応しており、ツール呼び出しの合間(ツール結果を受け取った後を含む)に思考できます。アダプティブ思考のモデルでは自動で有効です。Claude Opus 4.5、Claude Sonnet 4.5、およびそれ以前の Claude 4 系では interleaved-thinking-2025-05-14 ベータヘッダが必要で、Claude Haiku 4.5 は非対応です。

ツール定義そのものが占めるコンテキストを減らしたい場合は、ツール検索ツールでツール定義を遅延読み込みする方法があります。

コンテキスト認識

Claude Sonnet 5、Claude Sonnet 4.6、Claude Sonnet 4.5、Claude Haiku 4.5 にはコンテキスト認識という機能があります。これらのモデルは会話の全体を通して、自分に残っているコンテキストウィンドウ(トークン予算)を把握しています。残りがどれだけあるかを推測するのではなく、実際に残っている空間に対して長時間のタスクを組み立てられるようになります。

コンテキスト認識は自動です。有効にする設定はなく、以下に示すタグを自分で送ることもありません。API が注入します。

まず、すべてのリクエストのシステムプロンプトで、API が総コンテキストウィンドウを Claude に伝えます。

<budget:token_budget>200000</budget:token_budget>

この予算はリクエストで利用可能なコンテキストウィンドウと一致します。Claude Sonnet 5 と Claude Sonnet 4.6 では1Mトークン、Claude Sonnet 4.5 と Claude Haiku 4.5 では200kトークンです。上の例は200kトークンのモデルを示しています。

さらに、ツール呼び出しのたびに、API が残り容量を Claude に伝えます。

<system_warning>Token usage: 35000/200000; 165000 remaining</system_warning>

画像のトークンもこの予算に含まれます。

一方、Claude Opus 4.7 以降の Opus、Claude Fable 5、Claude Mythos 5 には、これらのタグは注入されません。これらのモデルでは、タスク予算(ベータ)で明示的に予算を与えられます。

上限を超えたときの挙動

コンテキストウィンドウの上限に達したとき、何が起きるかは2つのケースに分かれます。

入力だけで既に上限を超えている場合。すべてのモデルで、API は 400 の invalid_request_error("prompt is too long")を返します。ここに例外はありません。

入力トークンと max_tokens の合計が上限を超える場合。ここはモデルによって挙動が異なります。

つまり Claude 4.5 以降では、「送る前に弾かれる」のではなく「途中まで生成してから止まる」形になります。アプリケーション側では、この stop_reason を見て打ち切りを検知し、後続処理を分岐させる必要があります。停止理由の扱いについては停止理由(stop reason)の扱い方を参照してください。

そもそも上限に当てないようにするには、送信前にトークンカウント API で見積もるのが確実です。

長い会話を続けるための対処

会話が日常的にコンテキストウィンドウの上限に近づくなら、サーバーサイドのコンパクションが第一の対処になります。コンパクションは会話の前半をサーバー側で自動的に要約するので、コンテキストウィンドウの上限を超えても会話を続けられます。Claude 4.6 以降のモデルでベータ提供されています。

より細かい制御が要る場合は、コンテキスト編集に2つの戦略があります。

ここで改めて確認しておくべきことがあります。キャッシュされたプロンプトのプレフィックスも、コンテキストウィンドウを占めます。プロンプトキャッシュが変えるのは、それらのトークンに対して支払う金額であって、それらがウィンドウに数えられるかどうかではありません。キャッシュを効かせているから容量に余裕がある、という理解は誤りです。

複数のセッションにまたがるエージェントを作る場合は、新しいセッションが始まったときにコンテキストの復元が速く済むよう、状態を残す成果物の設計を先に決めておくとよいでしょう。メモリツールのマルチセッションのパターンが具体的な進め方を示しています。

本記事は Anthropic 公式ドキュメントの Context windows ページ(2026年8月8日時点)に基づく非公式の日本語解説です。コンパクションとタスク予算はベータ機能のため、仕様が変わる場合があります。実装前に公式ドキュメントで最新をご確認ください。