コンテキスト編集(context editing)は、会話が長くなったときに不要になった内容をサーバ側で自動的に取り除き、コンテキストを整理する機能です。コストを下げ、トークン上限に対処し、モデルの注意を目下のタスクに向け続けることを狙います。
コンテキスト編集とは
コンテキスト編集はサーバ側で処理されます。クライアントが持っている会話履歴そのものは変更されず、編集後の内容が Claude に渡ります。つまり、自分の側で履歴を削る実装を書かなくても、API 側で古い情報を落とせます。
利用するには、リクエストにベータヘッダー anthropic-beta: context-management-2025-06-27 を付け、context_management パラメータで戦略を指定します。サポート対象の Claude モデルすべてで利用できます。
2つの戦略
戦略は 2 種類あります。
- ツール結果のクリア(
clear_tool_uses_20250919)— 古いツール実行結果や、必要ならツールの入力パラメータも削除する。ツールを多用するエージェント向け。 - 思考ブロックのクリア(
clear_thinking_20251015)— Extended Thinking の思考ブロックを管理・削除する。
両方を同時に使う場合、edits 配列では clear_thinking_20251015 を先に指定する必要があります(順序が決まっています)。
ツール結果のクリア設定
clear_tool_uses_20250919 のパラメータは次のとおりです。
trigger— クリアを開始する閾値。既定は 100,000 トークン。input_tokensまたはtool_usesで指定する。keep— クリア後に残す直近のツール実行ペア数。既定は 3。clear_at_least— 1 回のクリアで最低限削除するトークン数。キャッシュ無効化の代償に見合うだけ削れているかを担保するために使う。exclude_tools— クリア対象から外すツール名の配列。clear_tool_inputs—trueにするとツール呼び出しの入力パラメータも削除する。既定はfalse。
最小構成は型を指定するだけです。
response = client.beta.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[{"role": "user", "content": "AIの最近の動向を調べて"}],
tools=[{"type": "web_search_20250305", "name": "web_search"}],
betas=["context-management-2025-06-27"],
context_management={"edits": [{"type": "clear_tool_uses_20250919"}]},
)
細かく制御する場合は次のように書きます。
context_management={
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {"type": "input_tokens", "value": 30000},
"keep": {"type": "tool_uses", "value": 3},
"clear_at_least": {"type": "input_tokens", "value": 5000},
"exclude_tools": ["web_search"]
}
]
}
思考ブロックのクリア設定
clear_thinking_20251015 のパラメータは keep のみで、{"type": "thinking_turns", "value": N}(N は 1 以上)または "all" を指定します。既定値はモデルによって異なり、Opus 4.5 以降および Sonnet 4.6 以降ではすべての思考ブロックを保持、Opus 4.1 以前・Sonnet 4.5 以前・Haiku では最後のターンのみ保持です。
context_management={
"edits": [
{
"type": "clear_thinking_20251015",
"keep": {"type": "thinking_turns", "value": 2}
}
]
}
キャッシュを効かせたい場合は "keep": "all" ですべての思考ブロックを保持する選択もできます。
プロンプトキャッシュへの影響
プロンプトキャッシュとの相互作用は戦略によって異なります。
- ツール結果のクリアはキャッシュを無効化します。
clear_at_leastを設定して、キャッシュ書き込みコストに見合うだけまとめて削るようにします。 - 思考ブロックのクリアは、保持している間はキャッシュが維持され、削除した時点で無効化されます。
頻繁に少しずつ削ると、そのたびにキャッシュが作り直されて逆に高くつくことがあるため、閾値と最小削除量はセットで考えます。
レスポンスの確認方法
実際にどの編集が適用され、何トークン削除されたかは、レスポンスの context_management フィールドで確認できます。
{
"context_management": {
"applied_edits": [
{
"type": "clear_tool_uses_20250919",
"cleared_tool_uses": 8,
"cleared_input_tokens": 50000
}
]
}
}
トークンカウントのエンドポイント /messages/count_tokens も context_management パラメータを受け付けるため、実際に送信する前に削除前後のトークン数を比較できます。レスポンスの context_management.original_input_tokens が削除前、input_tokens が削除後の値です。
次に読むもの
コンテキスト編集はメモリツールと組み合わせると効果的です。クリアされる前に重要な情報をメモリファイルへ書き出しておけば、コンテキストから消えても後で読み戻せます。長時間実行するエージェントでは、コンテキスト編集・コンパクション・メモリツールを役割分担させる構成が推奨されています。
本記事は Anthropic 公式ドキュメントの Context editing ページ(2026年7月19日時点)に基づく非公式の日本語解説です。ベータ機能のため仕様が変わる場合があります。実装前に公式ドキュメントで最新をご確認ください。