CLAUDE LABEN
MODEL — 9月1日に Claude Fable 5.1 と Claude Mythos 5.1 が公開されました。両者は同じモデルで、違うのはセーフガードの水準だけですPRICING — キャッシュ読み取りが100万トークンあたり $1.00 から $0.25 へ、75%下がりました。一般的な用途で約25%、エージェント用途で最大45%のコスト減とされていますCAVEAT — 安くなったのは cache read だけで、入力 $10・出力 $50 は据え置きです。同じ文脈を何度も読み返す設計ほど効き、単発の短い問い合わせではほとんど変わりませんAPI — モデルIDは claude-fable-5-1。Claude API に加えて AWS・Google Cloud・Microsoft Azure から呼べますEFFORT — 低〜中の effort では Fable 5 と同等以上、高い effort ではさらに上回る位置づけです。同じ結果を安く取るか、同じ費用で遠くまで行くかの選択になりますCLI — Claude Code v2.1.263 は9月6日公開で、CLI の修正1件のみ。クラッシュ低減とコマンド安定性の改善で、新機能はありませんMODEL — 9月1日に Claude Fable 5.1 と Claude Mythos 5.1 が公開されました。両者は同じモデルで、違うのはセーフガードの水準だけですPRICING — キャッシュ読み取りが100万トークンあたり $1.00 から $0.25 へ、75%下がりました。一般的な用途で約25%、エージェント用途で最大45%のコスト減とされていますCAVEAT — 安くなったのは cache read だけで、入力 $10・出力 $50 は据え置きです。同じ文脈を何度も読み返す設計ほど効き、単発の短い問い合わせではほとんど変わりませんAPI — モデルIDは claude-fable-5-1。Claude API に加えて AWS・Google Cloud・Microsoft Azure から呼べますEFFORT — 低〜中の effort では Fable 5 と同等以上、高い effort ではさらに上回る位置づけです。同じ結果を安く取るか、同じ費用で遠くまで行くかの選択になりますCLI — Claude Code v2.1.263 は9月6日公開で、CLI の修正1件のみ。クラッシュ低減とコマンド安定性の改善で、新機能はありません
記事一覧/API & SDK
API & SDK/2026-09-07中級

キャッシュ読み取りが 75% 安くなっても、請求の下がり方は構成しだいで 10 倍違います

Fable 5.1 と Mythos 5.1 でキャッシュ読み取りの倍率が 0.1 から 0.025 へ変わりました。自分のトークン内訳から削減幅を先に見積もる手順と、倍率を定数で持つコードの直し方をまとめます。

claude-api82prompt-caching15pricing3cost-optimization28token-usage

9月の頭に単価表を貼り替えようとして、手が止まりました。入力も出力も、数字がひとつも動いていなかったのです。

動いていたのは単価ではなく、掛け算のほうでした。私はコスト集計のヘルパーに cacheRead = input * 0.1 と書いており、その 0.1 を「モデルによらない定数」だと思い込んでいました。単価表を見に行く習慣はあっても、倍率を見に行く習慣がなかったのです。

Lab のサイト群では、長めの運用ガイドラインを毎ターン読み直させる作りの処理をいくつも回しております。その手のワークロードほど今回の変更が効くはずで、逆にほとんど効かない形もあるはずだ——そう考えて、貼り替える前に自分で計算してみました。

変わったのは単価ではなく、読み取りの倍率です

プロンプトキャッシュの料金は、ベース入力単価に対する倍率で決まります。ここが今回動きました。

キャッシュ操作倍率有効期間
5 分キャッシュ書き込みベース入力の 1.25 倍5 分
1 時間キャッシュ書き込みベース入力の 2 倍1 時間
キャッシュ読み取り(ヒット)ベース入力の 0.1 倍
Fable 5.1 と Mythos 5.1 のみ 0.025 倍
直前の書き込みと同じ

つまり Fable 5.1 のキャッシュ読み取りは 100 万トークンあたり $1.00 から $0.25 になりました。ベース入力の $10、出力の $50、書き込みの $12.50 と $20 はそのままです。倍率の例外は現時点でこの 2 モデルだけで、Opus 5 も Sonnet 5 も Haiku 4.5 も 0.1 倍のままです。数字の出どころは Claude Platform の料金ページ にあります。

ここを「Fable 5.1 は 75% 安い」と要約してしまうと、読んだ人の見積もりが壊れます。安くなったのは請求書のうち cache read の行だけ です。

自分の構成でいくら下がるかを、先に計算します

見積もりに要るのは、レスポンスの usage に入っている 4 つの数字だけです。推測ではなく、直近のリクエストから実際の内訳を取ってきます。

# usage の例(1 リクエスト分)
usage = {
    "input_tokens": 2000,               # キャッシュに乗らなかった新しい入力
    "cache_read_input_tokens": 60000,   # キャッシュから読んだ分
    "cache_creation_input_tokens": 0,   # 今回書き込んだ分
    "output_tokens": 1500,
}
 
def request_cost(usage, base_in, base_out, read_mult, write_mult=1.25):
    """1 リクエストの費用をドルで返します。単価は 100 万トークンあたり。"""
    return (
        usage["input_tokens"] * base_in
        + usage["cache_read_input_tokens"] * base_in * read_mult
        + usage["cache_creation_input_tokens"] * base_in * write_mult
        + usage["output_tokens"] * base_out
    ) / 1_000_000
 
before = request_cost(usage, 10.0, 50.0, read_mult=0.1)
after = request_cost(usage, 10.0, 50.0, read_mult=0.025)
print(f"{before:.6f} -> {after:.6f}  ({(before - after) / before:.1%} 減)")
# 0.155000 -> 0.110000  (29.0% 減)

倍率を引数にしてあるところが要点です。ここを定数で埋めてしまうと、モデルを切り替えた瞬間に見積もりが静かにずれます。落ちてくれないぶん、たちが悪いのです。

効き方が 10 倍違った三つの形

同じ関数に、性質の違う 3 つのリクエストを通してみました。単価は Fable 系の $10 / $50 で揃えてあります。

ワークロードの形cache read / 新規入力 / 出力0.1 倍0.025 倍削減
長い前提を毎ターン読み直すエージェント60,000 / 2,000 / 1,500$0.1550$0.110029.0%
分類・要約のバッチ20,000 / 500 / 300$0.0400$0.025037.5%
短い前提で長文を書かせる生成8,000 / 1,000 / 4,000$0.2180$0.21202.8%

いちばん上といちばん下で、削減幅がおよそ 10 倍違います。割引率はどちらも同じ 75% です。

差を作っているのは、cache read が総額に占める割合でした。エージェント型では 38.7%、バッチでは 50.0%、生成型では 3.7% です。出力トークンが主役の構成では、入力側をいくら削っても請求書はほとんど動きません。

割引率を決めるのは単価表ですが、請求書を決めるのは自分のトークンの内訳です。 発表の数字をそのまま自分の削減幅として期待していた最初の見積もりは、私の場合、生成寄りの処理でまるで届きませんでした。

倍率を定数で持っているコードを、表に移します

直し方は難しくありません。単価と一緒に倍率もモデル単位で持たせるだけです。

PRICING = {
    # base_in, base_out, cache_read_mult(100 万トークンあたりのドル)
    "claude-fable-5-1": (10.0, 50.0, 0.025),
    "claude-fable-5":   (10.0, 50.0, 0.1),
    "claude-opus-5":    (5.0,  25.0, 0.1),
    "claude-sonnet-5":  (2.0,  10.0, 0.1),
    "claude-haiku-4-5-20251001": (1.0, 5.0, 0.1),
}
 
def cost_for(model, usage):
    if model not in PRICING:
        # 未知のモデルを 0 円で素通りさせないこと
        raise ValueError(f"単価未登録のモデルです: {model}")
    base_in, base_out, read_mult = PRICING[model]
    return request_cost(usage, base_in, base_out, read_mult)

自分のリポジトリで危ないところを探すなら、この一行で足ります。

grep -rn "0\.1\s*\*\|\* 0\.1\b" --include='*.py' --include='*.ts' src/ | grep -i cache

私は「単価は変わるが倍率は変わらない」と思い込んでいたぶん、単価表だけを外部化して倍率をコードに残していました。いまは 単価と倍率を同じ表に置き、片方だけ更新できない形 にしています。

5 分と 1 時間の選び方は、これでは変わりません

ここは意外でした。読み取りが 4 分の 1 になったのだから、TTL の判断も動くだろうと考えたのです。

呼び出しの間隔が 5 分を超えて 1 時間以内に収まる場合、5 分キャッシュは毎回書き直しになります。1 時間あたりの呼び出し回数を K として損益が並ぶ点を解くと、こうなります。

読み取り倍率分岐点 K(1 時間あたりの呼び出し回数)結論
0.1 倍1.65 回2 回以上なら 1 時間 TTL が有利
0.025 倍1.61 回2 回以上なら 1 時間 TTL が有利

分岐点はほとんど動きません。書き込みの倍率(1.25 倍と 2 倍)が支配的だからです。同じく「キャッシュを入れて元が取れるか」も、どちらの倍率でも読み取り 1 回で回収できます。

読み取りの単価だけを見て TTL を引き直そうとしたのは、私の勇み足だったのかもしれません。安くなった行と、設計を決めている行は別だったのです。

読み取りが安くなったのは、すでにキャッシュが効いている構成の請求を薄くする変化であって、キャッシュ設計そのものを引き直す理由にはなりませんでした。ヒット率が伸びていない状態でモデルだけ替えても、効果は出ません。設計の側から入るなら、プロンプトキャッシュで月額コストを半分にした実装メモ にヒット率の測り方をまとめてあります。

次の一歩

まずは直近 1 日ぶんのレスポンスから cache_read_input_tokens を合計し、それが総コストの何割を占めているかだけ出してみてください。その割合に 0.75 を掛けた数字が、モデルを移したときに期待できる上限です。

私はこの一手間を惜しんで、貼り替えたあとに「思ったより変わらない」と首をかしげるところでした。読んでくださってありがとうございます。少しでも見積もりの手戻りが減れば嬉しく思います。

シェア

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

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

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

もしこの記事がお役に立ちましたら、チップ(¥150)で応援いただけると大変励みになります。広告なしでの運営を続けるため、皆さまのご支援が大きな力になっています。

関連記事

API & SDK2026-06-29
Claude API の Context Editing を入れたらエージェントが同じ調査を繰り返したとき — クリア境界とキャッシュ無効化を計測する運用メモ
Context Editing でツール結果を自動クリアしたら、エージェントが直前に読んだ内容を忘れて同じツールを呼び直し、キャッシュも毎回壊れてコストが上がった。沈黙する劣化を計測ログで切り分け、trigger・keep・clear_at_least を実測で決める運用メモです。
API & SDK2026-06-24
ツール定義を一行直しただけで、キャッシュが丸ごと作り直しになりました — cache_control ブレークポイントの置き場所
ヒット率が突然ゼロに張り付いた原因は、揮発するブロックを安定したブロックより上流に置いていたことでした。prefix キャッシュのカスケード失効の仕組みと、安定→揮発でブロックを並べ替え、4つしかない cache_control ブレークポイントをどこに置くかを実装と判断表で整理します。
API & SDK2026-06-24
毎朝のバッチでプロンプトキャッシュが毎回ミスしていた — 1時間TTLを延命するウォーミング間隔と損益分岐の出し方
数時間おきに走る定期実行では、1時間TTLのプロンプトキャッシュでも毎回コールドミスします。中身を変えずにTTLを延命するウォーミングの間隔をTTLから逆算し、読み取りコストを織り込んだ損益分岐を式で出す方法を、4サイトの自動生成パイプラインの実測とともにまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます