---
title: "Prompting Guide for Claude Code"
source_type: web
source_url: https://www.anthropic.com/engineering/prompting-guide-for-claude-code
actual_source_url: https://claude.com/blog/best-practices-for-prompt-engineering
date: 2026-02-10
tags: [prompt-engineering, claude-code, best-practices, anthropic, LLM-prompting]
---

# 프롬프트 엔지니어링 베스트 프랙티스 요약

Anthropic 팀이 공개한 프롬프트 엔지니어링(Prompt Engineering) 가이드로, Claude 모델에서 더 나은 결과를 얻기 위한 명령어 구성 기법을 체계적으로 정리한 문서이다. 2025년 11월 게시되었으며, 핵심 기법부터 고급 기법, 흔한 실수까지 폭넓게 다루고 있다.

## 프롬프트 엔지니어링이란

AI 모델로부터 원하는 출력을 얻기 위해 명령어를 구조화하는 기술(craft)이다. 질문 구성, 스타일 지정, 맥락 제공, 모델 동작 유도 등을 포함한다. 막연한 지시와 잘 만들어진 프롬프트 사이에는 "일반적 출력"과 "정확히 원하는 결과" 사이의 차이가 존재한다.

## 핵심 기법 (Core Techniques)

### 1. 명확하고 명시적으로 작성하기 (Be Explicit and Clear)

- 직접적인 행동 동사 사용 ("Write", "Analyze", "Generate")
- 불필요한 서두(preamble) 생략하고 바로 요청으로 진입
- 출력물에 포함되어야 할 내용을 명시
- 예시: "분석 대시보드를 만들어줘" 대신 "분석 대시보드를 만들되, 관련 기능을 가능한 한 많이 포함해줘"

### 2. 맥락과 동기 제공하기 (Provide Context and Motivation)

- 왜 중요한지 설명하면 모델이 근본적인 목적을 이해
- 단순히 "불렛 포인트 사용 금지"라고 하기보다 "자연스러운 문단 형식을 선호한다, 대화체처럼 느껴지기 때문"이라고 이유를 설명
- 목적, 대상 독자, 출력 용도, 해결하려는 문제를 서술하면 효과적

### 3. 구체적으로 작성하기 (Be Specific)

- 명확한 제약 조건 포함 (단어 수, 형식, 일정 등)
- 관련 맥락 제공 (대상 독자, 목표)
- 원하는 출력 구조를 지정
- 요구 사항이나 제한 목록을 나열
- 예시: "지중해 식단 계획을 만들어줘" 대신 "당뇨 전단계 관리를 위한 지중해 식단을 설계해줘. 하루 1,800칼로리, 완전한 영양 분석 포함"

### 4. 예시 사용하기 (Use Examples)

- 원샷(one-shot) 또는 퓨샷(few-shot) 프롬프팅으로 원하는 형식을 시연
- 최신 Claude 모델은 예시의 세부 사항에 매우 주의를 기울임
- 설명만 하는 것보다 예시가 미묘한 패턴 전달에 더 효과적
- 예시 하나로 시작하고, 필요한 경우에만 추가

### 5. 불확실성 표현 허용하기 (Give Permission to Express Uncertainty)

- AI가 한계를 인정할 수 있도록 명시적으로 허용
- 예: "데이터가 불충분하면 추측하지 말고 그렇다고 말해줘"
- 환각(hallucination)을 줄이고 신뢰성을 높이는 효과

## 고급 기법 (Advanced Techniques)

### 응답 미리 채우기 (Prefill the AI's Response)

- 모델의 응답 시작 부분을 미리 작성하여 형식이나 톤을 유도
- JSON/XML 강제, 서두 생략, 특정 목소리 유지에 유용
- API에서는 여는 중괄호(`{`)로 시작하면 JSON 전용 출력을 강제 가능
- 채팅 인터페이스 대안: "서두 없이 유효한 JSON만 출력해줘. 여는 중괄호로 시작해"

### 사고 사슬 프롬프팅 (Chain of Thought Prompting)

세 가지 구현 방식:

1. **기본 CoT**: 지시에 "단계별로 생각해봐(Think step-by-step)" 추가
2. **가이드 CoT**: 특정 추론 단계를 구조화
3. **구조화된 CoT**: `<thinking>` 태그로 추론과 답변을 분리

참고: Claude 4.x의 확장 사고(Extended Thinking) 기능이 대부분의 경우 더 나은 선택이지만, 투명성이 필요할 때는 수동 CoT가 여전히 유용하다.

### 출력 형식 제어 (Control Output Format)

- 하지 말아야 할 것보다 해야 할 것을 지시
- 원하는 출력 스타일에 맞게 프롬프트 스타일을 맞추기
- 형식 선호를 명시적으로 표현
- 필요할 때 목록 대신 자연스러운 산문 사용

### 프롬프트 체이닝 (Prompt Chaining)

- 복잡한 작업을 순차적 단계로 분해
- 각 프롬프트가 하나의 단계를 처리하고, 출력이 다음 단계의 입력이 됨
- 지연(latency)을 감수하는 대신 정확도 향상
- 반복적 개선, 다단계 분석, 중간 검증에 유용
- 예시 워크플로우: 요약 -> 정확성 검토 -> 피드백 기반 개선

## 최신 모델에서 덜 중요해진 기법

### XML 태그

- 과거에는 구조화를 위해 권장되었으나, 최신 모델은 태그 없이도 잘 처리
- 극도로 복잡한 프롬프트에서는 여전히 유용
- 명확한 제목과 공백(whitespace)으로도 충분한 경우가 많음

### 역할 프롬프팅 (Role Prompting)

- 전문가 페르소나를 정의하는 것이 고급 모델에서는 덜 필요
- 모델을 과도하게 제약할 위험이 있음
- 직접적인 관점 요청이 더 효과적인 경우가 많음

## 의사결정 프레임워크

1. 요청이 명확하고 명시적인가?
2. 단순한 작업인가? -> 핵심 기법만 사용
3. 특정 형식이 필요한가? -> 예시/미리 채우기 사용
4. 복잡한 작업인가? -> 체이닝 고려
5. 추론이 필요한가? -> 확장 사고(Extended Thinking) 또는 사고 사슬 사용

## 흔한 문제와 해결책

| 문제 | 해결책 |
|------|--------|
| 응답이 너무 일반적 | 구체성 추가, 예시 제공, 포괄적 출력 요청 |
| 주제 이탈 또는 핵심 누락 | 실제 목표를 더 명시적으로, 맥락 제공 |
| 형식 불일치 | 예시 추가 또는 미리 채우기 사용 |
| 복잡한 작업에서 결과 불안정 | 프롬프트 체이닝으로 분리 |
| 불필요한 서두 | 미리 채우기 또는 바로 답변 요청 |
| AI가 정보를 지어냄 | "모르겠다"고 말할 수 있는 권한 부여 |
| 구현 대신 제안만 함 | 필요한 행동을 명시적으로 표현 |

## 피해야 할 실수

- 과도한 엔지니어링 금지: 길다고 항상 좋은 것은 아님
- 기본을 무시하지 말 것: 고급 기법으로 불명확한 핵심 프롬프트를 보완할 수 없음
- AI가 마음을 읽는다고 가정하지 말 것
- 모든 기법을 동시에 사용하지 말 것
- 반복(iteration)을 건너뛰지 말 것: 첫 시도가 완벽한 경우는 드묾
- 구식 기법에 의존하지 말 것

## 긴 컨텐츠 처리 참고사항

- 최신 Claude 모델은 맥락 인식이 개선됨
- 그래도 작업 분할(task-splitting)이 품질 집중에 도움
- 정보를 명확하게 구조화하되, 핵심 세부 사항은 시작 또는 끝에 배치
