byteforce

CPN 한국어 자습서 · 러닝패스 2 / 4 — Building with the Claude API

프롬프트 엔지니어링

예시 제공하기

Providing examples

가장 효과적인 기법 중 하나 — 프롬프트 안에 이상적인 출력 예시를 직접 보여 주는 것입니다. 예시가 하나면 one-shot, 여럿이면 multi-shot이라 부릅니다. 코너 케이스와 복잡한 출력 형식을 다룰 때 특히 강력합니다.

전체 내레이션영상 나레이션 한국어 번역 (전체)

Stephen Grider · Anthropic 기술 스태프

이번 프롬프트 엔지니어링 기법은 정말 기대됩니다. 아마 여러분이 찾을 수 있는 가장 효과적인 기법 중 하나일 테니까요. 바로 프롬프트 안에 예시를 제공하는 아이디어입니다. 예시를 하나만 주는지 여럿 주는지에 따라 흔히 one-shot 또는 multi-shot 프롬프팅이라고 부릅니다.

예시를 보면 가장 이해하기 쉬우니 바로 보겠습니다. 오른쪽 프롬프트에서 저는 Claude에게 트윗의 감성을 분류하라고 합니다. 감성이란 이 글이 긍정적(행복한)인지 부정적(불행한)인지를 말합니다. 여기 입력 트윗은 “정말, 그래, ‘Plan 9 from Outer Space’ 이후로 본 최고의 영화였어”입니다.

혹시 모르실까 봐 말씀드리면, ‘Plan 9 from Outer Space’는 악명 높은 졸작 영화입니다. 그러니 누군가 이렇게 트윗했다면 사실 빈정대는 것이고, 방금 본 영화를 전혀 좋아하지 않았을 가능성이 큽니다. 그래서 이 트윗은 부정으로 분류하고 싶습니다. 그런데 Claude는 이를 분류하는 데 어려움을 겪을 수 있습니다.

이 문제를 푸는 한 방법이 multi-shot 프롬프팅입니다. 왼쪽의 시작 프롬프트에 예시를 몇 개 더해 줍니다. 예시를 더할 땐, 이제 예시 입력이상적인 출력을 줄 거라고 Claude에게 아주 직접적으로 알려 줍니다. 그리고 이 입력·출력을 거의 항상 XML 태그로 감싸, 입력·출력 쌍의 목적을 더 분명히 합니다.

예를 들어 “great game tonight”이라는 샘플 입력을 주는데, 이건 분명히 긍정적입니다. 그 바로 뒤에 “Positive”라는 이상적인 출력을 둡니다. 이렇게 하면 Claude에게 어떤 입력을 어떻게 다뤄야 하는지 구체적이고 객관적인 예가 생깁니다. 이제 Claude는 앞으로 이런 입력을 다시 보면 “Positive”로 분류하면 되겠다고 압니다.

multi-shot 프롬프팅은 여러 예시를 줘서 코너 케이스를 다룰 때 씁니다. 빈정대는 트윗이야말로 Claude에게 강조하고 싶은 코너 케이스죠. 코너 케이스 예시를 더할 땐 맥락도 함께 주고, 특정 상황을 특히 주의하라고 일러 줍니다. 가령 “빈정거림이 섞인 트윗을 특히 조심하라”고 한 뒤 곧바로 예를 듭니다.

그 예시 입력은 “오 그래, 오늘 밤 비행기 연착되면 딱 좋겠다, 아주 좋아”입니다. 빈정거림을 모른다면 긍정처럼 보이겠지만, 우리는 이게 빈정거림이고 사실은 부정임을 압니다. Claude도 이 예시를 보면 위쪽의 원래 입력을 채점할 때 “아, 이것도 빈정거림이구나, 부정이겠네” 하고 알아챌 가능성이 높아집니다.

multi-shot은 코너 케이스나 명료성뿐 아니라, Claude가 복잡한 출력 형식을 이해하도록 돕는 데도 좋습니다. 복잡한 JSON 객체를 생성해야 한다면, 샘플 입력과 예시 출력을 줘서 그 복잡한 JSON 구조를 보여 주면 됩니다. 그러면 원하는 출력 구조를 훨씬 잘 맞춥니다.

예시 제공은 지금 우리처럼 프롬프트 평가를 할 때 특히 효과적입니다. 우리 프레임워크로 평가를 돌리면 같은 폴더에 HTML 파일이 생깁니다. 이 파일을 훑어 완벽한 10점(없으면 가장 높은 점수)인 케이스를 찾습니다. 스크롤하다 보면 10점짜리가 보입니다. 이건 채점 모델이 “거의 최선”이라고 평가한 입력·출력입니다. 이걸 프롬프트 안의 예시로 제공하면, Claude가 이런 출력을 더 자주 내도록 유도할 수 있습니다.

해 봅시다. 이 입력을 복사해 프롬프트로 돌아가, Guidelines 아래로 스크롤합니다. 그리고 “이제 샘플 입력과 이상적인 출력을 담은 예시를 주겠다”고 Claude에게 명시합니다. 샘플 입력을 <sample_input> 태그 안에 넣고, 리포트에서 복사한 출력을 <ideal_output> 태그 안에 붙여 넣은 뒤 들여쓰기를 다듬습니다.

재평가 전에 마지막으로 한 가지 더 — 완전히 선택 사항이지만 저는 큰 효과를 봤습니다. 이 출력이 왜 이상적인지를 Claude에게 설명해 주는 것이죠. 리포트의 마지막 열에는 채점기가 왜 이게 좋은 응답이라고 봤는지가 적혀 있습니다. 그 설명의 앞부분을 복사해 닫는 </ideal_output> 태그 아래에 붙이고, 문장을 살짝 다듬어 “이 예시 식단은 잘 구조화되어 있고…”처럼 만듭니다. 이제 Claude는 왜 이게 이상적인 출력인지 더 잘 이해합니다 — 잘 구조화되고, 음식·분량의 세부가 있으며, 무엇보다 선수의 목표·제한에 맞아야 한다는 점을요.

이제 셀을 다시 실행하고 평가를 돌립니다. 올라갈까요 내려갈까요 — 7.96으로 살짝 올랐습니다. 정리하자면, 이 기법은 흔히 one-shot(예시 하나) 또는 multi-shot(예시 여럿) 프롬프팅이라 불립니다. Claude가 코너 케이스를 처리하게 하거나, 특히 복잡한 출력 형식을 맞추게 하고 싶을 때 아주 자주 쓰게 됩니다.

이 장에서 배우는 것What you'll learn

약 10분
1

예시 하나면 one-shot, 여럿이면 multi-shot 프롬프팅

2

예시 입력 + 이상적 출력 쌍을 보여 줘 출력을 유도한다

3

입력·출력 쌍은 거의 항상 XML 태그로 감싼다

4

빈정거림 같은 코너 케이스를 예시로 강조한다

5

복잡한 JSON 출력 형식도 예시 하나로 또렷이 전달

6

리포트에서 10점 케이스를 찾아 예시로 넣고 재평가 — 7.96

먼저 짚고 갈 용어
one-shot
예시를 하나만 제공하는 프롬프팅.
multi-shot
예시를 여럿 제공하는 프롬프팅. 코너 케이스나 복잡한 형식에 강하다.
sample_input / ideal_output
예시 입력과 이상적 출력을 감싸는 태그. 쌍의 목적을 또렷이 한다.
코너 케이스
빈정거림처럼 모델이 틀리기 쉬운 까다로운 경우. 예시로 콕 짚어 준다.

예시가 가장 강력한 이유

One-shot & multi-shot

가장 효과적인 기법 중 하나는 프롬프트에 이상적인 출력 예시를 직접 넣는 것입니다. 예시가 하나면 one-shot, 여럿이면 multi-shot. 트윗 감성 분류로 보면, “Plan 9 이후 최고의 영화”는 사실 빈정거림 — 예시가 없으면 Claude가 긍정으로 헷갈릴 수 있습니다.

0-shot · 빈정거림에 취약
Categorize the sentiment of the below tweet:

<input_tweet>
Yeah, sure, that was the best movie I've seen
since 'Plan 9 from Outer Space'.
</input_tweet>

If the tweet has a positive sentiment, respond with
"Positive". If it is negative, respond with "Negative".

# 빈정거림 → 사실은 부정이지만, 예시가 없으면 헷갈릴 수 있음

아래 위젯에서 예시를 0개 → 1개 → 여러 개로 늘려 보세요. 예시가 쌓일수록 코너 케이스를 또렷이 잡아냅니다.

0-shot → 1-shot → multi-shot · 예시를 더해 보세요
Categorize the sentiment of the below tweet: <input_tweet> Yeah, sure, that was the best movie I've seen since 'Plan 9 from Outer Space'. </input_tweet> Respond "Positive" or "Negative".
예측: Positive (오답)
예시 0개

빈정거림은 코너 케이스입니다. 예시가 없으면 “Positive”로 헷갈리지만, 이상적 입력·출력 쌍을 보여 줄수록 “이것도 빈정거림 → Negative”라고 알아챕니다. 예시가 많을수록 어려운 케이스에 강해집니다.

코너 케이스 & 복잡한 형식

Corner cases & formats

예시를 더할 땐 “이제 예시 입력이상적 출력을 주겠다”고 직접 알리고, 거의 항상 XML 태그로 쌍을 감쌉니다. 코너 케이스(빈정거림)는 맥락과 함께 콕 짚어 줍니다.

multi-shot · 빈정거림을 예시로 강조
Categorize the sentiment of the below tweet:
<input_tweet> ... </input_tweet>

If positive respond "Positive", if negative "Negative".

# 예시 1 — 단순한 긍정
<sample_input>Great game tonight!</sample_input>
<ideal_output>Positive</ideal_output>

Be especially careful with tweets that contain sarcasm:
# 예시 2 — 코너 케이스(빈정거림)
<sample_input>Oh yeah, I really need a flight
delayed tonight, excellent.</sample_input>
<ideal_output>Negative</ideal_output>
복잡한 출력 형식

예시는 코너 케이스뿐 아니라 복잡한 출력 형식에도 강력합니다. 복잡한 JSON을 원한다면, 샘플 입력과 예시 출력으로 그 구조를 보여 주세요 — Claude가 원하는 형식을 훨씬 잘 맞춥니다.

우리 프롬프트에 적용

Apply to our prompt

평가는 같은 폴더에 output.html 리포트를 만듭니다. 이걸 훑어 10점(없으면 최고점) 케이스를 찾고, 그 입력·출력을 프롬프트의 예시로 넣습니다. Guidelines 아래에 <sample_input>·<ideal_output>로 감싸 붙입니다.

run_prompt · 이상적 예시 + 근거 추가
# run_prompt 안, Guidelines 아래에 추가
Here is an example with a sample input and an ideal output:

<sample_input>
height: 170
weight: 70
goal: Maintain fitness and improve cholesterol levels
restrictions: High cholesterol
</sample_input>

<ideal_output>
**Daily Target:** ~Approximately 2500 calories
**Macronutrient Breakdown:** Protein (140g), Fat (70g), Carbs (340g)

**Meal Plan**
**Breakfast (7:00 AM):** Oatmeal (80g dry weight) with berries...
**Lunch (12:00 PM):** Grilled chicken breast (120g) salad...
...
</ideal_output>

This example meal plan is well-structured, provides detailed
information on food choices and quantities, and aligns with
the athlete's goals and restrictions.
출력 · 재평가 점수
Average score: 7.96
# 예시 + 근거 설명 추가 후. 직전(7.94)보다 살짝 올랐습니다.
근거도 함께(선택)

리포트 마지막 열의 채점 근거(왜 좋은 응답인지)를 닫는 </ideal_output> 아래에 덧붙이면 더 좋습니다 — “잘 구조화되고, 음식·분량이 자세하며, 목표·제한에 맞다”는 점을 Claude가 더 강하게 따라옵니다. 결과: 7.94 → 7.96.

정리 & 점검

Recap & check
핵심 정리
  • 예시 하나면 one-shot, 여럿이면 multi-shot — 가장 효과적인 기법 중 하나.
  • 예시 입력 + 이상적 출력 쌍을 XML 태그로 감싸 보여 준다.
  • 빈정거림 같은 코너 케이스복잡한 출력 형식에 특히 강하다.
  • 리포트의 10점 케이스를 예시로 넣고 근거까지 덧붙여 7.94 → 7.96.

Q1one-shot과 multi-shot의 차이는?

Q2예시 입력·출력을 보통 어떻게 넣나요?

Q3예시 제공이 특히 강력한 경우는?

MEMBER SESSION REQUIRED · REGISTRATION IS FREE

여기부터는 등록한 분에게 열립니다.

전 코스는 계속 무료입니다. 등록하면 이 코스의 남은 76개 레슨을 끝까지 읽을 수 있습니다.

등록하고 이어서 읽기

이미 등록하셨다면 그때 쓰신 이메일을 넣어 주세요.