GPT-4 API로 프롬프트 엔지니어링 실험해보기
배경
3월 14일 GPT-4가 공개되고 API도 대기자 명단을 통해 접근 가능해졌다. 사내에서 고객 문의 자동 분류 시스템을 개선하는 작업을 맡았는데, 기존 GPT-3.5-turbo로는 정확도가 70% 정도에 머물렀다. GPT-4 API 액세스를 받아 프롬프트 개선 작업을 진행했다.
실험 내용
1. Few-shot 예시 개수
GPT-3.5에서는 5개 예시가 최적이었지만, GPT-4는 3개만으로도 충분한 성능을 보였다. 토큰 비용을 고려하면 예시를 줄이는 게 유리했다.
const systemMessage = {
role: 'system',
content: '당신은 고객 문의를 분류하는 전문가입니다. 카테고리: 결제, 배송, 반품, 기타'
};
const fewShotExamples = [
{ role: 'user', content: '카드 결제가 안돼요' },
{ role: 'assistant', content: '결제' },
{ role: 'user', content: '언제 도착하나요?' },
{ role: 'assistant', content: '배송' }
];
2. 구조화된 출력
JSON 형식을 요청할 때 GPT-4는 더 일관된 결과를 냈다. 프롬프트에 명시적으로 스키마를 포함시키니 파싱 에러가 거의 사라졌다.
const prompt = `다음 형식으로만 응답하세요:
{
"category": "결제|배송|반품|기타",
"confidence": 0.0-1.0,
"reason": "짧은 설명"
}
문의: ${inquiry}`;
3. Chain-of-thought
복잡한 케이스에서는 "단계별로 생각해보세요"라는 지시를 추가하니 정확도가 5% 향상됐다. 특히 애매한 경계 케이스 처리가 개선됐다.
결과
- 분류 정확도: 70% → 87%
- 평균 응답 시간: 1.2초 (GPT-3.5 대비 +0.3초)
- 토큰 비용: 약 1.5배 증가
비용은 올랐지만 정확도 개선으로 CS 팀 업무량이 체감상 30% 줄었다는 피드백을 받았다. 프로덕션 배포 전 한 달간 A/B 테스트를 더 진행할 예정이다.
교훈
- GPT-4는 지시 이해도가 확실히 높다. 프롬프트를 더 간결하게 작성할 수 있었다
- 시스템 메시지 역할 분리가 중요하다. 역할과 출력 형식을 명확히 구분하니 안정성이 올랐다
- 실제 데이터로 반복 테스트가 필수다. 예상과 다른 케이스가 많았다