프롬프트 설계 — 메시지 역할·CoT·ReAct·샘플링·인젝션
프롬프트 설계 — 메시지 역할·CoT·ReAct·샘플링·인젝션
프롬프트는 단순히 LLM 에 보내는 문자열이 아니라 입력 인터페이스의 설계 자체에 가깝습니다. 메시지 구조 · 추론 유도 패턴 · 샘플링 매개변수 · 보안까지 한꺼번에 얽힙니다.
1. 메시지 역할에 대한 이야기
OpenAI 의 ChatML 이 2022 년 말에 자리 잡으며 메시지 역할이 표준 모양이 됐습니다. 현재 대부분 Chat Completions 호환 API 가 같은 구조를 따릅니다.
| 역할 | 의미 |
|---|---|
system |
모델의 페르소나·규칙·출력 형식 지시. |
user |
최종 사용자 입력. |
assistant |
모델의 이전 응답 (대화 이력). |
tool (또는 function) |
도구 호출 결과 반환. |
Anthropic Claude API 는 system 을 메시지 배열 밖의 별도 필드로 두는 약간 다른 모양. 의미는 같습니다.
2. 토크나이저
LLM 은 텍스트를 그대로 보지 않고 토큰 단위로 봅니다. tiktoken (OpenAI) · SentencePiece · BPE 변형이 모델마다 다릅니다. 한국어는 영어보다 토큰 수가 늘어나는 경향 (같은 의미여도 1.5~2 배). 토큰 수가 비용·컨텍스트 한도를 결정하므로 토크나이저 차이를 의식합니다.
3. Zero-shot · Few-shot
- Zero-shot — 예시 없이 지시만.
- Few-shot — 입력·출력 예시 몇 개를 함께. Brown et al. 의 GPT-3 논문 (2020) 에서 in-context learning 이라는 이름으로 정리됐습니다.
입력: 사과
출력: red
입력: 바나나
출력: yellow
입력: 포도
출력:
4. Chain-of-Thought (CoT)
Wei et al. 이 2022 년에 정리한 패턴. "단계별로 생각해 보자" 같은 유도 문구나, 추론 과정을 풀어쓴 예시를 함께 제공해 모델이 사고 과정을 출력하게 만듭니다. 산술·논리·다단계 추론에서 정답률이 오르는 사례가 보고됐습니다.
Kojima et al. (2022) 의 "Let's think step by step." 한 줄만으로 zero-shot 에서도 CoT 효과가 나타난다는 결과가 있습니다.
Self-Consistency (Wang et al. 2022) — 같은 질문을 높은 temperature 로 여러 번 풀게 한 뒤 다수결. CoT 와 함께 자주 거론.
5. ReAct
Yao et al. (2022). Reasoning + Acting 의 합성어. 모델이 "생각 (Thought) → 행동 (Action) → 관찰 (Observation)" 의 루프를 명시적으로 출력하게 해 도구 호출과 추론을 엮습니다. 현대 에이전트 프레임워크 다수가 ReAct 변형 기반.
Thought: 사용자가 어제 환율을 묻고 있다.
Action: search("어제 USD/KRW")
Observation: 1378.5
Thought: 답변을 정리한다.
Final Answer: ...
Tree-of-Thought (Yao et al. 2023) — 단일 사슬이 아니라 여러 사고 경로를 트리로 펼치고 각 노드를 평가·선택. 비용은 더 들지만 탐색이 필요한 문제.
6. 구조화 출력
JSON · XML 등 정해진 스키마로 출력을 강제하는 자리:
- 명시적 스키마 + 예시 제공.
- OpenAI · Anthropic · Google 의 JSON 모드 또는 schema 강제 옵션.
- 라이브러리 측의 검증·재시도 (Pydantic AI · Instructor · Outlines).
7. 샘플링 매개변수
| 매개변수 | 의미 | 효과 |
|---|---|---|
temperature |
확률 분포 평탄화 (0~2) | 0 에 가까울수록 결정적. |
top_p (nucleus) |
누적 확률 p 까지 후보 | 1.0 = 전부, 낮출수록 좁힘. |
top_k |
상위 k 개만 후보 | 모델·API 마다 지원 다름. |
presence_penalty |
등장한 토큰에 페널티 | 새 주제 유도. |
frequency_penalty |
자주 등장한 토큰에 페널티 | 반복 억제. |
seed |
시드 고정으로 재현성 시도 | API 마다 보장 다름. |
가닥의 예:
- 분류·추출처럼 결정적 출력이 필요 —
temperature=0. - 글쓰기·아이디어 —
temperature=0.7~1.0+top_p=0.9. - temperature 와 top_p 를 동시에 강하게 좁히면 출력이 단조로워집니다. 둘 중 하나만 조절하는 권고가 흔합니다.
8. 한국어 프롬프트의 특이점
토큰 효율 — 한국어는 같은 의미를 영어보다 더 많은 토큰으로 표현하는 경우가 많습니다. 컨텍스트와 비용에 영향.
존댓말·반말 혼재 — 별도로 지시하지 않으면 모델이 톤을 일관되지 않게 섞을 수 있습니다. system 메시지에 톤 명시.
고유명사·약어 — 외래어 표기가 모델별로 다를 수 있습니다. 첫 등장 시 영문 병기.
모델별 한국어 능력 편차 — 같은 모델군이라도 한국어에서의 안정성이 영어와 다르다는 관찰.
9. 시스템 메시지 패턴
당신은 전문 편집자입니다.
- 한국어로 답합니다.
- 단정 표현을 줄이고 객관적으로 서술합니다.
- 출력은 마크다운 형식입니다.
- 모르는 것은 모른다고 답합니다.
규칙이 너무 길면 모델이 일부를 무시한다는 관찰. 핵심 규칙을 짧게 두고 예외를 예시로 보여주는 모양이 안정적입니다.
평가 가닥:
- 작은 평가셋 (20~100 케이스) 을 먼저 만듭니다.
- 모델 변경·프롬프트 변경 시 같은 평가셋을 재실행해 회귀를 봅니다.
- 평가도 LLM 으로 자동화할 수 있지만 인간 검수 병행 권고.
10. 프롬프트 인젝션
OWASP 가 2023 년부터 LLM Top 10 을 정리하면서 첫째 위협으로 LLM01:2025 Prompt Injection 을 둡니다.
직접 인젝션 — 사용자가 입력에 "이전 지시를 무시하고…" 류의 문구를 넣어 모델 행동을 바꾸려는 시도.
간접 인젝션 — 모델이 검색·요약하는 외부 자료 (웹페이지 · 메일 · PDF) 안에 공격자가 미리 심어 둔 지시. 모델은 도구 결과로 받은 텍스트를 사용자 의도와 구분하지 않으면 그대로 따르려 합니다.
완화 가닥:
- 신뢰 경계 분리 — system · 사용자 입력 · 외부 도구 출력의 신뢰 수준을 다르게.
- 도구 결과를 인용하되 그 안의 지시를 따르지 말라는 제약을 system 에.
- 출력 검증 · 도구 화이트리스트 · 권한 최소화.
- 사람 승인이 필요한 동작 (파일 삭제 · 결제) 을 별도 권한 단계로.
완전한 방어는 아직 없다는 평가가 다수. 모델이 변하면 회귀 가능성을 둡니다.
11. 자주 걸리는 자리
컨텍스트 위치 효과 — "lost in the middle". 핵심 자료를 중간에 두면 양 끝보다 덜 반영된다는 관찰.
CoT 의 노출 — 사고 과정을 사용자에게 보이지 않을 정책이 있을 수 있습니다. 별도 채널·요약 분리.
자신감 있는 오답 — 모델은 모르는 자리에서도 자연스럽게 답합니다. "모를 때는 모른다고" 명시 + 도구·검색 보완.
few-shot 예시 편향 — 예시의 형식·길이·순서가 출력에 영향. 예시 다양화·순서 무작위화.
모델 버전 차이 — 같은 모델명이라도 시점에 따라 행동이 달라집니다. API 의 모델 스냅샷·날짜 핀 고정.
temperature=0 이라도 동일하지 않음 — 인프라 측 비결정성으로 완전 재현이 보장되지 않는다는 보고.
JSON 모드의 한계 — 스키마를 강제해도 의미적으로는 빈 값·일관되지 않은 라벨이 나올 수 있습니다. 후처리 검증 필요.
하고픈 말
프롬프트 설계는 작은 변화가 큰 결과 차이를 만들지만 측정 없이는 어느 변경이 좋아진 건지 확신하기 어렵습니다. 작은 평가셋을 먼저 만들고 모델 핀을 고정한 뒤 점진적으로 튜닝하는 흐름이 가장 단단합니다. 인젝션 완화는 시스템 설계 단계의 신뢰 경계 분리가 핵심이고, 프롬프트 한 줄로 막을 수 있는 자리는 거의 없습니다.
Next
- gemini-api
- embeddings-deep
Brown et al. GPT-3 (2020) · Wei et al. CoT (2022) · Yao et al. ReAct (2022) · Liu et al. Lost in the Middle (2023) · OpenAI Prompt 가이드 · Anthropic Prompt 가이드 · Gemini Prompt 가이드 · OWASP LLM Top 10 을 참고합니다.