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가 강력하지만 복잡한 작업은 여전히 분해가 필요하다. 프롬프트 엔지니어링은 결국 좋은 추상화 설계와 같다는 걸 느꼈다.

GPT-4 API로 프롬프트 체이닝 구현하기