AI

Claude Opus 4.7+ 移除采样参数:如何迁移 temperature、top_p 与 top_k

从 Claude Opus 4.7 开始,非默认采样参数会触发 400。真正的迁移不是换一个旋钮,而是把行为意图、推理强度和格式约束拆开处理。

从 Claude Opus 4.7 开始,temperaturetop_ptop_k 不再接受非默认值。请求中设置这些参数会返回 400,最稳妥的迁移方式是直接省略。

Anthropic 的弃用说明还明确列出了 Claude Opus 4.8 和 Claude Sonnet 5。这意味着接入层不应只为某个模型 ID 写一次性补丁,而应该根据模型能力决定是否发送参数。

这三个参数原来控制什么

它们都用于干预模型生成下一个 token 时的采样过程:

  • temperature 改变概率分布的平滑程度。
  • top_p 只在累计概率达到阈值的候选集合中采样。
  • top_k 只在概率最高的前 K 个候选中采样。

它们都在控制“模型如何从候选 token 中选择”,但并不等价,也不保证输出完全可复现。即使过去把 temperature 设为 0,Anthropic 也从未保证每次输出相同。

先把官方结论和工程推断分开

Anthropic 的参数弃用说明模型迁移指南明确给出了两点:

  1. 非默认采样参数会触发 400
  2. 应省略这些参数,并使用 Prompt 引导模型行为。

官方没有完整公开移除它们的底层原因。下面只能算工程推断:

  • 新模型会自适应安排推理过程,外部采样参数的价值可能降低。
  • Agent 和工具调用更依赖结构稳定性,多个采样旋钮会扩大不可预测的组合空间。
  • temperaturetop_ptop_k 同时存在时,跨模型、跨平台很难维持一致语义。

这些推断可以帮助理解接口演化,但不能写成 Anthropic 的官方解释。

第一步:删除采样参数

旧请求:

{
  model: "claude-opus-4-8",
  temperature: 0.2,
  top_p: 0.9,
}

新请求的必要变化只有删除这些字段:

{
  model: "claude-opus-4-8",
}

创造性、简洁程度和保守程度改用明确的 Prompt 表达:

提出 5 个差异明显、非常规的方案。
只输出一个证据最充分的方案;不确定时明确说明,不要猜测。

这不是说 Prompt 能精确复刻旧采样器,而是把业务真正关心的行为直接说清楚。

第二步:需要推理时再启用 adaptive thinking

thinkingoutput_config.effort 控制的是推理模式和推理强度,不是 temperature 的替代品。只有任务确实需要更深推理时,才额外配置:

{
  model: "claude-opus-4-8",
  thinking: {
    type: "adaptive",
  },
  output_config: {
    effort: "high",
  },
}

如果省略 thinking,请求可以不启用 thinking。不要为了迁移三个采样参数,就机械地给所有请求打开高强度推理。

格式稳定性应交给结构约束

temperature 从来不能保证合法 JSON。需要稳定格式时,应优先使用:

  • Structured Outputs。
  • JSON Schema。
  • Tool Schema。
  • 严格的解析、校验和失败处理。

Prompt 可以降低偏离格式的概率;受约束的输出机制才能在生成层面限制非法结构。

多模型系统不要再统一暴露 temperature

如果业务层把 temperature 作为所有模型的统一配置,升级模型时很容易把“不支持的底层参数”一路透传到 Provider。更稳妥的做法是让上层描述行为意图,再由适配器映射到不同模型实际支持的能力:

type ModelBehavior = {
  effort?: "low" | "medium" | "high";
  creativity?: "strict" | "balanced" | "creative";
  verbosity?: "concise" | "normal" | "detailed";
  outputSchema?: JSONSchema;
};

适配层需要维护模型能力表:哪些模型支持采样参数,哪些支持 effort,哪些支持结构化输出。不要假设名字相同的参数在不同 Provider 上拥有相同语义。

最后的判断

过去:业务层直接控制 token 采样
现在:业务层描述期望行为,适配层按模型能力映射

这次变化不只是删除三个字段。它提醒多模型系统:稳定的抽象应该围绕业务意图和可验证输出,而不是围绕某一家模型当前暴露的解码旋钮。

Back to Blog

Related Posts

View All Posts »