100万トークンのコンテキストウィンドウを使う

Claude API エンジニアリング 6分で読めます

Claude API の最新モデルは、最大100万トークンという非常に大きなコンテキストウィンドウを標準で備えています。大規模なコードベースや長大なドキュメントを、分割せずに一度に渡して扱えます。本稿では、対応モデルと料金、基本的な使い方、そして大きな入力を安全・低コストに扱うためのコツを解説します。

概要

コンテキストウィンドウとは、モデルが一度のリクエストで同時に考慮できるトークンの上限で、入力(プロンプト)と出力(生成テキスト)の合計に対して効きます。100万トークンは、英語のテキストなら数百ページ、コードなら数万行に相当する規模です(トークン数は内容によって変わるため、正確には後述の count_tokens で実測します)。

この大きさが効くのは、たとえば次のような場面です。

対応モデルと料金

現行の主要モデルは、100万トークンのコンテキストウィンドウを既定で備えています。以前は一部モデルで長文コンテキストがベータ扱いでしたが、現行モデルでは有効化のためのベータヘッダは不要です。

モデルモデルIDコンテキスト最大出力
Claude Opus 4.8claude-opus-4-8100万128K
Claude Opus 4.7claude-opus-4-7100万128K
Claude Sonnet 5claude-sonnet-5100万128K
Claude Sonnet 4.6claude-sonnet-4-6100万128K
Claude Haiku 4.5claude-haiku-4-520万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点で効率化できます。

注意点