跳转到主要内容
本文说明如何用 Anthropic 原生 Messages API 调用 Claude(经 API易 网关转 AWS Bedrock),以及 output_config.effort(努力档位)和 thinking(自适应思考)的正确用法。 基础的通道、计费与接入信息请先看 Claude API 基础说明
适用模型:Claude Opus 4.8 / 4.7 / 4.6、Sonnet 4.6 等。本文以 Opus 4.8 为例。

在线测试工具

不想写代码?可以先用 API易 在线推理测试工具体验:选择模型与 effort 档位、设置 Max Tokens、勾选「请求返回思考摘要」,即可直接对比不同档位的推理效果。

推理测试 · API易 在线工具

网页端直接调用 Claude(也支持 GPT / Gemini)推理测试,无需写代码,填入 API易 令牌即可使用。
API易 在线推理测试工具:选择 claude-opus-4-8 模型与 effort 档位

请求的基本结构

Endpoint 与请求头

经 API易 转 Bedrock 时,客户端仍用 Anthropic 原生格式x-api-key + /v1/messages),网关内部负责翻译成 Bedrock 的 bedrock-2023-05-31。你不需要写 anthropic_version: bedrock-2023-05-31

最小请求体

effort 努力档位

effort 控制 Claude 愿意花多少 token 来产出结果,在「彻底程度」和「速度/成本」之间权衡。它影响全部 token 消耗:正文、工具调用、以及扩展思考。
关键规则
  1. effort 必须放在顶层独立的 output_config 对象里,不能放进 thinking 里 —— 放错会直接 ValidationException / 400。
  2. 无需 beta 头。effort 现已对所有支持的模型开放,不再需要 anthropic-beta: effort-2025-11-24
  3. 默认值是 high;设成 "high" 与完全不传 effort 行为一致。

带 effort 的请求体

档位一览

Opus 4.8 推荐:编码 / agentic 用 xhigh 起步,其它智力敏感任务用 high,只有在 eval 验证过质量不掉的前提下才下调到 medium / lowxhigh / max 时把 max_tokens 设大(64k 起步),给模型留足思考 + 输出空间。

各模型支持的档位

不是所有模型都支持全部档位。xhigh 是 Opus 4.7 才新增的,max 不支持 Sonnet:
常见误用:claude-opus-4-6effort: "xhigh"。4.6 没有 xhigh 档 —— 请改用 high / max,或把模型换成 claude-opus-4-8 再用 xhigh

thinking 自适应思考

Opus 4.7 / 4.8 用自适应思考:由模型自己决定何时思考、思考多少,配合 effort 控制深度。
  • thinking.type: "adaptive" —— 开启自适应思考(不传则不思考)。
  • thinking.display: "summarized" —— 让响应里返回思考摘要块;不需要展示可删掉。
  • effort 与思考的关系:high / xhigh / max 几乎总会深度思考;low / medium 在简单题上可能跳过思考。
  • display 默认值随模型不同:Opus 4.6 默认 summarized,Opus 4.7 / 4.8 默认 omitted(思考块仍在,但 thinking 文本为空,前端表现为「正文前一段停顿」)。想稳定拿到摘要就显式写 display: "summarized"
  • 没有 -thinking 后缀的原生模型。是否思考由 thinking 参数决定,不是靠模型名后缀;xxx-thinking 都是第三方别名,直接用基础模型 ID + thinking 参数即可。
Opus 4.7 / 4.8 不支持 thinking.type: "enabled" + budget_tokens(会 400)。请改用 adaptive + effort。

thinking 摘要的本质(重要)

  • 摘要由 Anthropic 官方(模型/服务层)生成,不是网关或第三方模型二次加工;原始思维链(raw CoT)永不原文返回,你拿到的就是官方摘要。
  • 不能用 system prompt 定制 thinking 摘要的语气/格式system 影响的是模型「怎么思考」和「最终回答」的风格,摘要只是内部推理的可读呈现。语气、排版、风格等要求请放进对最终回答的约束,让它体现在 text 块里。
  • 不要在 prompt 里要求模型把内部推理「原文」输出到回答中 —— 可能触发拒答(stop_reason: "refusal"stop_details.category 可能为 reasoning_extraction)。需要看推理就读 display: "summarized" 的摘要。
多轮对话在同一模型上继续时,要把上一轮收到的 thinking 块原样回传(含签名、含空文本块)—— API 拒绝被修改过的 thinking 块。展示摘要没问题,但不要编辑后再回传。

解析响应

响应的 content 是一个块数组,按 type 区分:
token 用量在 usage 字段:
stop_reasonmax_tokens,说明输出被 max_tokens 截断(高 effort 下思考容易吃满),此时正文可能为空 —— 把 max_tokens 调大即可。

流式(stream)下的 thinking 字段

stream: true 时,思考内容不走 delta.text,而是专门的事件序列: 正文文本仍走 delta.type = "text_delta"delta.text。若 display: "omitted",思考块照常出现但 delta.thinking 为空字符串。

完整可运行示例

经 Bedrock 时的注意事项

常见报错排查

"thinking.type.enabled" is not supported for this model

经 AWS(Bedrock)通道调用 Opus 4.7 / 4.8 时,最常见的一个 400 报错:
原因:请求体里传了旧版的固定预算思考写法 thinking: { "type": "enabled", "budget_tokens": N }。Opus 4.7 / 4.8(以及更新的模型)已移除这种写法,只支持自适应思考;AWS 上游会直接返回 ValidationException 400。这与 thinking 自适应思考 章节的提示一致。
报错里的 thinking.type.enabled 就是你请求体里的 thinking.type 字段值为 "enabled"。同理,budget_tokens 也已不被支持;temperature / top_p / top_k 在这些模型上一并被移除,传了也会 400。
解决:删掉 type: "enabled"budget_tokens,改用 adaptive + output_config.effort 控制思考深度。
不想思考时:Opus 4.7 / 4.8 可传 thinking: { "type": "disabled" },或干脆不传 thinking 字段(不传即不思考)。

参考

  • Anthropic — Effort 文档:platform.claude.com/docs/en/build-with-claude/effort
  • AWS Bedrock — Adaptive thinking:docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-adaptive-thinking.html
  • AWS Bedrock — Claude Opus 4.8:docs.aws.amazon.com/bedrock/latest/userguide/model-card-anthropic-claude-opus-4-8.html