reasoning_effort(Chat Completions)或 reasoning.effort(Responses),Phaseo 就会在不重启 Claude 提示词缓存的情况下更改其强度。只要你在每个请求中原样发回 Claude 的推理内容,代码的其他部分就无需改动。
Phaseo 会继续向 Claude 发送对话第一个请求的强度,并把每次更改作为强度标记添加到你的新消息之后。标记之前的所有内容保持不变,因此 Claude 会从缓存中读取。如果你丢弃了推理内容,Phaseo 就会改为更改顶层强度,Claude 会重新处理从其第一条回复开始的所有内容,而不是从缓存中读取。
Phaseo 如何保住缓存
只有当请求的开头逐字节相同时,Claude 才会读取已缓存的对话,而顶层强度就是这个开头的一部分。Anthropic 的逐消息强度改为在messages 内部更改级别,方法是使用一条 content 为空并带有 output_config.effort 的 system 消息。Phaseo 会替你写入这些标记:
Phaseo 在请求之间不存储任何内容。Claude 的每条回复都以一个推理条目结尾,记录该回复运行时的级别,Phaseo 会根据你发回的条目,在相同位置重建之前的每一个标记:
你发回的消息永远不会被更改。这些标记只存在于 Phaseo 发送给 Claude 的请求中。
原样发回推理内容
强度条目没有文本。在 Chat Completions 上,它是reasoning_details 中的最后一个 reasoning.encrypted 条目:
output 中的最后一个 reasoning 项,其 id 以 rs_effort_ 开头:
在代码中更改强度
把 Claude 的整条回复追加到你的对话中,然后在下一个请求中设置你想要的强度。顶层的cache_control 会为 Claude 路由开启缓存;参见提示词缓存。
Chat Completions
Responses
Phaseo 不存储响应,因此请在input 中发送完整对话,包括每一个 output 项。
Anthropic Messages
在/v1/messages 上,你需要自己发送标记:一条 content 为空并带有 output_config.effort 的 system 消息。在每个请求中保持顶层的 output_config.effort 不变,并在后续请求中让每个标记保持在原位。Phaseo 会添加 mid-conversation-output-config-2026-07-01 beta 请求头,因此你无需发送它。
cURL
- 紧跟在一条用户消息之后: Claude 对该消息的回复使用新级别。
- 其他任何位置,例如上例中位于 Claude 的回复和你的下一条消息之间:新级别从你的下一条消息开始生效。
更改何时会重启缓存
在以下情况下,Phaseo 会像对其他提供商一样更改顶层强度:- 推理内容缺失。 你最新的 Claude 回复没有强度条目,因为你的客户端丢弃了
reasoning_details或reasoning项。 - 更改发生在工具循环的步骤之间。 你的最新消息只包含工具结果,因此标记只能从你的下一条消息开始生效。Phaseo 会更改顶层强度,使这一步以你要求的级别运行,之后的更改会再次使用标记。
- 请求没有设置强度,或关闭了推理。 在每个请求中发送
reasoning_effort或reasoning.effort。"none"和reasoning.enabled: false会关闭推理。 - 路由不支持此功能。 参见支持的模型。
支持的模型
在其他所有路由上(包括 Azure 上的 Claude),强度更改都会作为顶层强度发送。
检查缓存是否保住
读取更改之后那个请求的缓存计数:Chat Completions 上的usage.prompt_tokens_details.cached_tokens、Responses 上的 usage.input_tokens_details.cached_tokens,以及 Anthropic Messages 上的 usage.cache_read_input_tokens。用量与定价字段列出了所有字段。
我们于 2026 年 11 月 11 日在 anthropic/claude-haiku-5.5 上对同一个包含五个请求的 Chat Completions 对话进行了测量,一次发回强度条目,一次不发回。强度依次为 high、high、low、low、high,并且第二条消息中带有一份 3,400 token 的文档: