Anthropic 原生格式调用 & effort 参数用法
本文档说明如何用 Anthropic 原生 Messages API 调用 Claude(经 API易网关转 AWS Bedrock), 以及output_config.effort(努力档位)和 thinking(自适应思考)的正确用法。
适用模型:Claude Opus 4.8 / 4.7 / 4.6、Sonnet 4.6 等。本文以 Opus 4.8 为例。
1. 请求的基本结构
Endpoint 与请求头
| Header | 值 | 说明 |
|---|---|---|
content-type | application/json | 固定 |
anthropic-version | 2023-06-01 | Anthropic 原生版本头,必填 |
x-api-key | $APIYI_API_KEY | Anthropic 原生鉴权方式 |
经 API易转 Bedrock 时,客户端仍用 Anthropic 原生格式(x-api-key+/v1/messages), 网关内部负责翻译成 Bedrock 的bedrock-2023-05-31。你不需要写anthropic_version: bedrock-2023-05-31。
最小请求体
2. effort(努力档位)
effort 控制 Claude 愿意花多少 token 来产出结果,在「彻底程度」和「速度/成本」之间权衡。
它影响全部 token 消耗:正文、工具调用、以及扩展思考。
关键规则 ⭐
effort必须放在顶层独立的output_config对象里,不能放进thinking里 —— 放错会直接ValidationException/ 400。- 无需 beta 头。effort 现已对所有支持的模型开放,不再需要
anthropic-beta: effort-2025-11-24。 - 默认值是
high;设成"high"与完全不传effort行为一致。
带 effort 的请求体
档位一览
| 档位 | 说明 | 典型场景 |
|---|---|---|
low | 最省。显著节省 token,能力略降。 | 简单任务、高并发、子 agent |
medium | 平衡。中等 token 节省。 | 多数 agentic 工作流的折中默认 |
high | 默认值。高能力。 | 复杂推理、难编码、对质量敏感的任务 |
xhigh | 长程扩展能力,介于 high 和 max 之间。 | 长时编码/agentic 任务(>30 分钟) |
max | 无约束的最强能力。 | 真正前沿的难题,最深推理 |
Opus 4.8 推荐:编码/agentic 用xhigh起步,其它智力敏感任务用high, 只有在 eval 验证过质量不掉的前提下才下调到medium/low。 跑xhigh/max时把max_tokens设大(64k 起步),给模型留足思考+输出空间。
3. thinking(自适应思考)
Opus 4.7/4.8 用自适应思考:由模型自己决定何时思考、思考多少,配合 effort 控制深度。thinking.type: "adaptive"—— 开启自适应思考(不传则不思考)。thinking.display: "summarized"—— 让响应里返回思考摘要块;不需要展示可删掉。- ⚠️ Opus 4.7/4.8 不支持
thinking.type: "enabled"+budget_tokens(会 400)。请改用 adaptive + effort。 - effort 与思考的关系:
high/xhigh/max几乎总会深度思考;low/medium在简单题上可能跳过思考。
4. 解析响应
响应的content 是一个块数组,按 type 区分:
usage 字段:
注意:若stop_reason为max_tokens,说明输出被max_tokens截断(高 effort 下思考容易吃满), 此时正文可能为空 —— 把max_tokens调大即可。
5. 完整可运行示例(Python)
6. 经 Bedrock 时的注意事项
| 项 | 说明 |
|---|---|
output_config | 必须放行。网关若有 delete output_config 覆盖规则,effort 会被静默吞掉(返回 200 但无效)。 |
effort 位置 | 顶层 output_config 内,不能放进 thinking。 |
| beta 头 | effort 不需要;adaptive thinking 也不需要。 |
temperature / top_p | Opus 4.7/4.8 配自适应思考时应使用默认采样;网关通常会为这两个模型剥离这两个参数,属正常,客户端不必设置。 |
| 非法 effort 值 | Bedrock 对未知值宽容降级(返回 200),不报 400。所以不能用「invalid 是否报错」判断是否透传 —— 要看不同档位的 token 是否拉开差距。 |
7. 参考
- Anthropic — Effort 文档:https://platform.claude.com/docs/en/build-with-claude/effort
- AWS Bedrock — Adaptive thinking:https://docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-adaptive-thinking.html
- AWS Bedrock — Claude Opus 4.8:https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-8.html