コンテンツへスキップ
MIYA·AI·LAB / 生成AI 実機検証ログ LLM · Claude Code · MLX · Ollama
AI MiyaAILab_
  • // Lab
  • // 全記事
JA / EN
← Miya-Gadget
PC 生成AI

【検証】AIのAPI代は本当に減らせる?コンテキスト圧縮ツール「Headroom」を導入して実測してみた

2026年6月2日 · Shichinomiya
【検証】AIのAPI代は本当に減らせる?コンテキスト圧縮ツール「Headroom」を導入して実測してみた

こんにちは、七宮さん(@shichinomiya_s)です。

Claude CodeやCursorのようなAIエージェントを使っていると、地味に効いてくるのがトークン代。ログを読ませたり、巨大なJSONを返させたり、ファイルを丸ごと読ませたりするたびに、コンテキストがどんどん膨らんでAPI料金が積み上がっていきます。

そんな中で見つけたのが、「AIエージェントが読むコンテキストを60〜95%圧縮する」と謳うOSS、Headroom。本当にそんなに減るの?品質は落ちないの?というわけで、実際に自分のMacに導入して、ログ・JSON・コード・RAGの4種類のデータで圧縮率を実測してみました。

結論から言うと、「魔法のように何でも95%オフ」ではないが、嵩むデータは確かにガッツリ減る。今回の実測ではコードが79.8%、JSONが59.2%、ログが31.0%削減。多段ツール呼び出しのデバッグセッション全体では47.5%(約2.8万トークン)削減できました。一方で、自然文(RAG文書)は既定では圧縮されないなど、クセもあります。数字とあわせて正直にレビューします。

Table of Contents

Toggle
  • Headroomとは何か — 「AIが読むもの」を圧縮する
  • 導入してみる — pip一発、ただし依存は重い
  • 検証環境
  • 検証結果① データ種別ごとの削減率
  • 検証結果② デバッグセッション全体ではどうなる?
  • 検証結果③ 品質は保たれるのか・処理は重くないのか
  • 検証結果④ 結局いくら浮くのか — コスト試算
  • 「ゼロコード導入」のプロキシも触ってみた
  • 仕組みのキモ — 「最新は守り、嵩むものを削る」
  • 向いている用途・注意点
  • まとめ
  • あわせて読みたい

Headroomとは何か — 「AIが読むもの」を圧縮する

Headroomは、AIエージェントが処理するあらゆる入力(ツール出力・ログ・RAGチャンク・ファイル・会話履歴)をLLMに送る前に圧縮するツールです。Python(とRust)で書かれており、LLMプロバイダー(Anthropic / OpenAI / Bedrockなど)に依存しません。

ポイントは「ただ削るだけ」ではないこと。複数の専用コンプレッサーをパイプラインで組み合わせ、データの種類に応じて圧縮方法を切り替えます。

  • SmartCrusher — JSONや構造化データを圧縮
  • CodeCompressor / Kompress — AST(構文木)を理解したコード圧縮
  • CacheAligner — プロバイダーのKVキャッシュヒット率を最適化
  • CCR(Compress-Cache-Retrieve) — 圧縮前のオリジナルをローカル保存し、必要なときだけheadroom_retrieveツールで取り出せる可逆圧縮

使い方は4通り。①ライブラリ(compress()を呼ぶ)、②プロキシ(localhost:8787に挟むだけのゼロコード導入)、③CLIラップ(Claude Code / Cursor / Aiderに直接統合)、④MCPサーバー。今回は再現性の高い①ライブラリで定量計測し、②プロキシも触ってみました。

導入してみる — pip一発、ただし依存は重い

動作要件はPython 3.10以上。今回はmacOS(Apple Silicon)にPython 3.11の仮想環境を作って入れました。

python3.11 -m venv venv
source venv/bin/activate
pip install "headroom-ai[all]"

コマンド自体は一発ですが、[all]を付けるとPyTorch・Transformers・onnxruntime・sentence-transformersなど機械学習系の依存がごっそり入ります。インストールされたパッケージは200個以上、pipキャッシュは2GB超。回線によっては数分〜十数分かかるので、ここは覚悟しておきましょう。導入されたバージョンはheadroom-ai 0.22.3でした。

ライブラリの使い方はシンプルで、メッセージ配列を渡すだけです。

from headroom import compress

result = compress(messages, model="claude-sonnet-4-5")
print(result.tokens_before, "->", result.tokens_after)
print(f"{result.compression_ratio:.1%} 削減")
# 圧縮済みメッセージは result.messages に入る

検証環境

項目内容
マシンApple Silicon Mac(macOS / Darwin 25.4.0)
Python3.11(venv)
Headroomheadroom-ai 0.22.3(OSS版・ライセンスキーなし)
トークン計測Headroomが対象モデルのトークナイザで算出(主軸: Claude Sonnet、比較: GPT-4o)
設定デフォルトのまま(特別なチューニングなし)

テストデータは機密を含まない汎用ダミーを決定論的に生成しました。AIエージェントが実際に「読まされる」典型として、次の4種類を用意しています。

  • ログ — 冗長なアプリ/サーバーログ(約2.5万トークン)
  • JSON — 大きめのREST APIレスポンス(約3.3万トークン)
  • コード — Pythonソースコード
  • RAG文書 — 技術ドキュメントの断片集(約1.2万トークン)

そして重要なのが、これらを「ツール結果(tool result)」としてエージェントの会話に渡した点。Headroomは「いま進行中のタスク(最新のユーザー発言)」は壊さないよう保護し、嵩んだツール出力を狙って圧縮する設計だからです(後述)。

検証結果① データ種別ごとの削減率

まずは4種類を個別に圧縮した結果(Claude Sonnet・デフォルト設定)。構造化されていて冗長なデータほど、よく縮みます。

データ種別ごとのトークン削減率
データ元トークン圧縮後削減率効いた変換
コード87717779.8%kompress(AST)
JSON33,48513,67659.2%SmartCrusher系
ログ25,42317,54831.0%mixed
RAG文書11,81811,8180.0%(素通り)protected

圧巻はコードの79.8%。AST(構文木)を理解したkompressが効いて、877トークンが177トークンまで凝縮されました。JSONも約6割減、ログも3割減と、エンジニアが普段エージェントに読ませがちなデータほど効果が大きいのは嬉しいポイントです。

一方でRAG文書(自然文)は0%、まったく圧縮されませんでした。これはバグではなく仕様で、Headroomは意味が壊れやすい自然文プロースを既定では保護し、構造的な冗長性がある(=安全に縮められる)データを優先して圧縮します。「何でも縮む」わけではない、という正直なところです。

検証結果② デバッグセッション全体ではどうなる?

個別データだけでなく、実際の調査フローを1本の会話として再現してみました。「タイムアウトが多発→ログ取得→API状態確認→コード確認→原因特定」という、複数のツールを順に呼ぶよくあるパターンです。

セッション全体のトークン削減

結果は59,742トークン → 31,358トークン、47.5%削減(約2.8万トークン節約)。会話の中で積み上がった3つのツール結果(ログ・JSON・コード)がそれぞれ圧縮され、最新のユーザー質問とアシスタントの推論テキストはしっかり保持されていました。長い調査セッションほど、この効果は効いてきます。

ベンチマーク実行結果
実際のベンチマーク実行結果。

検証結果③ 品質は保たれるのか・処理は重くないのか

「圧縮で大事な情報が消えたら本末転倒」なので、圧縮後のテキストにキーワードが残っているかを確認しました。

  • ログ → 根本原因のTimeoutErrorは圧縮後も残存 ✅
  • JSON → 特定ユーザーのemail値は残存 ✅
  • RAG → キーワードKubernetesは残存(そもそも素通り)✅
  • コード → kompressで別表現に変換されるが、CCRがオリジナルを保存し、LLMはheadroom_retrieveで必要時に全文を取り戻せる(可逆)

処理時間(レイテンシ)も計測しましたが、1回の圧縮は1ms以下〜数十ms程度。LLMの応答時間(秒単位)に比べれば事実上ゼロで、ここで詰まる心配はなさそうです。

検証結果④ 結局いくら浮くのか — コスト試算

削減トークンを実際の料金で円換算してみます。「エージェントが1日100回、今回のような文脈を読む(月3,000回)」と仮定し、入力料金(Claude Sonnet $3 / Opus $15 / GPT-4o $2.5・各100万トークンあたり、1ドル=157円)で計算しました。

月間コスト節約額
モデル削減前削減後節約額
Claude Sonnet¥101,175¥61,068¥40,107 / 月
Claude Opus¥505,875¥305,342¥200,533 / 月
GPT-4o¥84,313¥50,890¥33,422 / 月

あくまで仮定の試算ですが、高単価なOpusを多用するなら月20万円規模の節約もあり得る計算。エージェントをヘビーに回す現場ほど、効いてくるのが分かります(実際には出力トークンやキャッシュも絡むので、目安として捉えてください)。

「ゼロコード導入」のプロキシも触ってみた

ライブラリ以外に、既存のコードを一切変えずに挟むだけのプロキシ方式もあります。起動コマンドは1行です。

headroom proxy --port 8787

# Claude Code から使う場合
ANTHROPIC_BASE_URL=http://127.0.0.1:8787 claude
# OpenAI互換クライアントの場合
OPENAI_BASE_URL=http://127.0.0.1:8787/v1 your-app

起動すると、Anthropic / OpenAI / Google へのルーティング、token(圧縮優先)/cache(プレフィックスキャッシュ優先)の2モード、ヘルスチェックやPrometheusメトリクスのエンドポイントまで、しっかり用意されているのが確認できました。サブスク勢(API未契約)向けには、headroom mcp installでClaude CodeにMCPサーバーを入れ、headroom_retrieveで圧縮内容を取り戻す使い方も用意されています。

なお正直にお伝えすると、今回の筆者の環境ではプロキシが待受ポートを開かず、E2E(実際のAPI転送)までは検証できませんでした(APIキー未設定だったこともあり)。ただ、プロキシもライブラリと同じ圧縮エンジンを内部で使うため、本記事の削減率はそのまま当てはまると考えてよいでしょう。導入の手軽さ重視ならプロキシ、確実性重視ならライブラリ、という棲み分けです。

仕組みのキモ — 「最新は守り、嵩むものを削る」

実測中にいちばん納得したのが、Headroomのルーターの賢さです。デフォルトでは、

  • ユーザーの最新メッセージ・直近のコンテキストは保護(進行中タスクを壊さない)
  • 積み上がったツール結果や古い文脈を狙って圧縮

という挙動になっています。試しに「全部圧縮する(compress_user_messages=True, protect_recent=0)」設定にすると、保護されていたデータも圧縮され、JSONは単体で約52%削減できました。安全性を取るか圧縮率を取るか、設定で振れるのは実用的です。

向いている用途・注意点

向いている人:

  • Claude CodeやCursorで大きなログ・JSON・コードを頻繁に読ませる人
  • API課金でエージェントをヘビーに回していて、トークン代を本気で削りたい人
  • 長い調査・デバッグセッションでコンテキストが膨らみがちな人

注意点:

  • 依存が重い(ML系で2GB超)。お手軽ツールではない
  • 自然文/RAGプロースは既定では圧縮されない(意味保持を優先)
  • プロキシ方式は環境によって動作確認が必要(筆者環境では待受せず)
  • 効果はデータの種類に強く依存。構造化・冗長なデータほど効く

まとめ

「トークンを95%削減」というキャッチコピーだけ見ると盛っているように感じますが、実際に測ってみると「狙った種類のデータは確かに大幅に縮む」ことが分かりました。

  • コード79.8% / JSON59.2% / ログ31.0%削減(Claude Sonnet・デフォルト・実測)
  • 多段デバッグセッション全体で47.5%削減(約2.8万トークン)
  • 重要情報は保持され、コードはCCRで可逆
  • 圧縮の処理オーバーヘッドは事実上ゼロ
  • 自然文は既定で素通り。万能ではないが、ツボにハマると強い

AIエージェントをAPI課金でガンガン使っていて「トークン代が地味に痛い」という人は、一度ライブラリ版で自分のワークロードを測ってみる価値は十分にあります。導入はpip install "headroom-ai[all]"の一発。OSSなので無料で試せます。

あわせて読みたい

生成AI関連の検証ログはこちらもどうぞ。

  • Claude Code Windows版で消せない「nul」ファイルを削除する方法
  • Claude CodeでAPI連携!天気予報アプリを作ってみた
  • Claude Codeでメール自動送信!定型業務を完全自動化
  • 【検証】Qwen 3.6 をMacローカルで実測 — M1 Max 64GBでMoE 35Bは”27Bの3.7倍速”だった
前の記事 【お知らせ】iPhone・ゲーム機の買取価格を一括比較できるサイトを作ってみた。
次の記事 【検証】Qwen 3.6 をMacローカルで実測 — M1 Max 64GBでMoE 35Bは”27Bの3.7倍速”だった

Related Posts

Claude Codeで作る初めてのプログラム!対話しながらゲームを作ってみた

Claude Codeで作る初めてのプログラム!対話しながらゲームを作ってみた

Claude Code Windows版で消せない「nul」ファイルを削除する方法

Claude Code Windows版で消せない「nul」ファイルを削除する方法

Claude Codeの使い方完全ガイド!Windows初心者でも5分で始められるAI開発環境

Claude Codeの使い方完全ガイド!Windows初心者でも5分で始められるAI開発環境

【検証】M1 Pro / M1 MaxでローカルLLMベンチマーク!MLX vs Ollama、Qwen 2.5〜3.5を徹底比較

【検証】M1 Pro / M1 MaxでローカルLLMベンチマーク!MLX vs Ollama、Qwen 2.5〜3.5を徹底比較

コメントを残す コメントをキャンセル

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

七宮さん

七宮さん

PC・ガジェット好きのブロガー。日々の発見を共有しています。

@shichinomiya_s

人気の記事

  • Claude Codeでメール自動送信!定型業務を完全自動化
  • Claude Codeで本格的なブログシステムを構築!学んだ技術を全て活用
  • Claude Codeの使い方完全ガイド!Windows初心者でも5分で始められるAI開発環境
  • Claude Code Windows版で消せない「nul」ファイルを削除する方法
  • Claude Codeで作る初めてのプログラム!対話しながらゲームを作ってみた

カテゴリー

  • PC
  • おしらせ
  • おでかけ
  • ガジェット
  • レンタルサーバー・VPS
  • 回線
  • 家電
  • 旅行
  • 海外通販
  • 生成AI
  • 自転車
  • 車

MiyaAILab

話題の生成AIを実際に手元で検証する研究ログ。モデル・ツール・サービスを、ベンチマークから実用性まで自分で確かめて発信しています。

Lab

  • AI Lab トップ
  • 生成AI 全記事
  • ← Miya-Gadget 本体

Latest

  • 【検証】Tesla V100 32GBでローカルLLMはどこまで動く?Qwen 3.6実測ベンチマーク — 中古13万円でMoE 98.8 tok/s
  • 【検証】Darkbloomは本当に稼げる?Macを1日放置した収益を大公開!
  • 【検証】「LLM API費を50〜80%削減」のTokenTamerを実測 — Pythonは本当に80%減、でも効くのは「再読み込み」だけ
  • 【検証】話題のClaude Code用skill「ADHD」は本当に賢くなるのか — 単発と実測対決
© 2026 Miya AI Lab — a section of Miya-Gadget. miyagadget.page