Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

fix(ai-anthropic): chat({ reasoning }) on Claude 4.6 sends a top-level effort and gets a 400

已关闭
#1,736 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

已经有一个关联 PR 被合并了。

  • #1737 来自 @tombeckenham —— 已合并

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
20/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
typescript

调研方向

Read packages/ai-anthropic/src/text/reasoning.ts, then inspect the request assertions in packages/ai-anthropic/tests/reasoning-request.test.ts and the Anthropic adapter note in docs/adapters/anthropic.md. Update the Claude 4.6 effort shape, its test, and the documentation as described; done means the tests expect output_config.effort and the docs match. The reporter says they are also opening a PR, so check that work before starting.

由索引模型根据 Issue 内容生成。

描述

TanStack AI version

main at 7532b2b09 (@tanstack/ai 0.68.0, unreleased). The bug came in with #1692 and is not on npm yet. Release PR #1699 is still open.

Framework/Library version

None. This is in @tanstack/ai-anthropic, on the server.

Describe the bug and the steps to reproduce it

chat({ reasoning }) on claude-opus-4-6 or claude-sonnet-4-6 sends the effort as a top-level effort field. Anthropic rejects it with a 400. Both models accept output_config.effort, the same shape the adapter already sends for Claude 4.7 and later.

Every level other than off fails. A call that sets budgetTokens is not affected, because it takes the budget path and sends no effort.

import { chat } from '@tanstack/ai'
import { anthropicText } from '@tanstack/ai-anthropic'

chat({
  adapter: anthropicText('claude-sonnet-4-6'),
  messages: [{ role: 'user', content: 'Say hi' }],
  reasoning: 'low',
})
// 400 invalid_request_error: "effort: Extra inputs are not permitted"

Live results from the Messages API on 2026-10-13, with thinking: { type: 'adaptive', display: 'summarized' }:

Model Shape Result
claude-sonnet-4-6 top-level effort: "low" 400 effort: Extra inputs are not permitted
claude-sonnet-4-6 output_config: { effort: "low" } 200
claude-opus-4-6 top-level effort: "low" 400, same message
claude-opus-4-6 output_config: { effort: "low" } 200
claude-sonnet-4-6 on /v1/messages?beta=true top-level effort: "low" 400, same message

The adapter sends every call through client.beta.messages, so the last row is the path it uses. That request had no betas header.

Where it is:

  • packages/ai-anthropic/src/text/reasoning.ts:17 defines TOP_LEVEL_EFFORT for the two 4.6 models. Line 76 returns { thinking, effort } for them.
  • packages/ai-anthropic/tests/reasoning-request.test.ts:91 pins the wrong shape ("Claude 4.6: the effort is a top-level field").
  • docs/adapters/anthropic.md:321 says "Claude 4.6 gets adaptive thinking and the top-level effort".

Suggested fix: delete TOP_LEVEL_EFFORT and always return output_config: { effort }. Drop the effort? field from AnthropicThinkingFields. Flip the test and fix the docs line.

Your Minimal, Reproducible Example - (Sandbox Highly Recommended)
curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-4-6","max_tokens":2000,"thinking":{"type":"adaptive","display":"summarized"},"effort":"low","messages":[{"role":"user","content":"Say hi"}]}'

Swap "effort":"low" for "output_config":{"effort":"low"} and the same request returns 200.

Screenshots or Videos (Optional)

No response

Do you intend to try to help solve this bug with your own PR?

Yes, I am also opening a PR that solves the problem along side this issue

Terms & Code of Conduct
  • I agree to follow this project's Code of Conduct
  • I understand that if my bug cannot be reliable reproduced in a debuggable environment, it will probably not be fixed and this issue may even be closed.
主要语言
TypeScript
星标
3.2k
派生
361
平均合并
1 天 8 小时
30 天内合并 PR
252

环境准备

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

TanStack/ai 的其他 Issue

查看 TanStack/ai 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。