Claude Messages API のコンパクション:2 つの beta と署名ブロック、課金の数え方
圧縮すれば必ず安くなるわけではない
Anthropic は 2026-02-05 に compaction API を beta 化し(閾値到達で自動要約)、2026-09-14 にオンデマンド圧縮を追加した。トップレベルの compaction パラメータを送ると署名付き compaction ブロックが返る。本ページは 4 点だけ:それぞれの送り方、ブロックの戻し位置(公式の言葉では 400)、usage.iterations が課金の見方を変える理由、prompt caching との実際の関係。
更新日 2026-09-21
4 つの要点
別々の beta ヘッダー
閾値型は compact-2026-01-12 を使い、設定は context_management.edits の中に型 compact_20260112 として書く。オンデマンド型は compact-2026-09-04 とトップレベルの compaction。公式の文は You can't send compaction and context_management on the same request。
閾値型の既定トリガ
公式パラメータ表:trigger の既定は {"type": "input_tokens", "value": 150000}、トリガ型は input_tokens のみ、value は 50,000 トークン以上。到達すると API が要約を作り compaction ブロックに入れ、圧縮後の文脈で回答を続ける。
署名ブロックの位置違いは 400
オンデマンド型は署名付き compaction ブロックを 1 つ返す。公式:Leaving the summarized messages in front of a signed block is a 400 error。ブロックを messages の先頭に置き、要約された消息を消す。signature を含めて受け取ったまま返す。閾値型のブロックは要約対象の後ろに付く。
なぜ別課金になるか
公式の文言:Compaction requires an additional sampling step, which contributes to rate limits and billing。レスポンスの usage.iterations に type が compaction の記録が増え、トップレベルの input_tokens / output_tokens には入らない。実消費は iterations を合計しろと公式が書いている。
何をする機能か
サーバー側コンパクション:設定した閾値に達すると Claude 自身が会話を書き換え、要約を compaction ブロックに入れて返し、後続のリクエストではそのブロックより前の content block を API が自動で捨てて要約から続ける。公式の位置づけはクライアント側要約コードの代替(Server-side compaction is the recommended strategy)で、想定用途は 2 つ:1 つのチャットを長く使い続ける多ターン会話と、追作業(多くはツール呼び出し)が多くコンテキスト窓を越えうるタスク型プロンプト。
何が起きたか
2 つの日付とも公式 API release notes に逐字で在る。2026-02-05「We've launched the compaction API in beta, providing server-side context summarization for effectively infinite conversations. Available on Opus 4.6.」、2026-09-21 再確認の September 14, 2026 項目「The Messages API can now compact a conversation on demand ... in beta with the compact-2026-09-04 beta header」。オンデマンド型は署名ブロック 1 個を返し、回答は生成しない(stop_reason は compaction)。要約リクエストはバックグラウンドで走らせ会話は全文のまま続けられる(async / background compaction)、直近のターンを原文のまま要約後に残せる(keep-tail)。
タイムライン
2026-02-05:公式 release notes「We've launched the compaction API in beta ... Available on Opus 4.6.」— サーバー側圧縮の最初の beta。
2026-09-14:同ページにオンデマンド圧縮(beta ヘッダー compact-2026-09-04)が追加。トップレベル compaction、署名ブロック、バックグラウンド生成、直近ターンの原文保持。
2026-09-21:本ページは公式 .md を 2 件取得し、上のパラメータ・既定値・エラーコードを逐字で照合。目録と 30 日課金台帳も同日に確認。
公式確認 vs 注意
公式確認
2026-09-21 に取得した公式ページで逐字一致するもの:trigger 既定 150000、value は 50,000 以上、トリガ型は input_tokens のみ、instructions を入れると既定の要約プロンプトを丸ごと置換(オンデマンド型は 16,384 文字まで)、pause_after_compaction 既定 false、Compaction requires an additional sampling step, which contributes to rate limits and billing、トップレベル使用量に compaction 反復は入らず iterations を合計する、Leaving the summarized messages in front of a signed block is a 400 error、compaction と context_management は同一リクエスト不可、token counting エンドポイントは compaction を無視、要約範囲内の画像・文書・container_upload・取得済み URL はブロック置換後に消える。
⚠️ 注意
「圧縮すると逆に高くなる」というコミュニティの言い回しを事実として書けない。公式は追加サンプリングが課金対象だと言う一方、Prompt caching の節では Compaction works well with prompt caching と書き、ブロックに cache_control を置く例と、システムプロンプト末尾に区切りを置いてキャッシュ流出を防ぐ手順を示す。さらに過去の compaction ブロックを再適用する分は追加コストなしとも書く。正しい要約は「無料ではないが、損かどうかは区切りの置き方次第」。その他:全面 beta、要約失敗でも 200 で content 空、その呼び出しは課金され iterations に載る、一時的なサーバー障害は再試行可能な 529 overloaded_error(error.details.error_code が compaction_unavailable)、task budget の remaining を compaction と同時に送ると 400。(上記 4 点は 2026-09-21 に公式ドキュメントで確認したもの。仕様が動けばこの節を書き直す)
共通点と差異
共通点
どちらもサーバー側で要約し、compaction ブロックを返し、リクエストで指定したモデルで要約を書く(Current limitations に安いモデルへ差し替えられないと明記)。どちらも追加サンプリングが発生し rate limit と課金に入る。どちらもまだ beta。
差異
トリガが違う:閾値型はリクエスト途中で発火し、1 リクエスト内で複数回走ることもある(server tools 併用時は各サンプリング反復の開始時にチェック)。オンデマンド型は要約用に 1 リクエストを費やし、回答を生成しない。ブロック位置が違う:閾値型は要約対象の後ろ、署名ブロックは対象そのものを置換。対応プラットフォームも違い、公式はオンデマンド型を available on the Claude API but not on Amazon Bedrock or Google Cloud と書く。
どう使うか
5 手。1)通りを選ぶ:通常リクエスト内で API に文脈を管理させるなら閾値型。いつ圧縮するか自分で決めたい、要約中に止められない、直近ターンとその思考を保ちたいならオンデマンド型。2)ヘッダー:オンデマンド型は要約を頼むリクエストとその後の署名ブロックを載せる全リクエストに compact-2026-09-04 が必要。ヘッダーを忘れると compaction: Extra inputs are not permitted という汎用バリデーションエラーになり、ヘッダーには触れないと公式が注記している。3)戻し:ブロックを先頭に置き、要約された消息を削除。4)課金の数え方を直す:usage.iterations の合計を見る。5)要約が返らない場合:tools 付きでは内部要約ステップでツールを呼んでしまい content が null になることがある。公式の対策は instructions でツール呼び出しを明示的に禁じる。
QCode 上では
コンパクションは Messages API のパラメータと beta ヘッダーの話で、当サイトのスイッチではない。当方は自経路上で実課金リクエストを投げて検証していない(テストアカウントは読取専用)。したがって挙動の説明は上流 Anthropic 側の領域とし、当サイトを介した動作の保証はしない。2026-09-19 に当サイト目録を照合:beta 対応一覧の claude-opus-5、claude-sonnet-5、claude-fable-5、claude-fable-5-1、claude-opus-4-8、claude-sonnet-4-6 はすべて /models 公開一覧に在り、直近 30 日の課金呼び出しは各 59,161 / 222,137 / 12,904 / 15,728 / 22,007 / 151,645 件。claude-mythos-5 と claude-mythos-5-1 も一覧に在るが同期間 0 件。beta は予告なく変わるため、本ページは可用性の不変を約束しない。
よくある質問
2 つの beta を同時に使えますか?
使えません。How it fits with the rest of the API に You can't send compaction and context_management on the same request と明記され、閾値型(compact_20260112)は署名ブロックを載せたリクエストでは動かないと続く。どちらか一方を選ぶ。
圧縮すれば節約になりますか?
それ自体ではならない。公式は追加サンプリングが rate limits と billing に効くと書き、トップレベルの input_tokens / output_tokens にそれが入らないので usage.iterations を合計する。後続リクエストの文脈長は減るが、損益はキャッシュ区切りの置き方と、過去のブロック再適用が追加課金なしという事実で決まる。
署名ブロックはどこに置きますか?
messages の先頭に置き、要約された消息は削除する。ブロックは signature を含めて返ってきたまま保持。公式は要約対象を署名ブロックの前に残すと 400 だと言う。以後の全リクエストに compact-2026-09-04 が必要。
ブロックが空で返るのはなぜ?
多くはツール干渉。Current limitations に、tools 付きリクエストでは内部要約ステップでモデルが要約の代わりにツールを呼ぶことがあり、そのとき compaction ブロックの content が null になるとある。対策は instructions でツール呼び出しを禁じテキストだけ出させる。要約失敗でも 200・content 空で、その呼び出しは課金され iterations に載る点も注意。
QCode で試せるモデルは?
beta 対応一覧のうち claude-opus-5、claude-sonnet-5、claude-fable-5、claude-fable-5-1、claude-opus-4-8、claude-sonnet-4-6 は当サイトの /models 公開一覧に在る(2026-09-19 確認。30 日の課金呼び出し 59,161 / 222,137 / 12,904 / 15,728 / 22,007 / 151,645 件)。圧縮は API パラメータで、当サイトが代行する設定ではない。beta は変わり得るので不変は約束しない。
安いモデルで要約できますか?
できない。公式は The model specified in your request is used for summarization. There is no option to use a different (for example, cheaper) model for the summary と書く。変えられるのは instructions(既定を丸ごと置換するカスタム要約プロンプト)とトリガ閾値だけ。完全に制御したいならサーバー側圧縮をやめてクライアント側要約に切り替える。
出典
Anthropic《Compaction》https://platform.claude.com/docs/en/build-with-claude/compaction(2026-09-21 に公式 .md 形式を直接取得、HTTP 200。Compatibility / Parameters / Understanding usage / Prompt caching / Current limitations / Compact on demand 各節)および《Claude release notes》https://platform.claude.com/docs/en/release-notes/overview(同法。2026-02-05 と September 14, 2026 の項目を逐字引用)。当サイトの目録と 30 日課金呼び出しは自社照合(/models 公開スナップショット+課金台帳)。
関連記事
Context Engineering 完全指南 2026
圧縮はコンテキスト設計の一部。こちらは手法の話で API パラメータは扱わない。
会話の途中でツールを増減する
会話中途の指示とツール変更が要約にどう扱われるかはそちらに詳しい。
effort is not supported when thinking is disabled
思考ブロックと履歴変更のエラー系。保持ターンの思考も前後一致が必要なのは同じ。
本ページは Anthropic の公開ドキュメントを転記し、両者に提携関係はない。パラメータ名・既定値・エラーコード・引用文は 2026-09-21 取得版に基づく。beta は予告なく変わる。圧縮が割に合うか否かの断定はしない(公式は追加サンプリングの課金とキャッシュ区切りの挙動しか書いていない)。QCode は API 接続を提供するが、上流の beta 状態を変えない。