Prompt Engineering — 효과적인 프롬프트 설계

beginner5 min read
선행 개념

Summary

Prompt Engineering은 LLM에게 원하는 출력을 생성하도록 입력 텍스트(프롬프트)를 체계적으로 설계하는 기법이다. 모델의 가중치를 변경하지 않고 행동을 제어하는 가장 빠른 방법이다.

Why It Matters

동일한 LLM이라도 프롬프트에 따라 결과가 극적으로 달라진다. 잘 설계된 프롬프트는 파인튜닝 없이도 대부분의 작업에서 충분한 성능을 발휘한다. RAG 시스템에서는 검색된 문서를 어떻게 프롬프트에 포함하느냐가 응답 품질을 결정한다.

Core Diagram

System Prompt (역할, 규칙, 포맷)
       ↓
Few-shot Examples (입출력 예시)
       ↓
Context (검색된 문서, RAG)
       ↓
User Query (사용자 질문)
       ↓
     LLM
       ↓
   Response

Concept Explanation

프롬프트의 구성 요소

요소설명예시
System Prompt모델의 역할과 행동 규칙"당신은 한국어 기술 문서 전문가입니다"
Few-shot입출력 예시Q: "API란?" A: "응용 프로그램 인터페이스..."
Context참고할 외부 정보RAG로 검색된 문서
Instruction구체적 작업 지시"다음 텍스트를 3줄로 요약하세요"

주요 기법

Zero-shot: 예시 없이 직접 지시

다음 텍스트의 감정을 분석하세요: "오늘 날씨가 너무 좋다!"

Few-shot: 예시를 포함하여 패턴 학습 유도

텍스트: "정말 실망이다" → 감정: 부정
텍스트: "최고의 서비스!" → 감정: 긍정
텍스트: "오늘 날씨가 너무 좋다!" → 감정:

Chain-of-Thought (CoT): 단계별 추론 유도

문제를 단계별로 풀어보세요:
1단계: ...
2단계: ...
따라서 답은: ...

RAG에서의 프롬프트 설계

[System] 당신은 사내 문서 기반 Q&A 시스템입니다.
         반드시 아래 문서 내용만을 근거로 답변하세요.
         근거가 없으면 "확인할 수 없습니다"라고 답하세요.

[Context] {검색된 문서 1} {검색된 문서 2} {검색된 문서 3}

[User] {사용자 질문}

System Perspective

LLM 시스템에서 프롬프트는 최종 응답 생성 직전에 조합된다:

  1. 프롬프트 템플릿: 미리 정의된 구조 (System + Context 슬롯)
  2. 컨텍스트 주입: RAG 검색 결과를 프롬프트에 삽입
  3. 토큰 관리: 컨텍스트 윈도우 내에 맞추기 위한 트렁케이션
  4. LLM 호출: 조합된 프롬프트로 응답 생성

Practical Insight

  • 프롬프트는 코드처럼 버전 관리하라 — 작은 변경이 큰 결과 차이를 만든다
  • 모호한 지시보다 구체적 포맷을 명시하라 ("JSON으로 출력", "3가지로 정리")
  • 부정형("하지 마세요")보다 긍정형("하세요")이 더 효과적이다
  • Temperature, Top-P 등 생성 파라미터와 함께 최적화해야 한다
  • 프롬프트 길이는 짧을수록 좋다 — 불필요한 지시는 노이즈가 된다

Common Misunderstandings

  • Prompt Engineering은 "마법의 주문"이 아니다 — 체계적 실험과 평가가 필요하다
  • 한 모델에서 최적인 프롬프트가 다른 모델에서도 최적이라는 보장이 없다
  • Few-shot 예시가 많다고 항상 좋은 것은 아니다 — 토큰 비용과 품질의 균형을 맞춰라
  • System Prompt가 절대적 제약은 아니다 — 모델은 지시를 무시할 수 있다 (Jailbreak)

Connected Topics

  • 이전: Transformer
  • 다음: RAG Pipeline
  • 관련 실험: Temperature Lab

다음 학습 주제

관련 실험실