> ## Documentation Index
> Fetch the complete documentation index at: https://docs.bettertoken.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# BetterToken はキャッシュ課金に対応していますか？

> プロンプトキャッシュ、キャッシュヒットのフィールド、プロトコルによる違い、キャッシュ済み Token の確認方法を説明します。

## 要点

リクエストにキャッシュ割引が適用されるかどうかは、上流モデル、API プロトコル、リクエスト形式によって決まります。BetterToken は、上流モデルから返された利用情報に基づいて使用量を記録し、表示します。

上流モデルがプロンプトキャッシュに対応し、レスポンスにキャッシュフィールドを返す場合は、レスポンスの使用量または呼び出しログでキャッシュ済み Token を確認できます。キャッシュの動作はモデルによって異なります。すべてのモデルにキャッシュ割引が自動で適用されるとは限りません。

## キャッシュ課金とは

プロンプトキャッシュを使うと、上流モデルは複数のリクエストで繰り返される安定したプレフィックスを再利用できます。キャッシュが機能すると、入力コンテキストの一部に、より低いキャッシュ済み Token の料金が適用される場合があります。

次の用途に適しています。

* 長いシステムプロンプト
* 固定されたプロジェクト指示
* 大規模で安定したドキュメントコンテキスト
* 複数ターンのコーディングタスクで繰り返すリポジトリ指示
* 同じルールと出力形式を使うバッチ処理

キャッシュを使うからといって、すべてをプロンプトに含める必要はありません。動的コンテンツ、タイムスタンプ、ランダム ID、ユーザー固有の入力は通常、リクエストの後半に配置します。

## プロトコルによる違い

| シナリオ                  | 一般的な仕組み                                                         |
| --------------------- | --------------------------------------------------------------- |
| OpenAI 互換             | 一部のモデルは安定したプレフィックスを自動でキャッシュし、レスポンスの使用量にキャッシュ済み Token が含まれる場合がある |
| Anthropic 互換 / Claude | 一部のモデルでは、キャッシュの利点を得るために明示的な `cache_control` マーカーが必要             |

同じ Claude モデルでも、呼び出すプロトコルによって動作が異なる場合があります。Claude Code または Anthropic 互換 API を頻繁に使う場合は、まず Anthropic ネイティブの仕組みによるキャッシュを確認してください。

## キャッシュが機能したか確認する

レスポンスの `usage` フィールドまたはダッシュボードの呼び出し記録を確認します。フィールド名は API 形式によって異なります。

| API 形式                  | 一般的なキャッシュフィールド                                                        |
| ----------------------- | --------------------------------------------------------------------- |
| OpenAI Chat Completions | `usage.prompt_tokens_details.cached_tokens`                           |
| OpenAI Responses API    | `usage.input_tokens_details.cached_tokens`                            |
| Anthropic Messages API  | `usage.cache_read_input_tokens` / `usage.cache_creation_input_tokens` |

値が 0 より大きい場合は通常、リクエストの一部でキャッシュが使われています。フィールドがない場合は、モデルが未対応、プロトコルが値を返さない、キャッシュがヒットしていない、または外部ツールが生の使用量を表示していない可能性があります。

## キャッシュヒット率を上げる方法

1. 安定したコンテンツをプロンプトの先頭付近に配置します。
2. ユーザー固有の入力や頻繁に変わる入力は後半に配置します。
3. 安定したプレフィックス内に、タイムスタンプ、ランダム ID、変化する指示を含めないでください。
4. 可能であれば、同じ種類のタスクには同じモデルとプロトコルを使います。
5. Claude ネイティブ形式では、モデルのドキュメントに従って、キャッシュ対象のコンテンツブロックに `cache_control` を追加します。
6. バッチ処理では、合計コストを見積もる前に小さなサンプルを実行し、使用量フィールドを確認します。

## よくある間違い

* すべてのモデルがキャッシュ割引に自動で対応すると考える。
* キャッシュがヒットするとリクエスト全体が無料になると考える。
* モデルを頻繁に切り替え、キャッシュを再利用できなくする。
* OpenAI 互換形式で Claude を呼び出し、Claude ネイティブのキャッシュフィールドが返ると考える。
* Token の合計だけを確認し、キャッシュ済み Token、キャッシュ読み取り、キャッシュ作成の各フィールドを確認しない。

## BetterToken について

BetterToken の課金と使用量表示は、実際のリクエスト、上流の利用情報、現在のモデル価格に基づきます。キャッシュが適用されたか確認するには、モデルのドキュメント、レスポンスの使用量フィールド、ダッシュボードの呼び出し記録を合わせて確認してください。

## 関連ドキュメント

* [Claude Code が多くの Token を使う理由](/ja/faq/token-cost/claude-code-token-usage)
* [max\_tokens とは何ですか？設定しない場合はどうなりますか？](/ja/faq/model-calling/max-tokens)
* [Base URL の設定方法](/ja/faq/model-calling/base-url-config)
* [OpenAI 互換 API と Anthropic 互換 API の違い](/ja/faq/concepts/openai-compatible-vs-anthropic-compatible)
