반응형
❗BadRequestError: 400 Missing required parameter: 'messages' 오류 해결 가이드
OpenAI의 Chat API나 다양한 외부 API를 사용할 때 종종 접할 수 있는 에러 중 하나가 바로
BadRequestError: 400 Missing required parameter: 'messages'입니다.
처음 접하면 당황스러울 수 있지만, 이 오류는 매우 기본적이고 단순한 실수로 인해 발생하는 경우가 많아요.
이번 글에서는 이 에러가 발생하는 이유와 이를 해결하기 위한 방법을 정리했습니다.
💥 에러 메시지 해석
BadRequestError: 400 Missing required parameter: 'messages'
이 에러 메시지는 크게 두 부분으로 구성되어 있어요:
항목 | 의미 |
400 | **Bad Request (잘못된 요청)**을 뜻하는 HTTP 상태 코드입니다. |
Missing required parameter: 'messages' | 필수 매개변수인 messages가 누락되었다는 뜻입니다. |
즉, 서버 입장에서 보면 "당신이 보낸 요청에는 'messages'라는 중요한 정보가 빠져 있어요. 이걸 포함해서 다시 보내주세요!"라는 말입니다.
🤖 기본 개념 먼저 이해해볼까요?
📌 HTTP 상태 코드 400 (Bad Request)란?
클라이언트가 서버로 형식이 잘못된 요청을 보냈을 때 발생하는 오류입니다. 서버 입장에서는 요청의 문법이 잘못되어 처리할 수 없다는 뜻이에요.
📌 messages란?
OpenAI의 ChatCompletion API에서 사용되는 핵심 파라미터로, 대화의 맥락을 담고 있는 배열(Array) 형태의 데이터입니다.
예시:
"messages": [
{ "role": "user", "content": "안녕 GPT!" }
]
이 구조가 빠지면 서버는 어떤 대화를 진행해야 하는지 알 수 없어 요청을 거부합니다.
🔍 주로 발생하는 원인
원인 | 설명 | 해결 방법 |
❌ messages 키 자체 누락 | JSON에 messages 항목이 없음 | messages 파라미터를 추가하고 올바르게 구조화하세요 |
🔄 잘못된 데이터 타입 | 문자열, 숫자 등으로 잘못 전달됨 | messages는 반드시 배열(array) 형태여야 합니다 |
🧱 배열 안 객체 누락 | 배열은 있지만 내부에 { role, content } 구조가 없음 | 내부 객체 형식을 맞춰주세요 |
⚠️ 오타 또는 대소문자 오류 | Messages, message 등 오타 | messages로 정확히 입력해야 합니다 (소문자 필수) |
🧪 테스트 중 누락 | 테스트 코드에서 파라미터 제거 후 미복구 | 로직 중 누락된 파라미터 복구 확인 필요 |
💡 예제 코드 (Node.js 기준)
const { Configuration, OpenAIApi } = require('openai');
require('dotenv').config();
const openai = new OpenAIApi(new Configuration({
apiKey: process.env.OPENAI_API_KEY,
}));
async function run() {
try {
const response = await openai.createChatCompletion({
model: "gpt-4",
messages: [ // ✅ 필수 파라미터
{ role: "user", content: "안녕 GPT! 오늘 날씨 어때?" }
]
});
console.log(response.data.choices[0].message.content);
} catch (error) {
if (error.response) {
console.error("❗ 오류 코드:", error.response.status);
console.error("❗ 메시지:", error.response.data);
} else {
console.error("❗ 네트워크 오류 또는 기타:", error.message);
}
}
}
run();
🧪 체크리스트: 에러 방지를 위한 확인 포인트
- messages라는 키를 정확히 입력했나요?
- messages는 배열 형태인가요?
- 배열 안에는 role과 content를 가진 객체들이 있나요?
- role은 "user" 또는 "system", "assistant" 중 하나인가요?
- content는 빈 문자열이 아닌가요?
🧘 마무리하며
이 에러는 대부분 실수로 인해 발생합니다.
하지만 서버는 정확한 형식을 요구하기 때문에, 사소한 누락도 오류로 이어질 수 있어요.
그러니 항상 요청 형식을 API 문서와 대조하면서 꼼꼼하게 확인해보는 습관을 들이는 것이 좋습니다.
누구나 한 번쯤 겪을 수 있는 실수지만, 오늘 글을 통해 여러분은 더 빠르게 문제를 파악하고 해결할 수 있을 거예요! 🙌
반응형
'코딩취미 > node js' 카테고리의 다른 글
AuthenticationError: 401 Incorrect API key provided 에러 해결 가이드 (0) | 2025.06.27 |
---|