":{"object":"error","type":"invalid_request_error","code":"invalid_request_error...

2026年10月05日 20:31 9.51 秒 success

错误信息

status_code=400, {"error":{"object":"error","type":"invalid_request_error","code":"invalid_request_error","message":"2 request validation errors: Input should be a valid string, field: 'messages[1].***.str', value. Unusual bug? Email support@***.ai with request id 01M45P3M1MHWGFAQWK87MBAF60 and a description of what happened, or open a ticket in Discord: https://***.***.ai/***

AI 解决方案

原文:2 request validation errors: Input should be a valid string, field: 'messages[1].***.str', value.
译文:存在2个请求验证错误:输入应为有效的字符串,字段为'messages[1].***.str',值为空。

🎯 原因分析


错误发生在API请求的参数验证阶段,具体是messages数组的第二个元素中某个字段(覆盖为,可能为content或role等)的值类型不符合要求。该字段期望接收字符串类型,但实际传入了无效值(可能为null、非字符串对象或不存在的值)。

💡 解决方案


检查messages数组的第二个元素,确保所有必填字段为有效字符串:
// 修复后的代码示例(以常见消息结构为例)
const messages = [
  { role: "user", content: "你好" },
  { role: "assistant", content: "你好!有什么可以帮你的吗?" }  // 确保 content 是有效字符串
];

// 完整请求示例
fetch("https://api.***.ai/v1/chat/completions", {
  method: "POST",
  headers: { "Authorization": "Bearer YOUR_API_KEY" },
  body: JSON.stringify({
    model: "gpt-3.5-turbo",
    messages: messages  // 确保数组元素结构正确
  })
});

🛡️ 预防措施


  • 参数类型校验:发送请求前,对消息中的所有字段进行类型检查,确保嵌套字段均为字符串类型。

  • 使用类型定义*:在支持 TypeScript 的项目中,使用接口定义消息结构,避免类型错误。示例:

  • interface Message {
      role: string;
      content: string;
    }
    const messages: Message[] = [...];  // 强制类型约束