주요 프롬프트 기법 4가지 정의 각 프롬프팅별 테스트 결과를 정리해 보았습니다.
각 프롬프팅병 결과 테스트를 정리해보았습니다.
Zero-Shot Prompting ( 제로샷 프롬프팅 )
(1) 한 줄 정리
제로샷 프롬프팅은 LLM에게 별도의 예시나 사전 학습 데이터 없이 바로 작업을 수행하도록 지시하는 기법입니다.
(2) 핵심 원리
별도의 예시 없이 , 해당 모델이 이미 데이터를 통해 학습한 지식을 바탕으로 결과물을 추론하여 도출하는 방식입니다.
(3) 사용 예시
광화문 BTS 공연이라는 특정 상황에 대해 정해진 양식없이 질문을 한 예시입니다.
→ 이렇게 제로샷 프롬프트의 경우 질문에 따라, 추론되어 자유로운 형태의 답변을 받게됩니다.
| 구분 | 질문 1 (자유 추론) | 질문 2 (형식 지정) |
|---|---|---|
| 프롬프트 | 키워드 기반의 정보 요청 | 명확한 출력 형식(표) 지시 |
| 추론 방식 | 가장 보편적인 보고서 맥락 선택 | 지시어에 따른 구조적 변환 |
| AR 특징 | 문맥의 일관성을 유지하는 서술적 생성 | 특정 기호(표)에 고착된 패턴 생성 |
(4) 사용처
Few-Shot Prompting ( 퓨-샷 프롬프팅 )
(1) 한 줄 정리
퓨 샷 프롬프팅은 원하는 결과에 대한 예시를 들어서 먼저 예시(Shot) 주고 LLM이 추론하는데 패턴과 형식을 컨텍스트로 학습시키는 방법입니다.
(2) 핵심 원리
: 모델을 별도로 학습시키지 않고 , 입력된 문맥만으로 모델의 행동을 변화시키는 문맥 내 학습을 핵심으로 합니다.
→ 퓨샷 프롬프팅은 "명령(Instruction)"만으로는 부족한 작업의 "답변 패턴(Pattern)"과 "출력 형식(Format)"을 데모(예시)로 직접 보여줌으로써, 모델이 방대한 지식 중 사용자가 원하는 특정 맥락에 빠르게 안착(Anchoring)하도록 유도하는 기법입니다.
(3) 사용 예시
**Prompt:**
문장에서 이름, 직업, 거주지를 추출하여 JSON 형식으로 출력하세요.
**입력:** "서울에 사는 프론트엔드 개발자 김철수 씨는 오늘 연차입니다."
**출력:** {"name": "김철수", "job": "개발자", "location": "서울"}
**입력:** "부산에서 카페를 운영하는 박영희 사장님을 만났습니다."
**출력:** {"name": "박영희", "job": "자영업자", "location": "부산"}
**입력:** "도쿄에서 요리사로 일하는 사토 씨가 한국에 왔습니다."
**출력:**
→ 결과: {"name": "사토", "job": "요리사", "location": "도쿄"}
(4) 사용처
Chain-of-Thought (CoT) [생각의 사슬]
(1) 한 줄 정리
CoT는 복잡한 문제를 한 번에 해결하지 않고 , 논리적인 중간 추론 단계를 순차적으로 생성하여 정답의 정확도를 높이는 기법입니다.
(2) 핵심 원리
→ 복잡한 문제를 추론하기에는 어려운 프롬프팅의 한계를 개선하기 위해 , "결과(Result)"가 아닌 "사고의 과정(Reasoning)"을 퓨샷 데모로 제공하여, 모델이 스스로 정답에 도달하기 위한 중간 논리 단계를 생성하도록 유도하는 기법입니다.
(3) 사용 예시
Prompt
**[Task]** Next.js FSD 구조에 맞춰 '상품 목록(Product List)' 기능을 구현하세요.
**[FSD Folder Rule]**
- `api/`: 외부 통신 로직 (Fetcher)
- `model/`: 상태 관리 및 비즈니스 로직 (Hooks, Types)
- `ui/`: UI 컴포넌트
**사고 과정(CoT)**
- 유저 데이터를 가져오는 API 호출 함수는 `features/user/api/`에 위치해야 함.
- 이 API를 호출하고 상태를 관리하는 리액트 훅은 `features/user/model/`에 위치해야 함.
- 외부에서는 이 훅을 통해 데이터에 접근함.
**Result (** 파일 코드 생략 )
- features/product-list/api/get-products.ts
- features/product-list/model/use-products.ts
(4) 사용처
Self-Consistency [자기 일관성]
(1) 한 줄 정리
하나의 고정된 추론 경로만 따라가지 않고, 여러 개의 다양한 추론 경로를 독립적으로 생성하고 , 가장 많이 도출된 공통 답변을 최종 정답으로 선택하는 기법입니다.
(2) 핵심 원리
→ 단일 추론 경로에서 발생할 수 있는 우발적 오류(Greedy Decoding의 한계)를 극복하기 위해, 여러 번의 '생각의 사슬(CoT)'을 시도하여 결과의 신뢰도와 일관성을 확보합니다.
(3) 사용 예시
→ 사용 예시: FSD 아키텍처 리팩토링 검증
Scenario: components/Login.tsx라는 거대하고 지저분한 레거시 파일을 FSD 구조로 분리하라는 임무를 받은 에이전트.
**Prompt**
**[Task]** 다음 레거시 파일을 FSD 구조에 맞게 리팩토링할 계획을 세우세요.
**[Rule]** 파일명과 상세 경로를 반드시 명시하세요.
**[File]** components/Login.tsx (API 호출, 유효성 검사, UI가 모두 섞여 있음)
**Reasoning Paths (에이전트가 내부적으로 생성한 3가지 제안)**
• **시뮬레이션 1:** * API 로직 추출 → `features/auth/api/login.ts`
◦ 상태 관리 추출 → `features/auth/model/use-login.ts`
◦ UI 분리 → `features/auth/ui/login-form.tsx`
◦ **결정:** **`features/auth` 슬라이스로 통합.**
• **시뮬레이션 2:** * API 로직 추출 →`shared/api/auth.ts`
◦ 상태 관리 추출 → `features/auth/model/use-login.ts`
◦ UI 분리 → `features/auth/ui/login-form.tsx`
◦ **결정:** **API는 `shared`로, 나머지는 `features/auth`로 분리.**
• **시뮬레이션 3:** * API 로직 추출→ `features/auth/api/login.ts`
◦ 상태 관리 추출 → `features/auth/model/use-login.ts`
◦ UI 분리 → `features/auth/ui/login-form.tsx`
◦ **결정:** **`features/auth` 슬라이스로 통합.**
**Result (최종 의사결정)**
**[Selection]** 시뮬레이션 1과 3이 동일한 구조를 제안함.
에이전트는 **`features/auth` 내부에 모든 로직을 캡슐화하는 방안**이 가장 일관성 있다고 판단하여 해당 경로로 파일 생성을 시작함.
(4) 사용처
실습 및 결과 정리( [LLM 실습] 의료급여 본인부담률 추출 실험: 프롬프트 기법별 성능 비교 )
: 본 포스팅에서는 의료급여 본인부담률 데이터를 바탕으로, 다양한 프롬프트 엔지니어링 기법(Zero-shot, Few-shot, CoT, Self-Consistency)이 LLM의 정답률에 미치는 영향을 실험하고 그 결과를 정리합니다.
실습 진행 전, 데이터의 특성과 모델의 능력을 고려하여 아래와 같은 가설을 세웠습니다.
1) Zero-shot(Step 1) 정답률 예측
| 난이도 | 정답률(예측) | 판단 근거 |
|---|---|---|
| Easy | 90% ~ 100% | 단순 키워드 매칭 및 표 내용 추출 단계 |
| Medium | 70% ~ 80% | 다중 조건(예: 2종 + 특정 질환 + 시술) 결합 시 오류 가능성 |
| Hard | 약 50% | 수치 연산과 추론 로직 결합 지점에서 환각 위험 높음 |
2) 가장 큰 개선이 일어날 난이도 예측
3) 가장 큰 정답률 점프가 일어날 기법
실행 환경
gemini-2.5-flash-lite (OpenAI 호환 엔드포인트)openai Python SDK, pydantic (구조화된 출력 검증)extracted-reference.md를 공통 참조 데이터로 사용프롬프트 전략
모든 Step에서 구조화된 출력(JSON)을 강제하여 평가의 객관성을 확보했습니다.
JSON
{ "answer": "최종 답안", "reason": "판단 근거 요약" }
| Step | 프롬프트 구성 | 정확도 | 평균 토큰/문항 | 비고 |
|---|---|---|---|---|
| Zero-shot | 참조 데이터 + 직접 추론 | 0.9333 | 1,458 | 예측 상회 (기본 성능 우수) |
| Few-shot | 예시 3개 추가 | 1.0 | 1,816 | 정답률 100% 도달 |
| CoT | 추론 단계 유도 | 1.0 | 1,993 | 초기 설계 시 형식 흔들림 주의 |
| Self-Consistency | 다수결 채택 | 1.0 | 6,741 | 비용/시간 대폭 증가 |
실험 전 세운 가설과 실제 데이터를 대조해 본 결과, 몇 가지 흥미로운 점을 발견했습니다.
가설 1: Zero-shot 정답률은 70% 이상일 것이다? (적중)
실제 결과는 93.3%로 가설을 크게 상회했습니다. 텍스트로 잘 정리된 extracted-reference.md를 제공하자 모델이 Hard 난이도에서도 뛰어난 추론 능력을 보여주었습니다. "데이터 전처리의 중요성"을 다시 한번 확인했습니다.
가설 2: Medium 난이도에서 가장 큰 개선이 있을 것이다? (불일치)
실제로는 Hard 난이도에서 실질적인 개선이 일어났습니다. Zero-shot에서 이미 Medium이 완벽에 가까웠기에, 남은 오답 2개를 해결한 Few-shot과 CoT의 기여는 Hard 문항에 집중되었습니다.
가설 3: CoT가 가장 큰 점프를 만들 것이다? (불일치)
가장 큰 정답률 점프는 Few-shot(0.9333 → 1.0)에서 발생했습니다. 이번 실험처럼 정답 형식이 고정된(Exact Match) 과제에서는 복잡한 추론 과정보다 "이런 형식으로 답하라"는 명확한 예시가 더 강력한 트리거가 됨을 배웠습니다.
결론 및 느낀 점
참고문헌