LLMops

[Prompt Engineering] 프롬프트 엔지니어링의 기초 기법들

dong_seok 2025. 4. 29. 22:16

프롬프트 엔지니어링은 대규모 언어 모델(LLM)의 잠재력을 최대한 활용하기 위한 중요한 기술입니다. 적절한 프롬프트 기법을 사용하면 복잡한 문제 해결, 정확한 정보 검색, 창의적인 콘텐츠 생성 등 다양한 작업에서 더 나은 결과를 얻을 수 있습니다. 이 글에서는 프롬프트 엔지니어링의 기본 기법들을 소개하고, 각 기법의 장단점과 활용 사례를 살펴보겠습니다.

 

1. Zero-shot Prompting: 기본 중의 기본

1) 개념

  • 언어 모델에게 예제나 시연 없이 직접 작업을 지시하는 방법
  • 모델이 사전 학습 과정에서 습득한 지식을 바탕으로 작업을 수행
  • 가장 단순하고 직관적인 프롬프트 방식

2) 작동 원리

  • LLM은 대량의 텍스트 데이터로 사전 학습되어 있어 다양한 지식을 내포
  • 명확한 지시만으로도 기본적인 작업을 수행할 수 있음
  • 모델의 파라미터 크기가 클수록 Zero-shot 성능이 향상됨

3) 적용 사례

  • 텍스트 분류: "다음 리뷰가 긍정적인지 부정적인지 분류해주세요."
  • 번역: "다음 문장을 영어로 번역해주세요."
  • 질문 답변: "인공지능의 정의는 무엇인가요?"

4) 한계점

  • 복잡한 추론이 필요한 작업에서는 성능이 제한적
  • 특수 도메인 지식이 필요한 작업에서 부정확할 수 있음
  • 모델이 작업을 정확히 이해하지 못할 경우 관련 없는 답변 생성 가능

2. Few-shot Prompting: 예시를 통한 학습

1) 개념

  • 언어 모델에게 몇 가지 예시를 제공한 후 유사한 패턴의 작업을 요청하는 방법
  • 복잡하거나 특수한 작업에서 Zero-shot의 한계를 극복
  • "in-context learning"(문맥 내 학습)의 대표적인 형태

2) 작동 원리

  • 입력-출력 쌍의 예시를 통해 모델에게 작업의 패턴을 보여줌
  • 모델이 제공된 예시의 패턴을 파악하고 새로운 입력에 적용
  • 예시의 개수, 품질, 다양성이 성능에 영향을 미침

3) 예시 구성 방법

  • 입력-출력 쌍을 명확하게 구분하여 제시
  • 다양한 케이스를 포함하여 모델의 이해도 향상
  • 실제 문제와 유사한 난이도와 형식의 예시 선택
입력: 이 영화는 정말 재미있었어요!
출력: 긍정

입력: 시간 낭비였습니다.
출력: 부정

입력: 음식은 괜찮았지만 서비스가 아쉬웠어요.
출력: [여기에 답변 생성]

4) 효과적인 활용 영역

  • 특수 형식의 데이터 변환
  • 특정 스타일의 텍스트 생성
  • 복잡한 분류 작업
  • 도메인 특화 작업

5) 한계점

  • 토큰 제한으로 인해 많은 예시를 제공하기 어려움
  • 예시 선택의 편향이 결과에 영향을 미칠 수 있음
  • 예시 준비에 시간과 노력이 필요

3. Chain-of-Thought (CoT)

1) 개념

  • 복잡한 추론 과제에서 중간 사고 과정을 단계별로 보여주는 방법
  • "Let's solve this step by step"과 같은 사고 유도 문구 활용
  • 복잡한 수학 문제, 논리 퍼즐, 다단계 추론 작업에 효과적

2) 작동 원리

  • 모델에게 문제 해결을 위한 중간 단계를 명시적으로 생성하도록 유도
  • 단계별 추론을 통해 최종 답변의 정확도 향상
  • 모델이 문제를 분해하고 체계적으로 접근하도록 도움

3) Few-shot CoT 예시

문제: 영희는 사과 5개를 가지고 있었습니다. 철수에게 2개를 주고, 민수에게서 3개를 받았습니다. 영희는 사과를 몇 개 가지고 있나요?

풀이:
1. 영희의 초기 사과 개수: 5개
2. 철수에게 준 사과: 2개
3. 영희에게 남은 사과: 5 - 2 = 3개
4. 민수에게서 받은 사과: 3개
5. 영희의 최종 사과 개수: 3 + 3 = 6개
답: 6개

문제: [새로운 문제]
풀이:

4) 효과적인 활용 영역

  • 수학 문제 해결
  • 논리 퍼즐
  • 다단계 계획 수립
  • 복잡한 분석이 필요한 질문

5) 한계점

  • 작은 규모의 모델에서는 효과가 제한적
  • 사고 과정 예시 작성에 전문성이 필요
  • 프롬프트 길이가 길어져 토큰 소비 증가

4. Zero-shot Chain of Thought

1) 개념

  • CoT의 장점을 유지하면서 예시 작성의 번거로움을 해결하는 방법
  • "Let's think step by step"과 같은 간단한 지시문만으로 단계적 사고 유도
  • 최소한의 프롬프트로 복잡한 추론 능력 활용

2) 작동 원리

  • 모델에게 단계적 사고를 명시적으로 요청
  • 모델이 스스로 문제 해결 단계를 생성하고 따라가도록 유도
  • 사고 과정의 외재화를 통한 오류 감소

3) 프롬프트 예시

문제: 한 상자에 빨간 공 3개, 파란 공 5개, 녹색 공 2개가 있습니다. 무작위로 공 2개를 동시에 꺼낼 때, 두 공의 색이 서로 다를 확률은?

단계적으로 생각해봅시다.

4) 효과와 활용

  • 간결한 프롬프트로 복잡한 추론 유도
  • 다양한 문제 유형에 범용적으로 적용 가능
  • 최소한의 맥락으로 효율적인 토큰 사용

5) 한계점

  • 일부 복잡한 문제에서는 Few-shot CoT보다 성능이 낮을 수 있음
  • 모델의 기본 능력에 의존하므로 모델 성능에 따라 결과 차이가 큼

5. Self-Consistency

1) 개념

  • CoT를 확장하여 여러 추론 경로를 생성한 후 가장 일관된 답변 선택
  • 다양한 접근 방식을 통해 단일 추론의 오류 가능성 감소
  • 집단 지성(wisdom of crowds) 원리를 LLM에 적용

2) 작동 과정

  • 동일한 문제에 대해 여러 CoT 추론 경로 생성 (샘플링)
  • 각 경로에서 도출된 답변들을 수집
  • 가장 많이 도출된 답변(다수결)을 최종 결과로 선택

3) 구현 방식

  • 온도(temperature) 설정을 높여 다양한 추론 경로 생성
  • 각 추론에서 도출된 최종 답변 추출 및 집계
  • 가장 빈도가 높은 답변 또는 확률적으로 가장 유력한 답변 선택

4) 효과적인 활용 영역

  • 고난도 수학 문제
  • 불확실성이 높은 추론 작업
  • 정확도가 중요한 의사 결정 시나리오

5) 한계점

  • 여러 추론 경로 생성으로 인한 계산 비용 증가
  • 구현 복잡성이 높아 실용적 적용이 어려울 수 있음
  • 일부 문제에서는 다수결이 항상 최적 답변을 보장하지 않음

6. Generated Knowledge (GoT)

1) 개념

  • 모델이 문제 해결에 필요한 배경 지식을 먼저 생성한 후 추론하는 방법
  • 복잡한 추론 전에 관련 사실, 개념, 원리를 명시적으로 정리
  • 지식 생성과 추론을 분리하여 더 정확한 결과 도출

2) 작동 과정

  • 문제와 관련된 배경 지식, 개념, 원리 생성
  • 생성된 지식을 바탕으로 CoT 추론 수행
  • 필요시 추가 지식 생성과 추론을 반복

3) 프롬프트 구조 예시

문제: [문제 설명]

1. 먼저 이 문제를 해결하는 데 필요한 관련 지식을 정리해봅시다:
[지식 생성 공간]

2. 위 지식을 바탕으로 문제를 단계적으로 해결해봅시다:
[추론 공간]

4) 효과적인 활용 영역

  • 특수 도메인 지식이 필요한 문제
  • 개념 이해가 중요한 교육적 맥락
  • 복잡한 과학/수학 문제
  • 전문 분야의 질문-답변

5) 장점

  • 관련 지식의 명시적 활성화로 정확도 향상
  • 추론 과정의 투명성 증가
  • 지식 부족으로 인한 오류 감소

6) 한계점

  • 생성된 지식의 정확성에 의존
  • 프롬프트 길이와 복잡성 증가
  • 일부 간단한 문제에서는 불필요한 오버헤드 발생

 

프롬프트 엔지니어링은 LLM의 잠재력을 최대한 활용하기 위한 핵심 기술로, 지속적으로 발전하고 있습니다. 기본 기법들을 이해하고 효과적으로 적용함으로써, 복잡한 문제 해결부터 창의적인 콘텐츠 생성까지 다양한 작업에서 AI의 능력을 크게 향상시킬 수 있습니다. 각 기법의 장단점을 파악하고 상황에 맞게 활용하는 것이 프롬프트 엔지니어링의 핵심입니다.

 

참고자료

패스트 캠퍼스 - 국내 공채 1호 프롬프트 엔지니어 강수진의 프롬프트 엔지니어링 A to Z