프롬프트 기초
효과적인 프롬프트 작성의 기본 원칙과 구조를 학습합니다.
프롬프트란 무엇인가?
LLM과 소통하는 방법
프롬프트(Prompt)는 LLM에게 전달하는 입력 텍스트입니다. 사용자의 의도를 모델에게 전달하는 인터페이스 역할을 합니다.
프롬프트 엔지니어링은 원하는 출력을 얻기 위해 프롬프트를 설계하고 최적화하는 기술입니다. 같은 질문도 어떻게 물어보느냐에 따라 결과가 크게 달라집니다.
프롬프트의 기본 구성
Zero-shot vs Few-shot 프롬프팅
예시 제공 여부에 따른 방식
LLM에게 작업을 요청할 때, 예시를 제공하느냐 마느냐에 따라 Zero-shot과 Few-shot으로 구분합니다.
어떤 예시도 제공하지 않고 작업을 요청합니다. 모델의 사전학습 지식에만 의존합니다.
- 간단하고 빠름
- 토큰 사용량 적음
- 정확도가 낮을 수 있음
- 출력 형식 불안정
하나의 예시를 보여주고 같은 방식으로 수행하도록 요청합니다. 형식을 학습시키기에 충분할 때 사용합니다.
- 형식 가이드 가능
- 적은 토큰으로 개선
- 편향될 수 있음
- 복잡한 작업엔 부족
여러 예시를 제공하여 패턴을 학습시킵니다. 복잡한 작업이나 특정 형식이 필요할 때 효과적입니다.
- 높은 정확도
- 일관된 출력 형식
- 토큰 사용량 증가
- 좋은 예시 선정 필요
- 다양한 케이스를 커버하는 예시 선택 (긍정/부정/중립 등)
- 예시의 순서도 중요 - 일반적인 것부터 특수한 것 순으로
- 실제 데이터와 비슷한 난이도의 예시 사용
- 너무 많은 예시(5개 초과)는 오히려 성능 저하 가능
역할(Role) 프롬프팅
페르소나를 부여하여 출력 조절
LLM에게 특정 역할이나 페르소나를 부여하면, 해당 관점에서 답변하도록 유도할 수 있습니다. 이는 출력의 톤, 깊이, 스타일을 조절하는 강력한 방법입니다.
API 사용 시 system 메시지에 역할을 부여하면 더 일관된 결과를 얻을 수 있습니다.
System prompt는 대화 전체에 걸쳐 유지되는 지침으로 작동합니다.
효과적인 프롬프트 구조
잘 구조화된 프롬프트 설계
잘 구조화된 프롬프트는 LLM이 의도를 정확히 파악하도록 돕습니다. 다음은 권장되는 프롬프트 구조입니다.
프롬프트 작성 베스트 프랙티스
좋은 프롬프트를 위한 핵심 원칙
프롬프트 개선 예시
실제 개선 사례 살펴보기
개선 전
개선 후
대상 독자 명시, 구체적인 길이 지정, 구분자(""")로 데이터 분리, 출력 형식 지정
개선 전
개선 후
번역 방향 명시(한→영), 스타일과 톤 지정, 입력/출력 구분
개선 전
개선 후
구체적인 알고리즘 명시, 언어 버전 지정, 코딩 스타일 요구사항, 예시 제공
자주 사용되는 구분자
프롬프트 구조화를 위한 도구
| 구분자 | 용도 | 예시 |
|---|---|---|
"""텍스트""" |
긴 텍스트 블록 | 문서, 기사, 코드 |
### ... ### |
섹션 구분 | 지시와 데이터 분리 |
<tag>...</tag> |
XML 스타일 구분 | <context>, <input> |
--- |
수평 구분선 | 섹션 나누기 |
[ ] |
플레이스홀더 | [여기에 입력] |
{ } |
변수/템플릿 | {user_name} |
Claude와 같은 최신 모델은 XML 태그를
특히 잘 인식합니다. <instructions>, <context>,
<examples> 등의 태그를 활용하면 더 정확한 결과를 얻을 수 있습니다.
핵심 요약
- 프롬프트 구성요소 — 지시 + 컨텍스트 + 입력 + 출력 형식
- Zero-shot vs Few-shot — 예시 제공 여부에 따른 프롬프팅 방식
- 역할 프롬프팅 — 페르소나 부여로 출력 스타일 제어
- 베스트 프랙티스 — 구체적 지시, 구분자 활용, 형식 명시