":{"message":"Role must be in [user, assistant].","type":"invalid_request_error"...

2026年09月02日 11:00 16.82 秒 success

错误信息

失败:HTTP 400: {"error":{"message":"Role must be in [user, assistant].","type":"invalid_request_error","param":"","code":"invalid_parameter_error"}}

AI 解决方案

🔍 报错分析

1. 🌐 错误翻译


原文:Failure: HTTP 400: {"error":{"message":"Role must be in [user, assistant].","type":"invalid_request_error","param":"","code":"invalid_parameter_error"}}
译文:失败:HTTP 400:{"error":{"message":"角色必须在 [user, assistant] 范围内。","type":"无效请求错误","param":"","code":"无效参数错误"}}

2. 🎯 原因分析


该错误是HTTP 400请求参数错误,根本原因是请求中的role参数值不符合要求。API要求role参数只能取两个枚举值:userassistant,但当前请求传递了其他非法值或未传递该参数,导致参数校验失败。

3. 💡 解决方案


检查代码中role参数的赋值,确保其值仅为userassistant。以下是修复后的示例代码(以常见API调用场景为例):

# 错误示例(假设传递了非法的role值)
# request_data = {
#     "role": "invalid_role",  # ❌ 非法值
#     "content": "Hello"
# }

# 修复后的代码
request_data = {
    "role": "user",  # ✅ 合法值,也可根据需求改为 "assistant"
    "content": "Hello"
}

# 调用API时的完整参数示例
response = client.api.invoke(
    parameters={
        "role": "user",  # 确保此处为合法枚举值
        "message": "Hello"
    }
)

4. 🛡️ 预防措施


  • 参数枚举校验:在调用API前,对参数值进行预校验,可提前定义合法值集合(如ALLOWED_ROLES = ["user", "assistant"]),在赋值时检查是否在集合内,避免非法值传递。

  • 使用API文档校验工具:开发时参考API官方文档中对参数的约束,使用IDE的参数提示功能,或借助接口调试工具(如Postman、Apifox)预先校验请求参数格式,提前发现非法参数。