GPT-4 API로 프롬프트 엔지니어링 실험한 기록
배경
3월 초 GPT-4 API 웨이트리스트에서 접근 권한을 받았다. 사내 문서 요약 툴에 적용하기 전에 프롬프트 패턴별 성능을 테스트했다.
테스트한 패턴들
1. Few-shot 예시 개수
0-shot, 1-shot, 3-shot으로 JSON 파싱 태스크를 비교했다. GPT-4는 0-shot에서도 충분히 잘 작동했고, 예시를 늘려도 품질 향상이 크지 않았다. 오히려 토큰만 낭비되는 느낌.
# 0-shot이 충분했던 케이스
system_message = """당신은 이메일을 JSON으로 변환하는 도구입니다.
출력 형식: {"subject": "", "priority": "high|normal|low", "action_items": []}"""
2. 시스템 메시지 구조화
역할, 제약사항, 출력 형식을 명확히 분리하니 일관성이 높아졌다. 특히 "절대 ~하지 말 것" 같은 부정 명령보다 "반드시 ~할 것" 긍정 명령이 효과적이었다.
3. Chain-of-Thought
복잡한 분석 태스크에서는 "단계별로 생각하세요"를 추가하니 정확도가 올랐다. 하지만 단순 분류나 추출 작업에선 불필요한 텍스트만 늘어났다.
user_prompt = f"""다음 코드 리뷰를 분석하세요.
1. 주요 이슈 파악
2. 심각도 판단
3. JSON 출력
코드 리뷰: {review_text}"""
실전 적용
결국 사내 툴에는 구조화된 시스템 메시지 + 0-shot 조합을 적용했다. GPT-3.5 대비 토큰 비용은 10배지만, 재시도 횟수가 1/5로 줄어서 실질 비용은 2배 수준이었다.
온도(temperature)는 0.3으로 설정했다. 창의성보다 일관성이 중요한 업무용 태스크라서.
교훈
- GPT-4는 지시를 잘 따라서 복잡한 프롬프트가 덜 필요하다
- 예시보다 명확한 구조와 제약사항이 더 중요하다
- 태스크 특성에 따라 CoT 적용 여부를 판단해야 한다
- 비용은 비싸지만 재시도 감소로 상쇄 가능하다