解决claude code调用gpt接口不命中缓存问题
- 内容介绍
- 文章标签
- 相关推荐
把 /v1/messages 请求转换成 /v1/responses 请求时,除了转换:
- model
- system
- messages
- tools
这些结构字段外,还应该处理好缓存相关参数。
其中一个关键点是:
prompt_cache_key 要写到 /v1/responses 的请求体顶层
最终生成的 /v1/responses 请求体应该是这种形式:
{
“model”: “gpt-5.4”,
“input”: […],
“stream”: true,
“prompt_cache_key”: “xxx”
}
这里的 prompt_cache_key 是 请求体参数,需要显式写进去。
———
这个值怎么得到
转换 /v1/messages 时,可以按这个顺序生成 prompt_cache_key:
1. 先取现成的会话标识
优先从请求头读取:
- session_id
- conversation_id
如果有值,就可以直接作为缓存标识来源。
———
2. 如果没有,再从 metadata.user_id 里提取
有些 /v1/messages 请求会在 body 里带:
{
“metadata”: {
“user_id”: “…”
}
}
这里的 metadata.user_id 通常包含稳定的会话信息,可以从中解析出 session 相关值。
———
3. 如果需要,可以基于这些值生成稳定的 key
例如基于:
- model + metadata.user_id
生成一个稳定 UUID 或 hash,把它作为 prompt_cache_key。
把 /v1/messages 请求转换成 /v1/responses 请求时,除了转换:
- model
- system
- messages
- tools
这些结构字段外,还应该处理好缓存相关参数。
其中一个关键点是:
prompt_cache_key 要写到 /v1/responses 的请求体顶层
最终生成的 /v1/responses 请求体应该是这种形式:
{
“model”: “gpt-5.4”,
“input”: […],
“stream”: true,
“prompt_cache_key”: “xxx”
}
这里的 prompt_cache_key 是 请求体参数,需要显式写进去。
———
这个值怎么得到
转换 /v1/messages 时,可以按这个顺序生成 prompt_cache_key:
1. 先取现成的会话标识
优先从请求头读取:
- session_id
- conversation_id
如果有值,就可以直接作为缓存标识来源。
———
2. 如果没有,再从 metadata.user_id 里提取
有些 /v1/messages 请求会在 body 里带:
{
“metadata”: {
“user_id”: “…”
}
}
这里的 metadata.user_id 通常包含稳定的会话信息,可以从中解析出 session 相关值。
———
3. 如果需要,可以基于这些值生成稳定的 key
例如基于:
- model + metadata.user_id
生成一个稳定 UUID 或 hash,把它作为 prompt_cache_key。

