GPT-3.5 프롬프트 엔지니어링 실전 패턴
배경
ChatGPT API가 공개되면서 사내 CS 자동응답 시스템에 적용을 검토하게 되었다. 기존 룰 베이스 챗봇의 한계를 넘어서기 위한 시도였는데, 프롬프트를 어떻게 작성하느냐에 따라 응답 품질이 천차만별이었다.
적용한 패턴
1. Role-based Prompting
역할을 명확히 지정하면 응답 톤이 일관되었다.
const systemPrompt = `당신은 전자제품 고객지원 전문가입니다.
- 친절하고 전문적인 톤을 유지합니다
- 기술 용어는 쉽게 풀어 설명합니다
- 3문장 이내로 답변합니다`;
2. Few-shot Learning
예시를 2~3개 제공하면 원하는 포맷으로 응답을 받을 수 있었다.
const fewShotExamples = [
{ user: "배송 조회", assistant: "주문번호를 알려주시면 배송 상태를 확인해드리겠습니다." },
{ user: "환불 요청", assistant: "환불 사유와 주문번호를 말씀해주세요." }
];
3. Constraints 명시
제약사항을 구체적으로 명시해야 했다. "간결하게"보다 "3문장 이내"가 효과적이었다.
실패 사례
처음엔 프롬프트를 한 줄로 작성했다가 응답이 너무 장황하거나 맥락을 벗어나는 경우가 많았다. 구조화된 프롬프트와 온도(temperature) 조정이 필수였다.
const response = await openai.createChatCompletion({
model: 'gpt-3.5-turbo',
messages: [
{ role: 'system', content: systemPrompt },
...fewShotExamples,
{ role: 'user', content: userMessage }
],
temperature: 0.7,
max_tokens: 150
});
결론
프롬프트 엔지니어링은 결국 반복 실험이었다. 같은 요청도 표현 방식에 따라 결과가 달랐고, 도메인별 최적 패턴을 찾는 과정이 필요했다. 현재는 약 80% 정도의 CS 문의를 자동으로 처리하고 있다.