400 invalid claude request: role "system" in messages is not allowed for this us...
错误信息
API Error: 400 invalid claude request: role "system" in messages is not allowed for this user; use top-level system instead
AI 解决方案
原文:API Error: 400 invalid claude request: role "system" in messages is not allowed for this user; use top-level system instead
译文:API错误:400 无效的 Claude 请求:该用户不允许在 messages 中使用 "system" 角色;请改用顶层的 system 参数
🎯 原因分析:
该报错是因为在调用 Claude API 时,将系统提示词放在了 messages 数组的条目中(即使用了 role: "system"),而当前用户权限或 API 版本不支持这种方式。按照要求,系统提示词应当作为请求顶层的独立参数传递,而非嵌入消息列表内。
💡 解决方案:
// 错误写法(在 messages 中使用 system 角色)
const messages = [
{ role: "system", content: "你是助手。" },
{ role: "user", content: "你好" }
];
// 正确写法(将 system 作为顶层参数)
const requestParams = {
system: "你是助手。",
messages: [
{ role: "user", content: "你好" }
]
};
🛡️ 预防措施:
system 参数的合法位置。