GPT-4 API로 프롬프트 체이닝 구현하기
문제 상황
고객 문의 자동 분류 시스템을 구축하면서 단일 프롬프트로는 정확도가 70%를 넘기 힘들었다. 문의 내용 파싱, 카테고리 분류, 우선순위 판단을 한 번에 요청하니 중간에 맥락을 놓치는 경우가 많았다.
프롬프트 체이닝 도입
작업을 3단계로 분리했다.
const openai = require('openai');
async function classifyInquiry(text) {
// 1단계: 핵심 정보 추출
const extraction = await openai.chat.completions.create({
model: 'gpt-4',
messages: [{
role: 'system',
content: '고객 문의에서 제품명, 문제 유형, 긴급도를 JSON으로 추출하라.'
}, {
role: 'user',
content: text
}]
});
const extracted = JSON.parse(extraction.choices[0].message.content);
// 2단계: 카테고리 분류
const category = await openai.chat.completions.create({
model: 'gpt-4',
messages: [{
role: 'system',
content: '다음 정보를 바탕으로 CS 카테고리를 선택하라: 결제, 배송, 기술지원, 반품'
}, {
role: 'user',
content: JSON.stringify(extracted)
}]
});
// 3단계: 담당자 배정
const assignment = await openai.chat.completions.create({
model: 'gpt-4',
messages: [{
role: 'system',
content: '카테고리와 긴급도를 고려해 담당 팀을 배정하라.'
}, {
role: 'user',
content: `카테고리: ${category}, 긴급도: ${extracted.urgency}`
}]
});
return { extracted, category, assignment };
}
결과
- 정확도: 70% → 89%
- 각 단계별 로깅으로 디버깅 용이
- API 호출 3배 증가했지만 비용 대비 가치 충분
- 중간 결과를 캐싱해 재처리 시 비용 절감
교훈
GPT-4가 강력하지만 복잡한 작업은 여전히 분해가 필요하다. 프롬프트 엔지니어링은 결국 좋은 추상화 설계와 같다는 걸 느꼈다.