调用OpenAI Chat Completions API返回400错误的原因排查求助
排查OpenAI Chat Completions接口400错误的原因
核心问题分析
你的代码调用/v1/chat/completions时返回400,主要是请求参数不符合接口要求,以下是具体问题和修复方案:
1. 缺少必填的model参数
Chat Completions接口必须指定使用的模型(比如gpt-3.5-turbo、gpt-4),你的请求体里完全没传这个参数,这是触发400错误的最直接原因。
2. 消息结构不符合接口常规要求
你只传入了system角色的消息,部分模型不接受单一system角色的请求结构。如果你的需求是让AI处理用户输入,应该将用户内容放在user角色中,system角色仅作为前置提示词使用。
修复后的代码示例
修改getStructuredMessage函数,补充必填参数并调整消息结构:
export async function getStructuredMessage(messageText) { const response = await fetch('https://api.openai.com/v1/chat/completions', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${API_KEY}`, }, body: JSON.stringify({ model: 'gpt-3.5-turbo', // 必填:指定调用的模型 messages: [ { role: 'system', content: '这里设置你的系统提示词,比如"你是一个结构化信息整理助手"' }, { role: 'user', content: messageText } // 用户输入内容放在user角色中 ], }), }); // 新增响应状态判断,避免错误场景下访问data.choices报错 if (!response.ok) { const errorData = await response.json(); throw new Error(`请求失败:${errorData.error.message}`); } const data = await response.json(); return data.choices[0].message.content; }
额外注意事项
- 确认
API_KEY有效且拥有对应模型的调用权限 - 调用前校验
messageText,避免传入空值或格式异常的内容 - 部分模型对消息总长度有限制,过长内容会触发400,需控制输入长度
内容的提问来源于stack exchange,提问作者Nazar
相关产品推荐
相关产品推荐

