400 The `content[].thinking` in the thinking mode must be passed back to the API...

2026年05月29日 09:55 34.39 秒 success

错误信息

API Error: 400 The `content[].thinking` in the thinking mode must be passed back to the API. (request id: 20260528224952879759405JwDaS4EX),我得用thinking模式呢,claude最近的更新给thinking模式开了adaptive参数与deepseek接口不兼容,你 看一下我该怎么搞啊?你调用相关skill试试

AI 解决方案

🔍 错误分析

1. 🌐 错误翻译


原文:The `content[].thinking` in the thinking mode must be passed back to the API.
译文:在思考模式下,必须将 content[].thinking 传回 API。

2. 🎯 原因分析


您遇到的 400 Bad Request 错误的根本原因是:在使用“思考模式”(thinking mode) 时,API 要求在后续请求中必须将之前响应里的“思考过程”字段(即 content[].thinking)原样传回
错误触发点:您的下一次请求体(Request Body)中,缺少了对之前对话轮次中 thinking 内容的包含。
背景关联:您提到的 Claude 模型更新引入 adaptive 参数与当前接口不兼容,这很可能是问题的深层原因。API 服务端(很可能是 DeepSeek 的接口)的期望是完全透传 thinking 字段,但您的请求可能因参数不兼容而采用了不同的结构或处理方式,导致该字段丢失。

3. 💡 解决方案


您需要在构建下一次对话请求时,将上一次 API 响应中的 thinking 内容手动添加到请求的消息列表中。以下是伪代码示例:

# 伪代码示例:在后续请求中包含 thinking 内容
import requests

# 模拟上一次API的响应
last_response = {
    "choices": [{
        "message": {
            "content": "这是上一轮的回复。",
            "thinking": "这里的内容是模型的思考过程,必须传回。" # 关键字段
        }
    }]
}

# 构建下一次请求
next_messages = [
    {"role": "user", "content": "新的用户问题"},
    # 将上一轮的完整响应(包含 thinking)作为一个 assistant 消息加入
    {
        "role": "assistant",
        "content": last_response["choices"][0]["message"]["content"],
        "thinking": last_response["choices"][0]["message"]["thinking"] # 必须传回此字段
    }
]

# 发送请求
payload = {
    "model": "your-model-name",
    "messages": next_messages,
    # 根据API文档,可能需要启用 thinking 模式
    "parameters": {
        "thinking_mode": True  # 示例参数,请以实际文档为准
    }
}
response = requests.post("your_api_endpoint", json=payload)

核心操作:确保在 messages 数组的历史记录中,每一条来自 assistant 的回复都必须完整包含其原始 thinking 字段

4. 🛡️ 预防措施


  • 仔细阅读官方文档:在使用任何模型的“思考模式”或类似高级功能时,务必查阅官方最新的API文档,明确所有必须回传的字段和参数格式。

  • 使用官方SDK或封装库:优先使用模型提供商提供的官方SDK(如OpenAI SDK等)。这些库通常能自动处理响应历史的构建和必要字段的传递,避免手动操作导致的字段遗漏。您可以检查是否有更新的SDK版本支持您需要的特性。