프롬프트 엔지니어링으로 GPT-4 API 응답 품질 개선하기
문제 상황
사내 고객 문의 챗봇에 GPT-4 API를 도입했는데, 같은 질문에도 응답 형식이 들쑥날쑥했다. 특히 제품 정보를 안내할 때 때로는 마크다운 리스트로, 때로는 일반 텍스트로 답변하는 등 일관성이 없어 UX가 좋지 않았다.
시도한 방법들
1. System Message 정교화
초기에는 간단한 system message만 사용했다.
const systemMessage = {
role: 'system',
content: '당신은 친절한 고객 상담원입니다.'
};
이를 구체적인 지침으로 바꿨다.
const systemMessage = {
role: 'system',
content: `당신은 전문 고객 상담원입니다.
응답 규칙:
- 제품 정보는 반드시 번호 리스트 형식으로 작성
- 가격 정보는 "₩" 기호와 함께 천 단위 쉼표 사용
- 응답은 3문장 이내로 간결하게
- 확실하지 않은 정보는 "확인 후 안내드리겠습니다" 응답`
};
2. Few-shot Examples 추가
구조화된 예시를 프롬프트에 포함시켜 응답 형식을 학습시켰다.
const fewShotExamples = [
{
role: 'user',
content: '노트북 A의 스펙이 궁금합니다.'
},
{
role: 'assistant',
content: `노트북 A의 주요 스펙입니다:
1. CPU: Intel i7-13세대
2. RAM: 16GB DDR5
3. 저장공간: 512GB NVMe SSD
4. 가격: ₩1,299,000`
}
];
3. Temperature 조정
temperature를 0.7에서 0.3으로 낮춰 응답의 창의성보다 일관성을 우선했다.
const completion = await openai.chat.completions.create({
model: 'gpt-4',
messages: [systemMessage, ...fewShotExamples, userMessage],
temperature: 0.3,
max_tokens: 500
});
결과
프롬프트 엔지니어링 적용 후 응답 형식 일관성이 약 85%에서 95% 이상으로 개선됐다. 특히 few-shot examples가 가장 효과적이었고, system message만으로는 한계가 있었다.
API 비용 측면에서도 max_tokens 제한으로 불필요하게 긴 응답이 줄어 토큰 사용량이 약 30% 감소했다.
교훈
LLM API는 단순히 연결하는 것보다 프롬프트 설계가 더 중요하다. 특히 프로덕션 환경에서는 응답의 일관성과 예측 가능성이 핵심이므로, few-shot learning과 명확한 제약 조건 설정이 필수다.