5.1 Zero-shot / Few-shot / CoT (Chain-of-Thought) 방식

프롬프트 엔지니어링(Prompt Engineering)은 생성형 AI를 활용하는 데 있어 매우 중요한 기술입니다. 특히 OpenAI의 GPT 모델을 활용할 때, 사용자 입력(prompt)의 형태와 구조에 따라 출력 결과가 크게 달라집니다. 이 절에서는 프롬프트 설계의 핵심 전략 중 세 가지—Zero-shot, Few-shot, 그리고 Chain-of-Thought(CoT, 사고의 사슬)—방식을 체계적으로 살펴보고, 각 방식의 특징과 실제 활용 예제를 통해 어떻게 성능을 향상시킬 수 있는지를 자세히 설명합니다.

5.1.1 Zero-shot Prompting: “설명 없이 바로 시도해보기”

Zero-shot(제로샷) 프롬팅은 가장 단순한 형태로, 어떤 예제도 제공하지 않고 질문이나 명령어만을 입력하여 모델의 일반적인 지식을 이용해 응답을 유도하는 방식입니다.

  • 장점:

    • 짧고 간결한 프롬프트

    • 사용 및 구현이 가장 간편함

    • 모델의 다양한 일반 지식을 활용

  • 단점:

    • 복잡한 문제 해결에는 한계가 있음

    • 응답의 일관성, 정확성이 부족할 수 있음

대표 예시:

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "아인슈타인의 상대성 이론을 간단히 설명해줘."}
    ]
)

출력 예시:

상대성 이론은 공간과 시간이 절대적인 것이 아니라 관측자에 따라 달라질 수 있다는 이론입니다. 주로 특수 상대성 이론과 일반 상대성 이론으로 나뉩니다….

Zero-shot은 FAQ 응답, 간단한 정보 검색, 기본 요약 등에 적합하지만, 프롬프트 설계가 단순한 만큼 사용자 의도와 정확한 일치를 장담하긴 어렵습니다.

5.1.2 Few-shot Prompting: “사례 몇 개 주고 따라 하게 하기”

Few-shot(퓨샷) 프롬팅은 모델에게 문제와 정답이 포함된 짧은 예제 몇 개를 함께 제공하여, 새로운 입력에 대해 유사한 방식으로 응답하도록 유도하는 방식입니다.

  • 장점:

    • 일관되고 형식화된 응답 유도 가능

    • 도메인 특화된 의도(ex. 고객 지원, 법률, 의료)를 학습시키는 데 효과적

    • 응답 패턴을 제시해 모델의 기대 행동을 확실히 정함

  • 단점:

    • 토큰 사용량이 늘어 비용 증가

    • 예제 선택과 배열 순서에 따라 성능이 민감하게 반응

대표 예시: 감정 분석

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "system", "content": "다음 문장의 감정을 분석해서 긍정, 부정, 중립 중 하나로 분류하세요."},
        {"role": "user", "content": "문장: '이 레스토랑 정말 좋았어요!' -> 감정: 긍정"},
        {"role": "user", "content": "문장: '서비스가 최악이었어요.' -> 감정: 부정"},
        {"role": "user", "content": "문장: '음식은 괜찮았지만, 특별하진 않았어요.' -> 감정: 중립"},
        {"role": "user", "content": "문장: '직원들이 무례했어요.' -> 감정:"}
    ]
)

출력 예시:

부정

적용 팁:

  • 예제는 3~5개가 적당하며, 가능하면 다양한 케이스를 포괄하도록 구성하십시오.

  • 예제는 가능한 한 “문제 - 정답” 구조로 명확하게 제시하는 것이 좋습니다.

  • 예제를 최신 순서로 배치하면 모델이 제일 마지막 패턴을 모방하려는 경향이 있습니다.

Few-shot은 간단한 분류 문제, 포맷 강제, 스타일 모방 등에 강점을 가지며, 대량 어노테이션 대신 빠르게 특정 태스크를 모델에 가르칠 수 있는 강력한 기법입니다.

5.1.3 Chain-of-Thought (CoT): “모델에게 사고 과정을 쓰게 하라”

Chain-of-Thought(CoT) prompting은 문제를 단순히 질문-응답 형태로 해결하는 대신, 중간 사고 과정을 문장 형태로 유도하여 모델이 문제를 단계적으로 해결하도록 돕는 방식입니다. 주로 논리적 추론, 수리 계산, 다단계 사고가 필요한 문제에 유용합니다.

  • 장점:

    • 논리적 일관성과 정확도 향상

    • 모델이 오류를 스스로 확인/보정할 수 있는 기회 부여

    • 복잡한 작업에서 reasoning 능력 유도

  • 단점:

    • 적절한 사고 흐름을 유도하기 위한 프롬프트 설계가 어려움

    • 모델마다 CoT 응답 품질이 다르게 나타남 (GPT-4 > GPT-3.5)

🔹 대표 예시: 수치 추론 문제

response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "사과 3개는 1500원이고 배 2개는 2000원이에요. 사과 2개와 배 3개를 사면 얼마인가요? 생각하는 과정을 보여주세요."}
    ]
)

출력 예시:

사과 3개가 1500원이므로 사과 1개는 500원입니다. 배 2개가 2000원이므로 배 1개는 1000원입니다. 따라서 사과 2개는 500원 × 2 = 1000원, 배 3개는 1000원 × 3 = 3000원입니다. 총합은 1000원 + 3000원 = 4000원입니다.

활용 기술:

  • "Let's think step by step" 또는 “생각의 과정을 보여줘” 같은 프롬프트를 추가하면 코트(CoT)가 자연스럽게 유도됨

  • GPT-4는 별도로 얘기하지 않아도 스스로 단계적 사고를 구성하는 경향이 있음

CoT 활용 예시:

  • 수학 및 문해력 문제 해결

  • 복잡한 사용자 요청 처리: 일정 조율 로직, 조건 분기

  • 고객 불만 분석 등 복합 감정 분류

전 팁:

Chain-of-Thought를 활성화하려면 다음과 같은 프롬프트 패턴을 사용해 보세요:

  • "Let's solve this step by step."

  • "First, let's analyze the problem."

  • "We can break this down into several logical steps."

5.1.4 세 가지 방식 비교표

특징
Zero-shot
Few-shot
Chain-of-Thought

예시 사용 여부

없음

2~5개 사용

예시는 선택 사항, 과정 유도 중요

장점

간결함, 적용 용이

특정 형식화 유도, 도메인 맞춤

복잡한 추론 유도 가능

단점

정확도 낮을 수 있음

예제 관리 필요

응답 길이 증가, 설계 난이도

권장 용도

간단한 질문, 정보 요청

분류/요약/형식화 응답

추론, 계산, 분석 문제

5.1.5 결론 및 전략적 사용 제안

프롬프트 전략은 질문의 복잡도, 도메인 특성, 필요한 출력 형식에 따라 선택되어야 합니다. 실제 서비스 구현 시에는 세 가지를 혼합하여 활용할 수 있으며, 다음과 같은 가이드를 추천합니다:

  • 단순 질문이나 규칙 기반 응답: Zero-shot

  • 특정 포맷이나 스타일을 따라야 하는 응답: Few-shot

  • 추론, 단계적 사고, 계산이 필요한 작업: CoT

또한, 프롬프트 개선은 반복 테스트와 사용자 피드백을 통해 최적화되므로, 다양한 방식의 프롬프트를 실험적으로 적용해보고 가장 일관되고 정확한 응답을 생성하는 전략을 채택하는 것이 중요합니다.

다음 절(5.2)에서는 이러한 프롬프트 방식에 기반하여 Structured Output(구조화된 출력)을 만드는 기법에 대해 상세히 다룰 예정입니다. 이를 통해 실제 애플리케이션에서 강력하고 유의미한 응답을 생성하는 실전 기술을 익히게 될 것입니다.

Last updated