8000 feat!: Anthropic 思考配置支持 display、显式关闭与交错思考 beta 头 by sheepbox8646 · Pull Request #115 · felinics/twilight · GitHub
[go: up one dir, main page]

Skip to content

feat!: Anthropic 思考配置支持 display、显式关闭与交错思考 beta 头 - #115

Merged
sheepbox8646 merged 1 commit into
mainfrom
feat/twi-6-anthropic-thinking-config
Oct 12, 2026
Merged

sheepbox8646 merged 1 commit into
mainfrom
feat/twi-6-anthropic-thinking-config

Conversation

@sheepbox8646
Copy link
Copy Markdown
Member

概要

让 Anthropic Messages provider 能表达新版 Claude 的思考配置:

  • 显式关闭思考:WithThinkingDisabled 和 WithThinking(ThinkingConfig{Type: "disabled"}) 以前都靠「不发 thinking 字段」表示关闭。Claude 5 系列不带 thinking 时默认开启自适应思考,所以旧写法在这些模型上关不掉,照样思考和计费。现在一律发送 thinking: {type: "disabled"}。在 Claude 4.x 上,显式关闭和省略效果相同。
  • between_tools:新增 WithThinkingBetweenTools()。Claude Sonnet 5.5 拒绝 disabled,要用这个类型关闭前置思考。旧接口传入 between_tools 类型也会映射到这里。
  • display:新增 WithThinkingDisplay(display) 和 ThinkingConfig.Display,发送 thinking.display,取值为 summarized 或 omitted。Claude Opus 4.7 及以后默认是 omitted,思考块文本为空。需要展示思考内容的调用方可以要求 summarized。display 和 disabled、between_tools 同时使用,或没有设置思考模式时,会在请求发送前报错。
  • 交错思考 beta 头:新增 WithInterleavedThinking(),把 interleaved-thinking-2025-05-14 合并进 anthropic-beta,保留已有的 beta 并去重。Claude 4.5 及更早的预算模式要靠它在工具调用之间思考。官方 API 会忽略不支持的模型,但第三方 Anthropic 兼容端点不一定,所以默认不发。
  • 文档补充各代 Claude 的思考模式选择。

破坏性变更与迁移

关闭思考现在会发送 {type: "disabled"},不再省略字段:

  • 拒绝该值的模型(Claude Opus 5.5、Fable 5.x、Mythos 5.x)无法关闭思考,调用方不应再对它们使用 WithThinkingDisabled,否则会收到 400。
  • Claude Opus 5 和 Haiku 5.5 只在档位为 high 及以下时接受关闭。
  • 对接第三方 Anthropic 兼容端点时,如果端点不接受 disabled,需要调用方自行处理。

Memoh 已有用 ThinkingConfig{Type: "disabled"} 显式关闭的逻辑,但以前会被转成省略字段,从未真正发出。这次修改后它会按预期生效。

关联

验证

  • 单测:disabled 和 between_tools 的请求体;新旧接口的输出一致,新增 between_tools 和带 display 的对照;display 随自适应和预算模式发送,并且不受选项先后顺序影响;三种非法组合都在发送前报错,测试服务器收不到请求;beta 头默认不发、开启后发送、与已有 beta 合并、大小写不同的同名 beta 去重。原有 max_tokens 矩阵测试未改动,仍然通过。
  • 本地按 CI 流程跑过:go build ./...、go vet ./...、go vet -tags integration ./...、golangci-lint run ./...(0 issues)、go test ./... -short -race、internal/sdkdiff 测试、go mod tidy 无变化。
  • 真实接口验证未完成:本机配置的 Anthropic 密钥走的是中转端点。请求 claude-sonnet-4.6 时,包括不带任何思考选项的基线请求,都返回 403「违反服务商条款」;配置里的 claude-3.7-sonnet 返回 404,已下线。这是账号或端点的问题,与本改动无关。display 和 beta 头在官方 API 上的实际效果还需要用官方密钥验证。

🤖 Generated with Claude Code

- WithThinkingDisabled 与 ThinkingConfig{Type:"disabled"} 改为显式发送
  thinking{type:"disabled"}。Claude 5 系列不带 thinking 时默认思考,旧的
  省略写法无法关闭;Claude 4.x 上两者等价
- 新增 WithThinkingBetweenTools,旧接口的 between_tools 类型也映射到它
- 新增 WithThinkingDisplay 与 ThinkingConfig.Display,发送 thinking.display;
  与 disabled、between_tools 或未设置思考模式同时使用时在发送前报错
- 新增 WithInterleavedThinking,把 interleaved-thinking-2025-05-14 合并进
  anthropic-beta,保留已有 beta 且去重,默认不发送
- 文档补充各代 Claude 的思考模式选择

BREAKING CHANGE: 关闭思考不再省略 thinking 字段,而是发送 {type:"disabled"}。
拒绝该值的模型(Claude Opus 5.5、Fable 5.x)不应再使用 WithThinkingDisabled。

Linear: TWI-6

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sheepbox8646
sheepbox8646 merged commit 0d17bf0 into main Oct 12, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0