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

2026年05月28日 17:23 31.49 秒 success

错误信息

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

AI 解决方案

🔍 错误分析

1. 🌐 错误翻译


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

2. 🎯 原因分析


  • 根本原因:您正在调用一个支持“思考”或“推理”功能的大模型API(如某些模型的扩展思考模式)。该API在首次响应或上一轮响应中,可能在 content 数组里包含了一个 typethinking 的对象,用于展示模型的内部推理过程。

  • 问题所在:在进行后续对话请求时,API要求您必须将完整的、包含thinking部分的上一轮响应内容原样回传,以保持对话上下文和思考过程的连贯性。您的请求中很可能遗漏了这部分内容,或者回传的格式不正确。
  • 3. 💡 解决方案


    在后续的API调用中,确保将上一次API响应中的整个 content 数组(包含 thinking 对象)完整地传递到请求的 messages 列表里,作为助手(assistant)的响应。

    示例(假设使用类似OpenAI的API格式):

    # 假设这是上一轮API返回的完整响应
    previous_assistant_message = {
        "role": "assistant",
        "content": [
            {
                "type": "thinking",
                "thinking": "模型的内部思考过程..."
            },
            {
                "type": "text",
                "text": "模型的最终回复..."
            }
        ]
    }
    
    # 在下一次请求时,必须将这个完整的message对象放入messages数组
    messages = [
        {"role": "user", "content": "我的问题"},
        previous_assistant_message,  # 关键:包含thinking的完整内容
        {"role": "user", "content": "我的下一个问题"}
    ]
    
    # 然后使用这个messages列表发起API调用
    response = client.chat.completions.create(
        model="your-model-with-thinking",
        messages=messages
    )
    

    核心修复步骤

  • 获取并保存API返回的完整响应

  • 在构建下一次请求的 messages 数组时,将上一次保存的完整响应(角色为 assistant,内容包含 thinking)放入数组中。
  • 4. 🛡️ 预防措施


  • 仔细阅读文档:在使用具有特殊功能(如思考、工具调用)的模型API时,务必详细阅读其官方文档中关于多轮对话状态保持的说明。

  • 完整保存上下文:处理API响应时,始终将完整的响应对象(而不仅仅是提取的文本)保存下来,以便在需要时回传。这可以避免丢失如 thinkingtool_calls 等元数据。