code: 400 - {'error': {'message': "Invalid 'input[2].name': empty string. Expect...

2026年05月09日 14:56 状态: processing

🚨 错误信息

Error code: 400 - {'error': {'message': "Invalid 'input[2].name': empty string. Expected a string with minimum length 1, but got an empty string instead. (request id: 202605090653213015162558268d9d6ObPR7axB)", 'type': 'invalid_request_error', 'param': 'input[2].name', 'code': 'empty_string'}} 这个是请求hermes herme配置的是中转api

🤖 AI解决方案

错误分析

1. 错误翻译


原文:Invalid 'input[2].name': empty string. Expected a string with minimum length 1, but got an empty string instead.
译文:'input[2].name' 无效:空字符串。期望一个最小长度为1的字符串,但实际得到的是一个空字符串。

2. 原因分析

  • 根本原因:您向API(通过中转服务)发送的请求体中,input数组里第三个元素(索引为2)的 name 字段值为空字符串 ("")

  • 具体位置:错误明确指出了参数路径 input[2].name。API的验证规则要求此字段为非空字符串

  • 上下文:这通常发生在构造对话或消息列表时,某个消息对象的 namerole 字段被错误地赋值或留空。
  • 3决方案
    检查并修正您构造请求体的代码,确保 input[2] 对象的 name 字段有有效值。以下是对比示例:

    python

    ❌ 错误的请求数据结构 (input[2].name 为空)


    request_data = {
    "input": [
    {"name": "user", "content": "你好"}, # input[0]
    {"name": "assistant", "content": "你好!"}, # input[1]
    {"name": "", "content": "今天天气怎么样?"} # input[2] - 错误:name为空字符串
    ],
    # ... 其他参数
    }

    ✅ 修正后的请求数据结构


    request_data = {
    "input": [
    {"name": "user", "content": "你好"}, # input[0]
    {"name": "assistant", "content": "你好!"}, # input[1]
    {"name": "user", "content": "今天天气怎么样?"} # input[2] - 修正:name为有效的"user"
    ],
    # ... 其他参数
    }

    请定位您代码中构建 input 数组的部分,特别是第三个元素,为其 name 字段赋予正确的值(通常是 "user""assistant")。

    4. 预防措施

  • 数据校验:在将请求发送到中转API之前,在代码层面增加对请求体的校验逻辑,确保所有必填字段(如 name)都符合格式要求(非空、有效枚举值等)。

  • 明确数据结构:使用数据模型(如Pydantic、Dataclass)来定义请求体的结构,这可以在序列化之前就捕获类似 name 为空的错误。

  • python
    from pydantic import BaseModel, Field

    class Message(BaseModel):
    name: str = Field(min_length=1) # 强制要求name字段非空
    content: str

    # 构造数据时会自动校验
    messages = [
    Message(name="user", content="你好"),
    Message(name="assistant", content="你好!"),
    Message(name="user", content="今天天气怎么样?") # name为空会在此处报错
    ]