Search
moon
sun

Prompt Engineering

참고

프롬프트 엔지니어링 입문: LLM에게 일을 잘 시키는 법

같은 ChatGPT, 같은 Claude를 쓰는데 누군가는 바로 쓸 수 있는 답을 받고, 누군가는 뻔한 일반론만 받습니다. 차이는 모델이 아니라 질문을 설계하는 방식에 있습니다.
프롬프트 엔지니어링(Prompt Engineering)은 LLM이 원하는 결과를 안정적으로 내도록 입력을 설계하고 다듬는 일입니다. 이 글에서는 LLM이 텍스트를 어떻게 처리하는지 간단히 살펴본 뒤, 대표적인 프롬프팅 기법을 예시와 함께 정리해 보겠습니다.

1. LLM은 어떻게 작동할까?

토크나이저 (Tokenizer)

LLM은 글자를 그대로 읽지 않습니다. 입력 텍스트를 먼저 토큰(token) 단위로 쪼개고, 각 토큰을 정수로 인코딩해서 처리합니다.
"프롬프트 엔지니어링" → ["프", "롬", "프트", " 엔", "지니", "어링"] → [12345, 678, ...]
Plain Text
복사
실제 분할 결과는 모델마다 다릅니다. OpenAI의 Tokenizer 페이지에서 직접 확인해 볼 수 있어요.
여기서 알아둘 점은 한국어가 영어보다 토큰을 더 많이 쓰는 경우가 많다는 것입니다. 같은 의미의 문장이라도 한국어는 더 잘게 쪼개지는 경향이 있어서, 비용과 컨텍스트 길이에 영향을 줍니다.

LLM이 잘하는 일

•
요약 및 통찰 추출: 기사, 책, 제품 리뷰 같은 비정형 데이터를 요약하고 핵심을 뽑아냅니다.
•
분류와 변환: 강의평 분석, 번역, 필기를 표로 정리하기
•
생성: 레포트 초안, 이메일, 발표 아이디어 브레인스토밍

주의: 환각 (Hallucination)

LLM은 "그럴듯한 다음 토큰"을 예측하는 모델이라, 사실이 아닌 내용을 자신 있게 말할 때가 있습니다. 이를 환각(Hallucination) 이라고 부릅니다. 중요한 정보는 반드시 출처를 확인하고, 프롬프트에 "모르면 모른다고 답해줘" 같은 지시를 넣는 것도 도움이 됩니다.
여러 모델의 답변을 나란히 비교해 보고 싶다면 LMSYS Chatbot Arena를 써보세요.

2. LLM 설정값 (Settings)

API나 Playground에서 LLM을 쓸 때는 프롬프트 외에도 몇 가지 설정값을 조절할 수 있습니다.
설정
의미
팁
Temperature
출력의 무작위성. 높을수록 다양하고 창의적
사실 기반 답변은 낮게(0~0.3), 창작은 높게(0.7~1.0)
Top P
확률 상위 몇 %의 토큰 안에서 고를지
Temperature와 둘 중 하나만 조절하는 걸 권장
Max Tokens
출력의 최대 길이
너무 짧으면 답이 중간에 잘림
Stop Sequence
이 문자열이 나오면 생성을 멈춤
목록 개수나 형식을 제한할 때 유용

3. 프롬프팅 기법

3-1. Zero-shot Prompting

예시 없이 바로 작업을 요청하는 가장 기본적인 방법입니다. 모델이 사전 학습으로 얻은 일반적인 언어 이해 능력만으로 문제를 해결합니다.
Prompt: 교양 수업 '현대사회와 환경' 기말 레포트 주제 3개만 추천해 주세요. Output: 1. 대학 캠퍼스의 일회용품 사용 실태와 줄이는 방법 2. 패스트패션이 환경에 미치는 영향 3. 배달 음식 문화와 플라스틱 쓰레기 문제
Plain Text
복사
간단한 작업에는 충분하지만, 형식이 까다롭거나 기준이 미묘한 작업에서는 결과가 들쭉날쭉할 수 있습니다.

3-2. Few-shot Prompting

몇 가지 예시(입력-출력 쌍) 를 함께 주어서 모델이 패턴을 따라 하게 하는 방법입니다. 원하는 형식과 기준을 설명하는 것보다 보여주는 게 훨씬 정확할 때가 많습니다.
Prompt: 강의평을 보고 '추천 / 비추천 / 보통'으로 분류해 주세요. 강의평: 교수님이 설명을 진짜 친절하게 해주세요. 꿀강 인정 → 추천 강의평: 과제가 매주 나오고 출석도 엄격해요. 학점도 짜요. → 비추천 강의평: 무난해요. 시험만 잘 보면 될 듯 → 보통 강의평: 팀플 없고 시험 범위도 딱 정해주셔서 너무 좋았어요! → Output: 추천
Plain Text
복사
팁: 예시가 하나뿐이면 그대로 베끼는 경향이 있으니, 서로 다른 유형의 예시를 2~3개 주는 것이 좋습니다.

3-3. Contextual Prompting

프롬프트에 맥락(배경 정보) 을 추가해서 더 정확하고 개인화된 답을 얻는 방법입니다.
Prompt: 시험 기간 공부 계획 좀 짜주세요. 저는 대학교 2학년이고, 시험은 다음 주 월요일(전공), 수요일(교양), 금요일(전공)이에요. 평일엔 저녁 6~10시에 알바가 있고, 아침형 인간이에요. Output: 알바가 저녁에 있으니 오전~오후에 집중하는 계획을 추천해요. 주말에는 월요일 전공 과목을 집중적으로 공부하고...
Plain Text
복사
맥락 없이 "공부 계획 짜줘"라고만 하면 모델은 가장 평균적인 답(하루 8시간, 50분 공부 10분 휴식…)을 낼 수밖에 없습니다.

3-4. Task-specific Prompting

특정 작업이나 분야에 맞게 역할, 형식, 제약 조건을 명확히 지정하는 방법입니다.
Prompt: 너는 꼼꼼한 조교야. 아래 강의 필기를 시험 대비용으로 3줄 요약해 줘. 각 줄은 한 문장이고, 교수님이 "시험에 나온다"고 한 내용은 꼭 포함해 줘. [강의 필기 내용] Output: 1. ... 2. ... 3. ...
Plain Text
복사
"요약해줘"보다 "시험 대비용으로, 3줄로"처럼 구체적일수록 원하는 결과에 가까워집니다.

3-5. Chain-of-Thought (CoT) Prompting

모델이 단계별로 추론 과정을 거쳐 답을 내도록 유도하는 방법입니다. 수학, 논리 문제처럼 중간 과정이 필요한 작업에서 정확도가 크게 올라갑니다.
Prompt: 이번 학기 평균 학점을 단계별로 계산해 주세요. 전공A 3학점 A+(4.5), 전공B 3학점 B+(3.5), 교양 2학점 A0(4.0) Output: 1단계: 과목별 (학점 × 평점)을 구합니다. 3 × 4.5 = 13.5 / 3 × 3.5 = 10.5 / 2 × 4.0 = 8.0 2단계: 모두 더합니다. → 13.5 + 10.5 + 8.0 = 32.0 3단계: 총 이수 학점(8)으로 나눕니다. → 32.0 ÷ 8 = 4.0 답: 평균 학점은 4.0입니다.
Plain Text
복사

3-6. Zero-shot CoT

예시 없이 프롬프트 끝에 "단계별로 생각해 보자(Let's think step by step)" 한 줄만 추가하는 방법입니다. (Kojima et al., 2022)
간단하지만 효과가 꽤 큽니다.
Prompt: 이번 달 용돈 30만 원을 받았어요. 교재를 4만 원 주고 샀고, 동아리 회비로 2만 원을 냈어요. 그 뒤 알바비 10만 원이 들어왔고, 학식으로 하루 5천 원씩 20일을 썼어요. 남은 돈은 얼마인가요? 단계별로 생각해 봅시다. Output: 1. 처음 용돈은 30만 원입니다. 2. 교재 구입: 30만 - 4만 = 26만 원 3. 동아리 회비: 26만 - 2만 = 24만 원 4. 알바비 입금: 24만 + 10만 = 34만 원 5. 학식비: 5천 원 × 20일 = 10만 원 → 34만 - 10만 = 24만 원 따라서 남은 돈은 24만 원입니다.
Plain Text
복사

3-7. 프롬프트 튜닝: 반복해서 다듬기

좋은 프롬프트는 한 번에 나오지 않습니다. 결과를 보고 프롬프트를 고치고, 다시 실행하는 과정을 반복하면서 다듬어야 합니다.
v1: 교수님께 메일 써줘. → 무슨 용건인지 몰라서 뻔한 인사말만 길게 나옴 v2: 교수님께 과제 제출 기한 연장을 부탁하는 메일 써줘. → 용건은 맞지만 이유가 없어서 성의 없어 보임 v3: 교수님께 과제 제출 기한 연장을 부탁하는 메일 써줘. 이유는 예비군 훈련 때문이고, 증빙 서류도 첨부할 수 있어. 정중하지만 5문장 이내로 짧게 써줘. → 바로 보낼 수 있는 메일 완성
Plain Text
복사
참고: 학술적으로 "Prompt Tuning"은 모델에 학습 가능한 프롬프트 벡터(soft prompt)를 붙여 훈련하는 기법을 가리키기도 합니다. 여기서는 실무에서 흔히 말하는 "프롬프트를 반복해서 개선하는 과정"의 의미로 사용했습니다.
다듬을 때는 이렇게 해보세요.
1.
성공 기준 정하기: 좋은 답이 무엇인지 먼저 정의합니다. (예: 5문장 이내, 정중한 말투)
2.
테스트 입력 준비하기: 평범한 입력과 까다로운 입력을 몇 개 준비합니다.
3.
한 번에 하나만 바꾸기: 여러 곳을 동시에 고치면 무엇이 효과가 있었는지 알 수 없습니다.

4. 한눈에 정리

기법
핵심
언제 쓰나
Zero-shot
예시 없이 바로 요청
간단하고 명확한 작업
Few-shot
입력-출력 예시 제공
형식이나 분류 기준이 까다로울 때
Contextual
배경 정보 추가
개인화된 답이 필요할 때
Task-specific
역할·형식·제약 지정
결과물 형식이 정해져 있을 때
CoT
단계별 추론 유도
수학, 논리, 다단계 문제
Zero-shot CoT
"단계별로 생각해 보자" 추가
예시 없이 추론 정확도를 높이고 싶을 때
프롬프트 튜닝
결과를 보고 반복 개선
항상

참고 자료