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

2026年05月29日 10:39 29.86 秒 success

错误信息

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

AI 解决方案

好的,作为一名有30年经验的工程师,我来为您分析这个API错误。

1. 🌐 错误翻译


原文:API Error: 400 The `content[].thinking` in the thinking mode must be passed back to the API.
译文:API错误:400 状态。在思考模式下,`content[].thinking`中的内容必须被回传给API。

2. 🎯 原因分析


  • 根本原因:您正在使用一个支持“思考模式”(Thinking Mode)的AI模型API。该模型在生成回答时,会先输出一个名为 thinking 的中间推理过程,然后再给出最终答案。API要求客户端必须将上一轮响应中返回的 thinking 内容完整地保存,并在下一轮请求中传递回去,以维持对话的连贯性和模型的“思考”上下文。

  • 错误位置:在您的应用逻辑中,处理API响应时,很可能只提取了 content 中最终的回答(如 assistant 角色的消息),而忽略了或丢弃了包含 thinking 的内容段。当您发起后续请求时,请求体中的 messages 数组缺少了这部分信息,导致API校验失败,返回400错误。
  • 3. 💡 解决方案


    您需要修改处理API响应和构建请求的代码逻辑。以下是一个通用的修复思路(以Python为例,逻辑适用于任何语言):

    # 假设这是上一次API调用的响应
    previous_api_response = {
        "choices": [
            {
                "message": {
                    "content": [
                        {"type": "thinking", "text": "嗯,用户问的是天气...我需要先查询A城市,再查询B城市。"},
                        {"type": "text", "text": "今天北京晴,上海多云。"}
                    ]
                }
            }
        ]
    }
    
    # 1. 存储完整的 `content` 数组(包含thinking和text)
    conversation_history = []
    
    # 处理响应,不要只提取文本,要保存整个content块
    for choice in previous_api_response["choices"]:
        message = choice["message"]
        # 将完整的assistant消息(包含content数组)存入历史
        conversation_history.append({
            "role": "assistant",
            "content": message["content"]  # 关键:保存整个数组,不要过滤
        })
    
    # 2. 在下一次请求中,将存储的历史消息(包含thinking)一起发送
    user_new_message = {"role": "user", "content": "那后天呢?"}
    
    # 构建完整的请求消息体
    next_api_request_messages = [
        # ... 之前的对话历史 ...
    ] + conversation_history + [user_new_message]
    
    # 发送API请求
    # response = call_api(next_api_request_messages)
    

    核心修复点

  • 在解析响应时,不要只取 text 部分,要保存 message.content 这个完整的数组

  • 在构建下一个请求的 messages 列表时,将上一步保存的包含 thinking 的消息原样放回。
  • 4. 🛡️ 预防措施


  • 仔细阅读文档:在使用任何具有特殊模式(如流式、思考模式、工具调用)的API时,务必仔细阅读其官方文档中关于“状态维护”和“请求格式”的章节。

  • 使用官方SDK:尽可能使用该API提供商官方发布的SDK(Software Development Kit)。SDK通常会封装好状态管理逻辑,能有效避免这类低级错误。

  • 记录完整日志:在开发调试阶段,记录下API请求和响应的完整原始数据,这能帮助您快速定位是哪个字段丢失或格式错误。