OpenAI API: 1日中使う指示は12時間キャッシュ、会話は30分キャッシュに分ける ※モデル・料金
GPT-5.6 以降の Responses API では、キャッシュの最低保持時間を "30m"(既定)と "12h" から選べる。1日を通して使う共通の指示・ツール定義・参考資料だけを "12h" にし、変わりやすい会話部分は "30m" のままにすると、数時間おきに動くエージェントでも安いキャッシュ読み取り料金が効く。
どんな場面で使う?
- 常駐型のエージェント(定期実行・数時間おきの問い合わせ)で、毎回同じ長いシステムプロンプトやツール定義を送っているとき
- 30分以上間が空くと毎回キャッシュが切れて、書き込み料金を払い直しているとき
料金の考え方(公式ガイド 2026-10 時点)
| 設定 | 最低保持 | 書き込み | 読み取り |
|---|---|---|---|
"30m"(既定) | 30分 | 通常入力の1.25倍 | 0.1倍(GPT-6.1 Sol は0.05倍) |
"12h" | 12時間 | 通常入力の2.5倍 | 同上 |
- 倍率は「通常料金への上乗せ」ではなく書き込み時の合計料金
- 30分キャッシュで書き込み1回+読み取り9回なら、キャッシュなしの10倍に対して2.15倍で済む(公式の例)
- 12時間キャッシュは書き込みが倍高いので、「30分以上空けて何度も同じ前半を使う」ときだけ得になる
手順
- 1日中変わらない部分(指示・ツール・参考資料)をプロンプトの先頭に集める
prompt_cache_optionsでモードとリクエスト全体の既定を決め、先頭ブロックの区切りだけ"12h"で上書きする
json
{
"model": "gpt-6.1-sol",
"prompt_cache_options": { "mode": "explicit", "ttl": "30m" },
"input": [
{ "role": "developer", "content": [
{ "type": "input_text", "text": "共通の指示・参考資料…",
"prompt_cache_breakpoint": { "mode": "explicit", "ttl": "12h" } } ] },
{ "role": "user", "content": [
{ "type": "input_text", "text": "このセッションの文脈…",
"prompt_cache_breakpoint": { "mode": "explicit" } },
{ "type": "input_text", "text": "今回の質問(キャッシュしない)" } ] }
]
}explicitモードでは最後の区切りより後ろは書き込み料金がかからない。毎回変わる質問は区切りの後ろに置く
注意点
- 区切りより前は全部その区切りの保持時間で課金される。
"30m"の区切りの後ろに"12h"を置くと、前半まで12時間料金で書き込まれる(公式の表)。12時間にしたいものほど前に置く - 既に30分で入っている部分を12時間に上げると、12時間の書き込みとして払い直しになる
- 最低保持時間は「読み取り料金の対象になる期間」の保証で、必ず速くなる保証ではない。毎分15リクエストを超えると別のマシンに振られて外れることがある
- GPT-5.5 以前のモデルは別パラメータ
prompt_cache_retention(in_memory/24h)。こちらは今回の設定と無関係 - 出典の告知では、ChatGPT のアプリ dots のような常駐エージェントを想定例にしている
- 関連: Claude Code のプロンプトキャッシュ:席を立つ前に一言、途中でモデルや MCP を変えない ※モデル・料金、Claude API: キャッシュ診断で「どこが変わってキャッシュが外れたか」を特定する