CLAUDE LABEN
RELEASE — Claude Code v2.1.246 が8月26日に公開されました。Bash の allow ルールでサブコマンドの前にワイルドカードを置いた書き方に、起動時警告が出ますPERMISSIONS — /permissions に Auto モードタブが加わりました。既定が auto になった後、どの操作が自動で通りどこで止まるかを一箇所で確認できますMEMORY — 長い対話セッションでメモリが際限なく増える問題が修正されました。サブエージェントのツール結果が、直近の表示ウィンドウを外れた時点で解放されますMCP — headless とリモートのセッションで、受信メッセージに割り込まれたツール呼び出しが「完了・出力なし」ではなく明示的な interrupted エラーとして報告されますRUNNER — claude self-hosted-runner に --proxy-authorization-command と --proxy-authorization-file が追加されました。接続ごとに認証ヘッダを発行する egress プロキシ向けですLIMITS — 週次上限50%増の延長は8月31日までです。Pro・Max・Team とシート課金の Enterprise が対象で、残り4日となりましたRELEASE — Claude Code v2.1.246 が8月26日に公開されました。Bash の allow ルールでサブコマンドの前にワイルドカードを置いた書き方に、起動時警告が出ますPERMISSIONS — /permissions に Auto モードタブが加わりました。既定が auto になった後、どの操作が自動で通りどこで止まるかを一箇所で確認できますMEMORY — 長い対話セッションでメモリが際限なく増える問題が修正されました。サブエージェントのツール結果が、直近の表示ウィンドウを外れた時点で解放されますMCP — headless とリモートのセッションで、受信メッセージに割り込まれたツール呼び出しが「完了・出力なし」ではなく明示的な interrupted エラーとして報告されますRUNNER — claude self-hosted-runner に --proxy-authorization-command と --proxy-authorization-file が追加されました。接続ごとに認証ヘッダを発行する egress プロキシ向けですLIMITS — 週次上限50%増の延長は8月31日までです。Pro・Max・Team とシート課金の Enterprise が対象で、残り4日となりました
記事一覧/API & SDK
API & SDK/2026-07-13上級

Extended Thinking を入れたのに精度は横ばい、請求だけ伸びていたとき — 思考トークンの限界効用を計測して budget を決める運用メモ

budget_tokens を大きめに固定したまま、精度が変わらないのに請求だけ伸びていく。思考トークンを台帳に残し、budget を1段上げたときの正解率の伸びを限界効用として計測して、根拠のある値に落とす運用メモです。

claude8extended-thinking7budget-tokenscost-optimization27observability15

プレミアム記事

個人開発で運用しているアプリの、夜間に走らせている問い合わせ分類のジョブが、ある朝から先月比で請求を倍近く押し上げていました。ログを追うと、モデルを Opus 4.8 に上げたついでに budget_tokens を「余裕を持たせて」32,000 に固定したのが効いていました。精度指標はほとんど動いていません。深く考えさせた分だけ請求が増え、答えは変わらない。思考に払ったお金の大半が、結論に届いていなかったわけです。

この記事は、その後 budget を根拠のある値に落とし込むまでに手元で組んだ計測の記録です。要点は一つで、budget は「大きいほど安全」でも「小さいほど得」でもありません。1段上げたときに正解率がどれだけ伸びるかを測れば、払うべき額はほぼ自動的に決まります。

budget_tokens は上限であって固定費ではない

最初に誤解を解いておきます。budget_tokens はモデルが内部思考に使ってよいトークンの上限であり、毎回この値を消費するわけではありません。簡単なタスクなら数百トークンで思考を切り上げ、難しいタスクのときだけ上限近くまで伸びます。

設定誤解実際の挙動
budget=32,000毎回32,000トークン分課金される難タスクに遭遇したときだけ深く使う。平易な入力では数百で止まる
budget=4,000常に安く済む難タスクで思考を打ち切り、浅い結論を返すことがある

つまり budget を上げる行為は「難タスクに遭遇したときに深く考えてよい余裕を渡すこと」です。ここを取り違えると、「請求が怖いから一律で小さくする」判断で、本来解けるはずの問題を解けないモデルに変えてしまいます。逆に、私のように「怖いから一律で大きく」しても、平易なタスクでは余裕が使われず、難タスクでだけじわじわ効いてくる。どちらの固定値も、計測なしでは外します。

from anthropic import Anthropic
 
client = Anthropic()
 
resp = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=8000,
    thinking={"type": "enabled", "budget_tokens": 10000},  # 思考に使ってよい上限
    messages=[{"role": "user", "content": "次の SQL を最適化してください: ..."}],
)
 
# 実際に消費された思考トークンを必ず記録する
usage = resp.usage
print(usage.thinking_tokens, usage.output_tokens)

response.usage.thinking_tokens が実消費量です。ここを毎リクエスト残すかどうかで、後のチューニングが「計測」になるか「勘」になるかが分かれます。

まず思考トークンを台帳に残す

budget を触る前に、本番の思考消費を台帳化します。平均だけを見るとロングテールを見落とすので、p50・p95・到達率の3つを残してください。到達率とは、thinking_tokens が budget の 95% 以上に達したリクエストの割合です。ここが高いほど「思考を途中で打ち切られている」疑いが強まります。

import json, time, statistics
from pathlib import Path
 
LEDGER = Path("thinking_ledger.jsonl")
 
def call_and_log(client, *, model, budget, messages, task_type):
    resp = client.messages.create(
        model=model, max_tokens=8000,
        thinking={"type": "enabled", "budget_tokens": budget},
        messages=messages,
    )
    u = resp.usage
    rec = {
        "ts": time.time(), "task_type": task_type,
        "budget": budget,
        "thinking_tokens": u.thinking_tokens,
        "output_tokens": u.output_tokens,
        "hit": u.thinking_tokens >= budget * 0.95,  # 上限に張り付いたか
    }
    with LEDGER.open("a") as f:
        f.write(json.dumps(rec) + "\n")
    return resp
 
 
def summarize(task_type):
    rows = [json.loads(l) for l in LEDGER.read_text().splitlines()]
    rows = [r for r in rows if r["task_type"] == task_type]
    tt = sorted(r["thinking_tokens"] for r in rows)
    if not tt:
        return None
    p50 = statistics.median(tt)
    p95 = tt[min(len(tt) - 1, int(len(tt) * 0.95))]
    hit_rate = sum(r["hit"] for r in rows) / len(rows)
    return {"n": len(rows), "p50": p50, "p95": p95,
            "max": tt[-1], "hit_rate": round(hit_rate, 3)}
 
# 例: {"n": 214, "p50": 1180, "p95": 5200, "max": 9900, "hit_rate": 0.02}

台帳が100件を超えたあたりから、タスク種別ごとの輪郭が見えてきます。分類タスクで budget=32,000 を設定していたのに p95 が 5,200 だった、というのはよくある光景です。残りの 26,800 は「使われないかもしれない上限」として抱えているだけで、平易な入力では課金もされません。問題は、難タスクが混じったときにだけ深く使い、その深さが答えに効いていない場合です。それを次に測ります。

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

この記事の続きを読む

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

この記事で得られること
思考トークンの実消費を p50/p95/到達率で台帳化し、勘に頼らず budget を決める計測コード
budget を1段上げたときの正解率の伸びを『1,000思考トークンあたりの限界効用』として測る評価ハーネス
到達率は高いのに精度が伸びないとき、budget不足とタスク過負荷を切り分ける判断基準
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-07-19
プロンプトキャッシュを入れたのに請求が下がらなかったとき — cache_read を計測してヒット率の穴を塞ぐ運用メモ
cache_control を付けたのに Claude API の請求が下がらない。原因を推測で潰す前に cache_read と cache_creation を毎リクエスト記録し、ヒット率の穴を非決定プレフィックス・TTL 失効・しきい値未満の3系統に切り分ける運用メモです。
API & SDK2026-06-23
Claude API のプロンプトキャッシュが本番で静かにヒットしなくなるとき — TTLと節約額の実測メモ
プロンプトキャッシュは導入直後だけ効いて、本番では知らぬ間にヒットしなくなることがあります。完全一致プレフィックスを静かに壊す5つの要因、5分と1時間TTLの選び方、節約額を推測でなく実測に変える計装、変更頻度の階段で置くブレークポイント設計までを運用目線でまとめました。
API & SDK2026-04-29
Claude API のセマンティックキャッシュを本番投入する — 類似プロンプト判定としきい値設計、汚染防止
類似プロンプトへの応答を再利用するセマンティックキャッシュをClaude APIの本番に組み込む設計を一気通貫で解説します。embeddingと類似度しきい値の決め方、マルチテナント分離、キャッシュ汚染を防ぐガード層、フォールバックと劣化モード、効果を測る観測性の指標まで踏んだ地雷とともに紹介します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →