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

2026年05月27日 19:31 30.34 秒 success

错误信息

API Error: 400 The content[].thinking in the thinking mode must be passed back to the API. (request id: 20260527173643147260595aLG2DuOI)

AI 解决方案

📡 错误分析

1. 🌐 错误翻译


原文:The content[].thinking in the thinking mode must be passed back to the API.
译文:在思考模式下,content数组中的thinking字段必须被传回API。

2. 🎯 原因分析


您在调用某个具有“思考模式”(Thinking Mode)的AI API(可能是某些大语言模型的增强推理功能)时,触发了此400错误。根本原因是:您在后续请求中,没有将API上一次返回的、包含 thinking 内容的 content 数组完整地传递回去。

这类API要求在多轮对话或需要维持上下文连贯性时,必须将包含思考过程的整个响应内容(content 列表)作为后续请求的输入。如果遗漏或修改了这个列表中的 thinking 字段,API会认为请求不完整或不符合协议规范,从而返回此错误。

3. 💡 解决方案


您需要在构建下一次请求时,确保将上一轮API响应中完整的 content 数组(特别是其中的 thinking 字段)传递进去。

错误示例(手动构建请求):

# 假设上一轮响应是 `previous_response`
# 错误:只截取了部分内容或丢弃了thinking字段
messages = [
    {"role": "user", "content": "新问题"},
    # 错误的:只放了一个简单的文本响应
    {"role": "assistant", "content": "上一轮助手的简单回复"} 
]

正确示例:

# 正确的做法:传递上一轮完整的助手回复内容,包括thinking
# 假设上一轮API的响应对象是 `previous_api_response`
previous_assistant_message = previous_api_response['choices'][0]['message']

messages = [
    {"role": "user", "content": "新问题"},
    # 关键:传回完整的、包含thinking的助手消息
    {"role": "assistant", "content": previous_assistant_message['content']}
]
# 然后将这个 messages 列表作为参数发送给API

核心要点:将整个上一轮 assistantmessage 对象(其 content 字段是一个包含 textthinking 的列表)原封不动地放入新请求的 messages 数组中。

4. 🛡️ 预防措施


  • 遵循官方SDK与文档:使用API提供商提供的官方SDK(如OpenAI、Anthropic的Python/Node.js库)。这些SDK通常会自动处理消息历史,将 content 列表正确拼接,能大幅减少此类错误。

  • 调试时打印完整载荷:在发送请求前,将构造好的 messages 列表用 json.dumps 打印出来,检查其中的 content 字段是否为完整的数组结构,且包含了必要的 thinkingtype 字段。