プロンプトを「画像」で送るとClaudeのトークンが最大70%減る — pxpipeの仕組みと落とし穴

はじめに

LLMエージェントを日常的に回していると、意外なところに固定費がある。Claude Code のようなツールは、毎ターン数万トークンにおよぶ「ほとんど変わらないシステムプロンプト+ツール定義」を送信し続けている。会話が長くなるほど、この“変わらない前置き”が請求書を静かに膨らませる。

そこに登場したのが pxpipe という OSS だ。発想は乱暴なほどシンプルで、「テキストを PNG 画像にして送れば、トークンが激減する」。開発者の検証では 全体コストで59〜70%削減、あるセッションでは $42.21 が $6.06 に落ちたという。本記事では、なぜこんな手品が成立するのか、その仕組みと、見落とされがちな代償までを掘り下げる。

何が起きているのか — 画像面積課金という「隙」

pxpipe はローカルで動くプロキシだ。Claude Code などから送られるリクエストを横取りし、システムプロンプト・ツール定義・古い会話履歴といった静的なテキストを PNG 画像へレンダリングしてから API に転送する。

なぜこれでトークンが減るのか。鍵は Anthropic の課金仕様にある。テキストは「文字数(ほぼ1文字=1トークン)」で従量課金されるのに対し、画像は画像内のピクセル面積で固定トークン数が決まる。つまり、同じ情報でも「画像として1枚に詰め込む」ほうが、トークン単価あたりの情報密度を高くできる。開発者の見積もりでは、およそ 3.1文字ぶんの情報を画像トークン1つに押し込める計算になる。

具体的な数字が象徴的だ。約48,000文字にわたるシステムプロンプトとツールドキュメントが、1枚の高密度な PNG(通常1573×1280px前後)に収まる。テキストなら約68Kトークンを消費する“固定スラブ”が、画像化により初回ターンで 約3.5K画像トークンまで縮む。これが「25,000トークンが約2,700トークンへ」といった圧縮率の正体だ。

技術的な背景 — DeepSeek-OCRの「光学圧縮」とキャッシュ設計

この手法は、まったくの思いつきではない。2025年末に DeepSeek が示した optical context compression(光学的コンテキスト圧縮) という研究が下敷きになっている。DeepSeek-OCR は、文書を画像として処理することで 最大10倍の圧縮を、情報の約97%を保持したまま実現できると報告した。「テキストは画像として扱ったほうが、長文脈を効率よく運べる」という洞察を、pxpipe は課金最適化という実利に落とし込んだわけだ。

しかし、実装は見た目ほど単純ではない。pxpipe の真価はプロンプトキャッシュとの噛み合わせにある。Anthropic のキャッシュは「読み込み(cache read)が通常の0.10倍課金」という強力な仕組みだが、pxpipe はここに乗るために2つの制約と戦っている。

第一に 決定論的レンダリング。同じ入力からは必ずバイト単位で同一の PNG を生成しなければならない。1ピクセルでもズレればキャッシュヒット率がゼロに落ちるためだ。そこで Math.random の排除、PNG メタデータからのタイムスタンプ除去、グリフアトラスのビルド時生成といった徹底ぶりで「バイト同一の出力」を保証している。

第二に キャッシュ制御ブレークポイントの枠。Anthropic は1リクエストにつき cache_control を4つまでしか許さず、Claude Code は既に3つ使っている。pxpipe は残る1つを最後の画像ブロックに割り当て、しかも ttl: '1h' を必須とする(5分TTLだと後続の制御と順序衝突を起こす)。加えて、静的スラブだけでなく、長い <system-reminder> や肥大化した tool_result(Bashの標準出力など)も画像化して二次的に削る。ただし is_error: true の結果は Anthropic 仕様により画像化しない、といった細かな例外も踏まえている。

エンジニアへの影響 — どこで効き、どこで裏切るか

まず押さえるべきは、削減が効くのは「静的かつ長い」プレフィックスと、長時間まわすセッションだという点だ。初回ターンは必ずキャッシュ作成コストを負担するため旨味は小さく、第2ターン以降で0.10倍リードの利益が積み上がる。開発者いわく 65〜73%は構造的な上限で、画像キャッシュが温まり tool_result が大きく育った長期セッションでこそ最大化する。逆に、単発の短いやり取りでは恩恵は限定的だ。

そして最大の代償は 誤読(ビジョンモデルの読み違い) である。テキストを目で読むのではなく画像として“見る”以上、視覚エンコーダが文字を取り違えるリスクが常につきまとう。とりわけ ID・ハッシュ・APIキーのようなランダム文字列は誤認識されやすい。しかも厄介なのは、モデルが読み違えても平然と処理を続ける 「沈黙の幻覚(silent hallucination)」 として現れることだ。報告ではOpusクラスやGPT系でも数%オーダーの誤認識率が観測されており、正確性が命の文字列を含む用途には向かない。

したがって、実務的な使いどころはこう整理できる。多少の読み落としが許容できる、静的で膨大な背景知識 ——大規模なシステム仕様書、コーディング規約、プロジェクト全体の設計ドキュメントなど——を安く常時供給したいケースだ。プロンプトキャッシュが数分で切れてしまう長インターバルの開発作業や、内容が動的に変わる RAG の背景知識供給とも相性がよい。一方、認証情報・識別子・厳密なコード片をそのまま渡す必要がある場面では、素直にテキストで送るべきだ。

まとめ

pxpipe は「LLMの課金モデルの隙を突く」という点で、プロンプトエンジニアリングの新しい一面を見せてくれる。要点は3つ。第一に、画像は面積課金という仕様上、長い静的テキストを画像化するとトークンが最大70%減る。第二に、その効果はプロンプトキャッシュと決定論的レンダリングを丁寧に噛み合わせて初めて安定する。第三に、代償は「誤読という沈黙の幻覚」であり、ランダム文字列や厳密性が要る場面では使えない。

コスト最適化の武器が増えたのは確かだが、これは万能スイッチではなく用途を選ぶ手術道具だ。DeepSeek-OCR が示した「テキストを光学的に運ぶ」潮流が、今後モデル側にネイティブ実装されていくのか——そこがこの手品が定着するかどうかの分水嶺になる。

今日のその他のニュース

  • Claude Sonnet 5 リリース、GPT-4.5は引退:6/30 に Anthropic が Sonnet 5 を公開。Sonnet 4.6 比で推論・ツール利用・コーディングが大幅向上し、ワークホースティアとして Microsoft 365 Copilot などが採用。uhyo 氏の独自ベンチでは React 習熟度が Opus 4.8 に匹敵と報告された。一方 OpenAI は 6/26 に GPT-4.5 を ChatGPT から引退し、GPT-5.5 へルーティングしている。

  • shadcn/ui がデフォルトを Radix → Base UI へ:人気の React コンポーネント集 shadcn/ui が、内部プリミティブのデフォルトを Radix UI から Base UI に変更(Hacker News 253pt)。新規プロジェクトの生成物が変わるため、既存プロジェクトへの追従時は差分に注意したい。

  • 中国 Z.ai が開発エージェント ZCode を投入(月$18):GLM-5.2 ベースの Claude Code 対抗エージェントを低価格で展開。コーディングエージェント市場の競争が一段と激化している。

ソース