Skip to content

原文(日本語に翻訳)

セッション中にツールスキーマのバイトが変化することで引き起こされていた長時間セッションでのプロンプトキャッシュミスを修正しました。

原文(英語)

Fixed prompt cache misses in long sessions caused by tool schema bytes changing mid-session

概要

Claude Codeのプロンプトキャッシュ機能において、長時間のセッション中にツールスキーマのバイト表現がわずかに変化してしまい、キャッシュミスが発生してAPIコールのコストが増大する問題がありました。本来キャッシュされるべきプロンプトが再送信されることで、APIトークンの無駄遣いと遅延が発生していました。v2.1.89でツールスキーマの安定化が図られ、長時間セッションでのキャッシュ効率が向上しました。

基本的な使い方

プロンプトキャッシュは自動的に管理されますが、効果を確認するには:

bash
# キャッシュヒット率を確認する(デバッグモード)
claude --debug "タスクを実行してください"

# API使用量の確認
/stats
# cache_read_input_tokens の値が高いほどキャッシュが効いている

実践例

長時間セッションでのキャッシュ効果確認

bash
# 長いセッションでの作業後にstatisticsを確認
/stats

# 出力例(修正後):
# Cache read tokens: 150,000   ← キャッシュから読み込まれたトークン
# Cache write tokens: 5,000    ← 新規にキャッシュされたトークン
# Regular tokens: 10,000       ← キャッシュされなかったトークン

# 修正前: 長時間セッションでは cache_read_tokens が少なかった
# 修正後: キャッシュが効率的に再利用される

コスト最適化への影響

python
# Anthropic API でのプロンプトキャッシュ使用例
import anthropic

client = anthropic.Anthropic()

# ツールスキーマを含むリクエスト
response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=1024,
    tools=[
        {
            "name": "get_weather",
            "description": "Get weather information",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {"type": "string"}
                }
            }
        }
    ],
    messages=[{"role": "user", "content": "天気を教えてください"}]
)

# 使用量の確認
print(response.usage.cache_read_input_tokens)   # キャッシュヒット
print(response.usage.cache_creation_input_tokens)  # キャッシュ作成

注意点

  • プロンプトキャッシュはAnthropicのAPIで自動管理されます
  • キャッシュミスはAPIコストの増大とレスポンス速度の低下につながります
  • 長時間セッション(30分以上)での影響が大きかったです
  • 修正により、MCPサーバーやカスタムツールが多い環境での恩恵が特に大きくなります

関連情報