code: 400 - {'error': {'message': 'invalid request:\n- messages[1].content: got ...

2026年07月13日 20:08 20.09 秒 success

错误信息

Error code: 400 - {'error': {'message': 'invalid request:\n- messages[1].content: got array, want string\n- messages[1].content: minItems: got 0, want 1', 'type': 'bad_response_status_code', 'param': '', 'code': 'bad_response_status_code'}}

AI 解决方案

📋 报错分析

1. 🌐 错误翻译


原文:invalid request:
- messages[1].content: got array, want string
- messages[1].content: minItems: got 0, want 1
译文:无效请求:
- messages[1].content:收到数组,但需要字符串
- messages[1].content:最小项数:收到0,需要1

2. 🎯 原因分析


  • 根本原因:API请求参数格式不符合预期,messages[1].content字段存在两个问题:

  • 1. 该字段传入了数组类型,但API要求必须是字符串类型
    2. 该字段传入的数组为空(0个元素),但API要求至少包含1个元素
  • 错误位置:请求参数中第二个消息对象(messages[1])的content字段配置错误
  • 3. 💡 解决方案


    假设原始请求代码结构如下,修复后的代码需确保content字段为非空字符串,而非数组:
    // 修复前的错误请求(示意)
    const response = await fetch('https://api.example.com/v1/chat/completions', {
      method: 'POST',
      body: JSON.stringify({
        messages: [
          { role: 'user', content: '你好' },
          { role: 'assistant', content: [] } // 错误:content为空数组
        ]
      })
    });
    
    // 修复后的请求代码
    const response = await fetch('https://api.example.com/v1/chat/completions', {
      method: 'POST',
      body: JSON.stringify({
        messages: [
          { role: 'user', content: '你好' },
          { role: 'assistant', content: '有什么可以帮助您的?' } // 正确:content为非空字符串
        ]
      })
    });
    

    4. 🛡️ 预防措施


  • 严格对照API文档确认请求参数的类型要求必填规则,尤其关注字段的类型约束(如字符串vs数组)和最小长度要求

  • 开发时开启请求参数校验(可使用TypeScript等强类型语言,或手动添加参数格式检查逻辑),提前拦截格式错误,避免发送无效请求