Claude API の最新モデルは、最大100万トークンという非常に大きなコンテキストウィンドウを標準で備えています。大規模なコードベースや長大なドキュメントを、分割せずに一度に渡して扱えます。本稿では、対応モデルと料金、基本的な使い方、そして大きな入力を安全・低コストに扱うためのコツを解説します。
概要
コンテキストウィンドウとは、モデルが一度のリクエストで同時に考慮できるトークンの上限で、入力(プロンプト)と出力(生成テキスト)の合計に対して効きます。100万トークンは、英語のテキストなら数百ページ、コードなら数万行に相当する規模です(トークン数は内容によって変わるため、正確には後述の count_tokens で実測します)。
この大きさが効くのは、たとえば次のような場面です。
- 大規模なコードベースを丸ごと読み込ませて、横断的な質問や影響範囲の調査を行う
- 長い契約書・論文・議事録を分割せずに渡し、全体を踏まえた要約や抽出をさせる
- 複数のドキュメントをまとめて渡し、資料をまたいだ比較や整合性チェックをさせる
対応モデルと料金
現行の主要モデルは、100万トークンのコンテキストウィンドウを既定で備えています。以前は一部モデルで長文コンテキストがベータ扱いでしたが、現行モデルでは有効化のためのベータヘッダは不要です。
| モデル | モデルID | コンテキスト | 最大出力 |
|---|---|---|---|
| Claude Opus 4.8 | claude-opus-4-8 | 100万 | 128K |
| Claude Opus 4.7 | claude-opus-4-7 | 100万 | 128K |
| Claude Sonnet 5 | claude-sonnet-5 | 100万 | 128K |
| Claude Sonnet 4.6 | claude-sonnet-4-6 | 100万 | 128K |
| Claude Haiku 4.5 | claude-haiku-4-5 | 20万 | 64K |
料金面では、Opus 4.8 / 4.7 は100万コンテキストを標準API料金で提供しており、長文コンテキストの割増はありません。Sonnet 5 は標準で入力100万トークンあたり3ドル・出力15ドルですが、2026年8月31日までは導入価格(入力2ドル・出力10ドル)が適用されます。料金は入力トークン数に比例して増えるため、大きな入力を扱うほど費用の見積もりが重要になります。
なお、100万というのは入力と出力の合計上限であり、出力を制御する max_tokens の分もこの枠に含まれます。大量出力が必要なタスクを1M級の入力と組み合わせる場合は、この点を意識してください。100万トークンが不要で低コスト・低レイテンシを優先したい処理には、20万コンテキストの Haiku 4.5 が向きます。
基本的な使い方
特別なパラメータは必要ありません。対応モデルを model に指定し、長い入力を messages に渡すだけです。次は TypeScript SDK で、大きなファイルの内容をそのまま渡して質問する例です。
import Anthropic from "@anthropic-ai/sdk";
import fs from "fs";
const client = new Anthropic();
const largeDoc = fs.readFileSync("./whole-codebase.txt", "utf-8");
const response = await client.messages.create({
model: "claude-opus-4-8",
max_tokens: 16000,
messages: [
{
role: "user",
content: `次のコードベース全体を読み、認証まわりの処理がどこにあるか一覧化してください。\n\n${largeDoc}`,
},
],
});
for (const block of response.content) {
if (block.type === "text") console.log(block.text);
}
出力を大きくする(max_tokens を数万トークン規模にする)場合は、非ストリーミングだと HTTP タイムアウトに達しやすいため、client.messages.stream() を使ってストリーミング受信に切り替えてください。
大きな入力を扱うコツ
1M級の入力を毎回そのまま送ると、コストもレイテンシも大きくなります。次の3点で効率化できます。
- プロンプトキャッシュ: 同じ大きな前提(コードベースや資料)を繰り返し使うなら、その部分に
cache_controlを付けてキャッシュします。2回目以降のリクエストでは、キャッシュ済み部分の入力コストがおよそ10分の1になり、処理も速くなります。長い前提を先頭に固定し、毎回変わる質問を末尾に置くのが定石です。 - トークン数の実測: 送る前に
client.messages.countTokens()で入力トークン数を測り、料金と枠を見積もります。tiktoken など他社のトークナイザは Claude では誤差が大きいため使わず、必ず使うモデルIDを指定して計測してください。 - コンパクション(ベータ): 会話が長くコンテキスト上限に近づく用途では、古い履歴を自動要約するコンパクション機能(ベータヘッダ
compact-2026-01-12)を使えます。長時間動き続けるエージェントの履歴管理に向きます。
注意点
- 100万トークンは入力と出力の合計上限です。
max_tokens(出力)の分も枠を消費します。 - モデルによってトークナイザが異なり、同じ文章でもトークン数が変わります。見積もりは必ず使うモデルで
count_tokensして行ってください。 - 大きく入れれば全体を等しく活用してくれるとは限りません。無関係な巨大テキストで薄めるより、本当に関連する情報を選んで渡した方が精度は上がります。「切り詰める」のではなく「関連性で選ぶ」のがコツです。
- 料金・導入価格・提供状況は変わることがあります。最新の正確な情報は公式ドキュメントをご確認ください(当サイトは非公式です)。