k
korAI
중급 전체
중급2026-09-086분

예시 3개로 AI 말투를 내 것으로 만드는 Few-Shot 패턴

Few-Shot 프롬프팅은 원하는 출력 형식·톤·논리를 예시로 직접 보여주는 기법입니다. 규칙을 길게 설명하는 것보다 짧은 예시 2~3개가 훨씬 강력하게 동작합니다.

few-shotprompt-engineeringclassification

왜 Few-Shot인가?

system 프롬프트에 규칙을 아무리 상세하게 써도 모델이 의도한 형식을 벗어날 때가 있습니다. Few-Shot은 "이렇게 해줘"가 아니라 "이렇게 했어"를 직접 보여주는 방식이라 재현율이 크게 높아집니다.

언제 쓰면 좋은가?

| 상황 | 이유 | |---|---| | 출력 포맷이 고정되어 있을 때 | JSON·표·마크다운 등 구조를 강제 | | 도메인 특유 말투가 필요할 때 | 법률, 의료, 사내 문체 등 | | 분류/라벨링 작업 | 레이블 기준을 예시로 전달 | | 규칙 서술이 모호해질 때 | 예시가 규칙보다 명확 |

실전 코드 — 고객 리뷰 감성 분류기

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const FEW_SHOT_EXAMPLES = [
  {
    role: "user" as const,
    content: "리뷰: 배송이 너무 느렸어요. 다음엔 다른 곳 이용할게요.",
  },
  {
    role: "assistant" as const,
    content: JSON.stringify({ sentiment: "negative", confidence: 0.92, reason: "배송 불만" }),
  },
  {
    role: "user" as const,
    content: "리뷰: 가격 대비 품질이 괜찮네요. 재구매 의향 있어요.",
  },
  {
    role: "assistant" as const,
    content: JSON.stringify({ sentiment: "positive", confidence: 0.88, reason: "가성비 만족" }),
  },
  {
    role: "user" as const,
    content: "리뷰: 그냥 보통이에요. 특별히 좋거나 나쁘진 않아요.",
  },
  {
    role: "assistant" as const,
    content: JSON.stringify({ sentiment: "neutral", confidence: 0.79, reason: "중립적 평가" }),
  },
];

async function classifyReview(review: string) {
  const response = await client.messages.create({
    model: "claude-haiku-4-5",
    max_tokens: 256,
    system:
      "당신은 리뷰 감성 분류 전문가입니다. " +
      "반드시 JSON 형식으로만 응답하세요: " +
      '{ sentiment: "positive"|"negative"|"neutral", confidence: 0~1, reason: string }',
    messages: [
      ...FEW_SHOT_EXAMPLES,
      { role: "user", content: `리뷰: ${review}` },
    ],
  });

  const raw = response.content[0].type === "text" ? response.content[0].text : "";

  try {
    return JSON.parse(raw);
  } catch {
    throw new Error(`JSON 파싱 실패: ${raw}`);
  }
}

// 실행 예시
const result = await classifyReview("포장은 예쁜데 제품이 기대 이하였어요.");
console.log(result);
// { sentiment: 'negative', confidence: 0.81, reason: '제품 품질 실망' }

Few-Shot 품질을 높이는 체크리스트

  • [ ] 예시는 2~5개가 적당 — 너무 많으면 토큰 낭비, 1개는 패턴 학습 불충분
  • [ ] 각 예시가 다른 케이스를 커버하는지 확인 (긍정·부정·중립처럼)
  • [ ] 예시의 출력 형식이 100% 일관된지 검토 (따옴표, 필드명 등)
  • [ ] 실제 운영 데이터에서 엣지 케이스를 예시로 포함했는지 확인
  • [ ] 예시가 늘어날수록 입력 토큰 비용을 모니터링할 것
  • [ ] Haiku로 먼저 검증 후 필요 시 Sonnet으로 업그레이드