按消息设置 effort
使用系统消息在对话中途更改 effort 级别,同时保留提示缓存。
按消息更改 effort 会为对话的后续轮次设置新的 effort 级别,而不会更改请求的顶层值,因此缓存的前缀仍然匹配。
更改 effort 级别
要在对话中途更改级别:
- 在
messages中添加一条role: "system"消息,将content留空,并在output_config.effort中设置新的 effort 级别。 - 发送
mid-conversation-output-config-2026-07-01beta 标头。 - 保持顶层值不变。
以下示例将顶层值保持为 high,并在一次常规的后续交互中降至 low:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=4096,
output_config={"effort": "high"},
messages=[
{
"role": "user",
"content": "Plan a migration from SQLite to PostgreSQL in three short steps.",
},
{
"role": "assistant",
"content": "1. Export the SQLite data. 2. Create the PostgreSQL schema. 3. Import the data and verify row counts.",
},
# 仅含 effort 的系统消息:新级别从下一个用户轮次开始生效。
{"role": "system", "content": [], "output_config": {"effort": "low"}},
{"role": "user", "content": "Summarize the plan in one sentence."},
],
betas=["mid-conversation-output-config-2026-07-01"],
)
for block in response.content:
if block.type == "text":
print(block.text)该消息的位置决定新级别何时开始生效:
- 紧跟在包含新输入的
user轮次之后:Claude 对该轮次的回复会使用新的级别。 - 在其他任何位置,例如前面示例中那样位于一个
assistant轮次与下一个user轮次之间:新的级别从下一个包含新输入的user轮次开始生效。
仅包含 tool_result 块的 user 轮次不算新输入。
新的级别会一直有效,直到后续消息更改它为止。
请将该消息放在您已发送的所有内容之后,并在后续请求中将其保留在原位。不要将其插入到您已发送的轮次之前,之后也不要移动或删除它。在支持 preserved thinking(保留思考)的模型上,任何此类更改都会使该消息之后 assistant 轮次中的思考块失效。API 如何处理无效块说明了接下来会发生什么。
如果它与一条有内容的 system 消息相邻,则两条消息都必须遵循对话中途系统消息的放置规则。
使用 Amazon Bedrock InvokeModel API 时,请在请求体的 anthropic_beta 数组中发送 beta 值,而不是通过标头发送。有关在该平台上支持按消息设置 effort 的模型,请参阅 Bedrock 上的对话中系统消息。
错误
- 如果没有 beta 标头,按消息设置的
output_config会返回 400 错误:messages.N.output_config: Extra inputs are not permitted,其中N是该system消息在messages中的索引。 - 如果带有 beta 标头,不支持按消息设置 effort 的模型(例如 Claude Fable 5)会返回 400 错误:
output_config.effort requires a model that supports per-turn effort; this model does not。在 Amazon Bedrock 上,这些模型以及 Claude Opus 5 则会返回Extra inputs are not permitted。 - 在使用
thinking: {"type": "between_tools"}的 Claude Sonnet 5.5 以及使用thinking: {"type": "disabled"}的 Claude Haiku 5.5 上,effort 级别无法在对话中途更改。在这些情况下,带有新级别的按消息设置的output_config.effort会返回 400 错误。要为每个轮次设置不同的 effort,请使用 adaptive thinking(自适应思考)。
按消息设置还是顶层设置 effort
相比在请求之间更改顶层值,建议优先使用按消息设置 effort。按消息更改不会影响其之前的所有内容,因此缓存的前缀仍然匹配。更改顶层值会使缓存重新开始。在 Claude Fable 5.1 上,更改顶层值对模型的引导效果也不太可靠。模型之前的回复是在先前级别下生成的,它往往会与这些回复保持一致。
可用性
Claude API
- 状态
- Beta
- API
- Messages API
- Managed Agents 不支持
- Beta 请求头
- 需要
- 模型
- Claude Fable 5.2、Fable 5.1
- Claude Mythos 5.2、Mythos 5.1
- Claude Opus 5.5、Opus 5
- Claude Sonnet 5.5
- Claude Haiku 5.5
Amazon Bedrock
- 状态
- Beta
- API
- Messages API
- Beta 请求头
- 需要
- 模型
- Claude Fable 5.1
- Claude Mythos 5.1
- Claude Opus 5.5
Amazon Bedrock (bedrock-runtime)
- 状态
- Beta
- API
- Messages API
- Beta 请求头
- 需要
- 模型
- Claude Fable 5.2、Fable 5.1
- Claude Mythos 5.2
- Claude Opus 5.5
- 注意
在请求正文的
anthropic_beta数组中发送 beta 值。
Claude Platform on AWS
- 状态
- Beta
- API
- Messages API
- Managed Agents 不支持
- Beta 请求头
- 需要
- 模型
- Claude Fable 5.2、Fable 5.1
- Claude Opus 5.5、Opus 5
- Claude Sonnet 5.5
- Claude Haiku 5.5
Claude Models on Google Cloud (Anthropic managed)
- 状态
- Beta
- API
- Messages API
- Managed Agents 不支持
- Beta 请求头
- 需要
- 模型
- Claude Fable 5.2、Fable 5.1
- Claude Mythos 5.2
- Claude Opus 5.5、Opus 5
- Claude Sonnet 5.5
- Claude Haiku 5.5
Claude Models on Google Cloud (Google managed)
- 状态
- Beta
- API
- Messages API
- Beta 请求头
- 需要
- 模型
- Claude Fable 5.2、Fable 5.1
- Claude Mythos 5.2、Mythos 5.1
- Claude Opus 5.5、Opus 5
- Claude Sonnet 5.5
- Claude Haiku 5.5
Microsoft Foundry (hosted on Azure)
- 状态
- Beta
- API
- Messages API
- Beta 请求头
- 需要
- 模型
- Claude Opus 5.5、Opus 5
- Claude Sonnet 5.5
- Claude Haiku 5.5
Microsoft Foundry (hosted on Anthropic)
- 状态
- Beta
- API
- Messages API
- Beta 请求头
- 需要
- 模型
- Claude Fable 5.2、Fable 5.1
- Claude Mythos 5.2、Mythos 5.1
- Claude Opus 5.5、Opus 5
- Claude Sonnet 5.5
- Claude Haiku 5.5
此页面对您有帮助吗?