Skip to content

适配 Claude Opus 4.7 task budget 与 thinking 协议变更 #634

@XinyuZhang132

Description

@XinyuZhang132

现象

当前 api/sdk/src/main/java/com/ke/bella/openapi/protocol/message/MessageRequest.java 尚未适配 Claude Opus 4.7 的协议变化,导致新模型能力无法完整透传或表达。已识别的变更包括:

  1. 新增 task_budget(beta)配置,位于 output_config 下,配合 beta header task-budgets-2026-03-13 使用。
  2. Claude Opus 4.7 起 thinking content 默认省略,若需要推理输出,需要在 thinking 配置中显式设置 display: "summarized";否则响应中的 thinking block 可能存在但 thinking 字段为空。

影响评估

  • 当前网关协议层无法完整表达 Opus 4.7 的新请求参数,影响新模型能力接入。
  • 若上层依赖 reasoning 内容展示或后处理,可能因为 thinking 默认被省略而出现兼容性问题或行为偏差。
  • 影响范围主要在 Claude / Anthropic message 协议适配链路,以及依赖 MessageRequest DTO 的请求构造逻辑。

根因分析

现有 MessageRequest 结构中:

  • OutputConfig 仅包含 effortformat,未支持 task_budget 字段。
  • ThinkingConfig 仅包含 typebudget_tokens,未支持新的 display 配置。
  • 当前 DTO 设计滞后于 Claude Opus 4.7 最新 message 协议,导致新增字段无法反序列化/序列化透传。

修复方案

  1. 扩展 MessageRequest.OutputConfig,支持 task_budget 结构。
  2. 增加与协议一致的 TaskBudget DTO,至少支持:
    • type
    • total
  3. 扩展 MessageRequest.ThinkingConfig,支持 display 字段,并兼容:
    • omitted(默认)
    • summarized
  4. 检查相关请求构造、序列化和协议透传逻辑,确保新增字段不会破坏现有模型兼容性。
  5. 补充必要的单测或序列化验证,覆盖新字段映射与默认行为。

预防措施

  • 建立 Claude 协议版本变更的字段巡检清单,减少 DTO 与官方协议脱节。
  • 对 message 协议关键对象增加序列化兼容测试,及时发现新增字段遗漏。

证据

  • 官方变更说明指出 Claude Opus 4.7 新增 task_budget(beta),位置为 output_config.task_budget
  • 官方变更说明指出 Claude Opus 4.7 默认省略 thinking content,需通过 thinking.display = "summarized" 显式开启摘要输出。
  • 当前代码位置:api/sdk/src/main/java/com/ke/bella/openapi/protocol/message/MessageRequest.java

相关链接

  • 代码文件:api/sdk/src/main/java/com/ke/bella/openapi/protocol/message/MessageRequest.java
  • 上游仓库:LianjiaTech/bella-openapi

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions