Google Prompt Engineering Masterclass 핵심 가이드
프롬프트 학습을 하면서 기본적으로 봐야할 몇가지중에 하나인 Google 에서 나온 Prompt Engineeting 백서이다.
기본기부터 정말 잘 설명 되어있다. AI 입문하시는 분들이라면 꼭 정독해보시기 바랍니다.
참고 링크 : https://drive.google.com/file/d/1AbaBYbEa_EbPelsT40-vj64L-2IwUJHy/view
22365_3_Prompt Engineering_v7 (1).pdf
drive.google.com
프롬프트 엔지니어링은 대규모 언어 모델(LLM)은 질문에 답하거나, 텍스트를 요약하고, 코드를 생성하는 등 다양한 자연어 처리와 생성 업무에 활용할 수 있는 강력한 도구입니다. 하지만 단순히 질문을 던지는 것만으로 원하는 결과를 얻기는 어렵고, ‘프롬프트 엔지니어링’이 핵심 역량으로 떠오르고 있습니다.
프롬프트 엔지니어링은 LLM이 정확하고 유용한 출력을 만들 수 있도록 안내하는 고품질 프롬프트를 설계하는 과정입니다. 데이터 과학자나 머신러닝 엔지니어가 아니어도 누구나 프롬프트를 작성할 수 있지만, 가장 효과적인 프롬프트를 만드는 건 쉽지 않습니다. 잘못된 프롬프트는 모호하거나 부정확한 답변으로 이어지기 때문이죠.
이 글에서는 실무 중심, 개발자와 전문가 관점에서 꼭 알아야 할 프롬프트 엔지니어링의 핵심 개념, 주요 기법, 실전 예시 등을 정리해볼려고 한다.
1. LLM 출력 제어 및 구성 (LLM Output Configuration)
프롬프트뿐만 아니라 LLM의 다양한 구성 옵션도 중요합니다. 다음과 같은 설정을 적절히 조합해야 작업 목적에 맞는 최적의 결과를 얻을 수 있습니다.
- 출력 길이(Output length): 생성할 최대 토큰(문장 조각) 수를 설정합니다. 토큰 수가 많으면 응답 시간이 느려지고 비용이 올라갈 수 있으니, 원하는 길이를 프롬프트에 명확히 적거나 시스템에서 제한하세요.
- 샘플링 제어(Sampling controls): LLM은 확률적으로 다음 토큰을 예측합니다. 대표적 제어 옵션은 아래와 같습니다.
- 온도(Temperature): 낮을수록 일관적이고, 높을수록 창의적(무작위성↑) 결과가 나옵니다. 수학 등 정답이 중요한 작업은 0, 아이디어 브레인스토밍은 0.8~1.0 권장.
- Top-K / Top-P(Nucleus Sampling): 생성될 토큰 후보를 확률 기준으로 제한합니다. Top-K가 높으면 다양성↑, 낮으면 일관성↑. 일반적으로 Top-P=0.9
0.95, Top-K=3040, 온도=0.2~0.8 조합이 실무에 가장 많이 사용됩니다. - 반복 루프 버그 주의: 잘못된 샘플링 조합은 동일한 단어가 반복되는 ‘루프 버그’가 발생할 수 있으니, 적절히 조정하세요.
2. 주요 프롬프트 기법 (Prompting Techniques)
LLM의 출력 품질은 프롬프트 설계에 달려 있습니다. 아래 주요 프롬프트 기법을 상황에 따라 선택·조합해 사용하세요.
◼️ Zero-shot Prompting
- 예시 없이 “~해줘”라고만 작성하는 가장 기본형
- (예) “아래 리뷰가 긍정적인지 부정적인지 분류해줘.”
◼️ One-shot & Few-shot Prompting
- 예시 1개(원샷), 2~5개 이상(퓨샷) 제시해 원하는 출력 형태나 패턴을 LLM이 학습할 수 있게 유도
- (예) “아래와 같은 형식으로 요약해줘. 예시: …”
- Tip: 고품질 예시, 엣지 케이스 포함, 다양한 입력 케이스 준비
- 이 피자 주문을 JSON 으로 변환하세요 .
- 예시 1 : "페퍼로니를 곁들인 스몰 피자"
- 출력: { "size" : "small" , "toppings" : [ "pepperoni" ]}
예시 2 : "올리브와 버섯을 곁들인 라지 피자"
출력: { "size" : "large" , "toppings" : [ "olives" , "mushrooms" ]}
이제 다음 을 시도해 보세요 . "소시지를 곁들인 미디엄 피자"
출력:
◼️ 시스템/맥락/역할 프롬프트
- 시스템(System): 전체 목적·포맷 명시 (“모든 답변을 JSON으로 작성해줘”)
- 맥락(Contextual): 작업 상황·배경 설명 (“이 데이터는 마케팅 결과입니다”)
- 역할(Role): 전문가/담당자/성향 지정 (“데이터 분석가로써 답변해줘”)
- 이 세 가지는 상황에 맞게 자유롭게 중첩해서 사용 가능
◼️ 스텝백 프롬프트 (Step-back)
- 특정 작업 전 관련 일반 질문을 먼저 생각해보고, 그 결과를 다음 프롬프트에 활용
- LLM이 문제 맥락·배경지식을 먼저 활성화하고 난 뒤, 세부 작업을 더 잘 수행하도록 유도
- Tip: 단계별 로 생각해 보세요 . 제가 다섯 살 때 제 여동생은 저보다 두 배나 나이가 많았습니다. 이제 저는 스무 살 입니다 . 제 여동생은 몇 살 일까요 ?
◼️ Chain of Thought(CoT)
- LLM이 ‘추론의 단계’를 차근차근 써가며 문제를 풀게 유도 (“단계별로 설명하며 풀어줘”)
- 복잡한 논리·수학 문제나 논증에 특히 효과적. (예) “계산 과정까지 모두 보여줘.”
◼️ 자기 일관성(Self-consistency)
- CoT를 여러 번 반복 실행해 다양한 답변 중 가장 일관성 높은 출력을 선택 (샘플링+다수결)
- 더 정확한 결과와 높은 신뢰성 확보에 유용
◼️ Tree of Thoughts(ToT)
- CoT를 확장, 여러 추론 경로(생각의 나무)를 동시에 탐색해 복잡한 문제를 브레인스토밍식으로 해결
◼️ ReAct (Reason & Act)
- LLM이 추론(Reasoning)→외부 도구 사용(Act, 예: 검색/계산/DB조회)→관찰→추론 반복
- 복합적인 실시간 정보 연동이나 워크플로우 자동화에 필수적
3. 코드 프롬프팅 (Code Prompting)
- 코드 생성: Python, SQL, JS 등 다양한 언어 코드 생성 가능
- 코드 설명: 기존 코드의 작동 원리 해설, 주석 생성
- 코드 번역: A언어 → B언어 변환 (예: Python → Java)
- 코드 디버깅/리뷰: 오류 탐지, 코드 개선안 제안 등
- Tip: 폴더 를 요청 하고 모든 파일 이름에 "old_"를 붙이는 파이썬 코드를 만들어 보세요. 분위기 : 안전하고, 단어가 많아요
4. 자동 프롬프트 엔지니어링(APE)
- 인간이 일일이 프롬프트를 설계하지 않고, LLM 스스로 다양한 프롬프트를 생성·평가·최적화하도록 자동화
- 반복적 실험/수정/평가를 통한 고품질 프롬프트 발굴
- 대규모 워크플로우, 자동화 업무에 점점 도입 사례 증가
5. 프롬프트 엔지니어링 모범 사례 (Best Practices)
- 예시 제공: 원샷/퓨샷 예시 포함은 거의 필수. 다양한 상황·입력·출력 예시 준비
- 단순성(Simple is best): 문장은 간결하고 명확하게. 불필요한 제약·복잡성 최소화
- 출력 명시: 포맷, 길이, 데이터 타입 등 출력 조건을 프롬프트 내 명확히 지정
- 지시 vs 제약: ‘~하지 마라’(제약)보다 ‘~하라’(지시)가 명확하고 효과적
- 토큰 길이 제한: 프롬프트/출력 토큰 제한 설정으로 비용과 일관성 조절
- 변수 사용: 프롬프트 내 변수/플레이스홀더로 재사용성과 생산성↑
- 형식/스타일 실험: JSON, 표, Markdown 등 다양한 출력 형식 시도
- 클래스 순서 무작위화: 분류 작업의 경우 퓨샷 예시 순서도 섞어서 오버피팅 방지
- 모델 업데이트 대응: 최신 모델/데이터/아키텍처 변화에 따라 프롬프트도 재설계 필요
- 문서화와 기록: 각 프롬프트 시도/성공/실패 사례, 파라미터 등 꼼꼼히 기록, 템플릿화 권장
프롬프트 엔지니어링은 LLM을 실무에 완벽하게 녹여내는 ‘핵심 스킬’입니다. LLM 구성 옵션을 잘 조절 하며 새로운 사고를 결정해주는 저희의 도우미 이상의 효과를 가져오고 있습니다.
경험한결과 현재 시스템프롬프트, 역할 이 보편적으로 중요하면 Think out loud 방법을 더해 step 별로 진행하면 좀더 고려를 많이 하는것같다. 그리고 마지막 잔소리를 하면 요즘따라 감정이 생긴 친구같이 다른 방식으로 할려고하기때문에
살아있는 친구같은 느낌이 강하게 들고있다.
결과적으로 다들 프롬프트 입문하실때는 해당 부분을 참고하면서 진행해보시기 바랍니다.