CLAUDE LABEN
FORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられていますFORK — Claude Code 2.1.212で/forkの挙動が変わりました。会話を新しいバックグラウンドセッションへ複製し、作業を続けたまま並走できます。従来のセッション内サブエージェントは/subtaskに移りましたLIMITS — WebSearchの呼び出しがセッション単位で既定200回に制限されました。サブエージェントの起動も既定200回が上限で、暴走した検索・委譲のループを止められますMCPBG — 2分を超えるMCPツール呼び出しは自動的にバックグラウンドへ移り、セッションが固まらなくなりました。しきい値はCLAUDE_CODE_MCP_AUTO_BACKGROUND_MSで調整できますPLANFIX — プランモードがtouchやrmといったファイルを変更するBashコマンドを、許可プロンプトもcanUseToolコールバックも通さずに実行してしまう不具合が修正されましたSONNET5 — Claude Sonnet 5は導入価格として入力100万トークンあたり2ドル、出力10ドルで提供中です。8月31日を過ぎると3ドルと15ドルに戻りますIPO — Anthropicが早ければ10月の株式公開を視野に、引受銀行が投資家との面談を組み始めたと報じられています
記事一覧/API & SDK
API & SDK/2026-05-29上級

Claude API のプロンプトキャッシュを 5m と 1h で二段に分ける — TTL を分けるとコストは下がり運用は安定する

Anthropic API の cache_control には 5 分と 1 時間という 2 種類の TTL があります。これを「静的な前提情報は 1h、可変な few-shot は 5m」と二段に分けて運用する設計を、私の本番ワークロードで観測した数値とともに整理しました。

claude-api81prompt-caching12cache-control2ttlcost-optimization25production87

プレミアム記事

import { Callout } from '@/components/ui/callout';

Anthropic の Messages API には cache_control というフィールドがあって、長いプロンプトの先頭部分をサーバー側にキャッシュさせられます。私自身、Claude Lab を含む Dolice Labs の 4 サイトと、2014 年から並行運用している iOS / Android アプリ群(累計 5,000 万ダウンロードを超えました)で、毎日かなりの量の API リクエストを投げています。そのコストを真面目に下げようとした時、いちばん効いたのは「キャッシュを入れるかどうか」ではなく、「TTL を何種類使い分けるか」でした。

cache_control の TTL は、既定の 5m(5 分)と、ttl: "1h" を指定したときの 1 時間の 2 種類が選べます。これを「全部 5m で動かしておけばいい」と考えていたのが、半年前の私です。請求書をきちんと内訳ベースで眺めた結果、静的な前提情報は 1h で、可変な few-shot だけ 5m に分ける ことで、書き込みコストとヒット率のバランスが大きく変わると気づきました。本稿はその設計プロセスと、私の手元で動いている本番ワークロードでの観測値を、なるべくそのままの形で残すための実装メモです。

なぜ「単一 TTL」では効きが悪いのか

プロンプトキャッシュを最初に入れたとき、私は以下のような構造で書いていました。

# 改善前: すべて 5m TTL の単一キャッシュ
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=2048,
    system=[
        {
            "type": "text",
            "text": SYSTEM_PROMPT,  # 約 4,500 トークン
            "cache_control": {"type": "ephemeral"},  # 5m
        }
    ],
    tools=TOOLS,        # 約 1,200 トークン
    messages=[
        {"role": "user", "content": user_text},
    ],
)

これでも一見ちゃんと効いているように見えました。usage.cache_read_input_tokens が動き出すと「あぁ、ヒットしているんだな」と安心してしまいます。ただ、しばらく運用してログを集計すると、2 つの問題が浮かびました。

ひとつは、夜間に 5 分以上アクセスが空くたびに、4,500 トークン分の cache_creation_input_tokens が再課金されていた ことです。書き込み単価は通常入力の 1.25 倍ですから、これが 1 日に何十回も走ると、せっかくのキャッシュ節約がだいぶ食われます。私のアプリの一部はオフピーク帯にユーザーが散在するタイプで、特に響きました。

もうひとつは、可変な few-shot を後ろに足したくなる場面で、「キャッシュブレークポイントは 1 リクエストに最大 4 つまで」という制約のなかで、可変分のせいで静的分の境界が変わって書き直されてしまう ケースが出てきたことです。これは公式ドキュメントの読み方が甘かった私のミスで、後述の二段構成にすると自然に解消しました。

1h TTL が刺さるのは「読まれ続ける静的層」だけ

cache_controlttl: "1h" を渡すと、キャッシュ期間が 1 時間に延びます。代わりに 書き込みコストが通常の 2 倍(5m 版の約 1.6 倍)になります。ここを取り違えると、1h を入れるほど高くつくという逆転が起きます。

私は次のような単純なルールで判断しています。

書き込みコスト増 < ヒットによる節約
↓
平均アクセス間隔 < 1h、かつ夜間/休日にアクセスがゼロにならない層
↓
1h TTL の出番

逆に、ユーザーごとに変わる few-shot や、リアルタイムに差し込む RAG コンテキストは、そもそも 1h 持たないし、持たせる意味もない ので 5m のままにします。

私の運用の場合、1h を入れる価値があったのは次の 3 つでした。

  • 長いシステムプロンプト(ペルソナ・出力フォーマット・安全ガード)
  • tools の JSON Schema 定義(特に 5 つ以上ツールがある時)
  • 全ユーザー共通のドメイン知識(ナレッジベースの「コア部分」)

逆に 5m のままで十分だったのが、ユーザーごとに切り替える few-shot や、その日のキャンペーン情報など、1 セッション内では効くが翌日には別物に差し替わる 系のコンテンツです。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
system / tools を 1h TTL、可変の few-shot を 5m TTL に分ける二段キャッシュ設計の具体実装
cache_read_input_tokens と cache_creation_input_tokens の比から TTL の妥当性を判断する監視メトリクス
私の本番ワークロード(複数の iOS/Android アプリ運用と Dolice Labs 4 サイト並行運用)でコストが約 42% 下がった配分パターン
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

API & SDK2026-06-24
毎朝のバッチでプロンプトキャッシュが毎回ミスしていた — 1時間TTLを延命するウォーミング間隔と損益分岐の出し方
数時間おきに走る定期実行では、1時間TTLのプロンプトキャッシュでも毎回コールドミスします。中身を変えずにTTLを延命するウォーミングの間隔をTTLから逆算し、読み取りコストを織り込んだ損益分岐を式で出す方法を、4サイトの自動生成パイプラインの実測とともにまとめました。
API & SDK2026-04-26
Claude API のプロンプトキャッシュで月額コストを半分にした実装メモ
Claude API のプロンプトキャッシュを正しく設計すると、長文プロンプトを使う本番ワークロードは月額コストが体感で半分以下になります。実例ベースで設計のコツとつまずきどころをまとめました。
API & SDK2026-07-13
Claude API の同時実行を束ねる — シングルフライトで重複推論とキャッシュ・スタンピードを防ぐ
同一プロンプトが同時に何度も Claude へ飛ぶ重複推論を、シングルフライト(request coalescing)で束ねる設計です。プロセス内・分散環境の実装、ジッター付きリトライ、負のキャッシュまで実測付きでまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →