Bad Request {"error":{"message":"Unable to submit request because at least one c...

2026年01月21日 13:47 processing

错误信息

Chat completion request error: Bad Request {"error":{"message":"Unable to submit request because at least one contents field is required. Learn more: https://***.com/***/***/***/***/***","type":"upstream_error","param":"","code":400}}

AI 解决方案

错误分析报告

1. 错误翻译


原文:Unable to submit request because at least one contents field is required
译文:无法提交请求,因为至少需要一个内容字段

2. 原因分析


这是调用Chat API时出现的请求格式错误。根本原因是发送的请求体中缺少必需的contents字段或该字段为空。

具体问题:

  • API期望的contents字段不存在或为空数组

  • 请求体结构不符合OpenAI Chat API的格式要求

  • 可能是请求参数构建时遗漏了关键内容
  • 3. 解决方案

    Python示例修复代码:

    import openai
    
    # 修复前(错误的请求):
    # response = openai.ChatCompletion.create(
    #     model="gpt-3.5-turbo",
    #     # 缺少contents字段
    # )
    
    # 修复后(正确的请求):
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[  # 注意:最新的OpenAI API使用messages字段而非contents
            {"role": "user", "content": "你的问题或提示内容在这里"}
        ],
        max_tokens=100,
        temperature=0.7
    )
    

    JavaScript示例修复代码:

    // 修复前(错误的请求):
    // fetch('https://api.openai.com/v1/chat/completions', {
    //   method: 'POST',
    //   headers: {
    //     'Content-Type': 'application/json',
    //     'Authorization': `Bearer ${apiKey}`
    //   },
    //   body: JSON.stringify({
    //     model: "gpt-3.5-turbo"
    //     // 缺少messages字段
    //   })
    // })
    
    // 修复后(正确的请求):
    fetch('https://api.openai.com/v1/chat/completions', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${apiKey}`
      },
      body: JSON.stringify({
        model: "gpt-3.5-turbo",
        messages: [
          { role: "user", content: "你的问题或提示内容在这里" }
        ],
        max_tokens: 100,
        temperature: 0.7
      })
    })
    

    4. ️ 预防措施

    最佳实践建议:


  • 请求验证:在发送API请求前,使用函数验证请求体格式:

  •    def validate_chat_request(data):
           required_fields = ['model', 'messages']
           for field in required_fields:
               if field not in data or not data[field]:
                   return False, f"Missing or empty required field: {field}"
           
           if not isinstance(data['messages'], list) or len(data['messages']) == 0:
               return False, "Messages must be a non-empty list"
           
           return True, "Valid request"
       

    • 使用官方SDK:优先使用OpenAI官方SDK,它们会自动处理正确的请求格式:

    •    pip install openai
         

      ️ 开发工具推荐:


    • Postman/Insomnia:用于测试API请求格式

    • API调试工具:使用浏览器的开发者工具或curl命令测试请求

    • 请求日志:在开发环境中记录完整的请求和响应,便于调试

    关键提醒:根据错误中的contents字段名,您可能使用的是特定平台的定制API。请查阅相关API文档确认正确的字段名(通常是messagescontents)。