본 글은 Anthropics의 prompt-eng-interactive-tutorial을 번역하고 보충한 글입니다.
포크된 repository에서는 이후 이슈가 발생할 경우 업데이트 될 예정이니 확인해주시면 감사하겠습니다.

Anthropic Prompt Engineering 101 완벽 가이드 - Part 1: 환경 설정 및 시작하기
1. Claude와 함께하는 프롬프트 엔지니어링의 정석
GitHub에서 약 4,800개 이상의 스타를 받으며 개발자들 사이에서 '프롬프트 바이블'로 불리는 튜토리얼이 있습니다. 바로 Anthropic이 공식적으로 공개한 'Interactive Prompt Engineering Tutorial'입니다.
최근 LLM(대형 언어 모델) 시장에서 Claude 3.5 Sonnet과 최신 Claude 3.7 Sonnet의 등장은 개발자들에게 큰 충격을 주었습니다. 단순히 성능이 좋아진 것을 넘어, 인간의 의도를 파악하는 '추론 능력'과 '코딩 실력'에서 독보적인 위치를 차지했기 때문입니다. 하지만 아무리 좋은 엔진을 가졌더라도 운전자가 조작법을 모르면 제 성능을 낼 수 없습니다.
프롬프트 엔지니어링은 바로 그 조작법에 해당합니다. 본 시리즈는 Anthropic의 공식 튜토리얼을 기반으로, Claude의 잠재력을 200% 끌어올릴 수 있는 실무 기술을 다룹니다. 첫 번째 시간에는 본격적인 학습에 앞서, 여러분의 로컬 환경이나 클라우드 인프라(AWS Bedrock)에서 Claude를 호출할 준비를 마쳐보겠습니다.
2. 실습 환경 구축: Python과 Jupyter Notebook
Claude를 효과적으로 다루기 위해서는 코드를 즉시 실행하고 결과를 확인할 수 있는 인터랙티브한 환경이 필수적입니다.
2.1 가상환경 설정 (권장)
프로젝트 간의 의존성 충돌을 방지하기 위해 Python 가상환경을 먼저 구축하는 것을 추천합니다. 터미널에서 아래 명령어를 순서대로 입력하세요.
# 프로젝트 폴더 생성 및 이동
mkdir claude-tutorial && cd claude-tutorial
# 가상환경 생성 (python 3.9 이상 권장)
python3 -m venv venv
# 가상환경 활성화 (macOS/Linux)
source venv/bin/activate
# Windows의 경우: venv\Scripts\activate
2.2 필수 라이브러리 설치
Anthropic의 공식 SDK인 anthropic 패키지를 설치합니다. 만약 기업용 인프라인 Amazon Bedrock을 사용한다면 boto3도 함께 설치해야 합니다.
pip install anthropic boto3 python-dotenv jupyter
이제 jupyter notebook 명령어를 통해 브라우저에서 작업 환경을 엽니다.
3. API 키 관리의 마법: .env와 %store
개발자가 가장 많이 실수하는 부분 중 하나가 소스 코드에 API 키를 직접 노출하는 것입니다. 이를 방지하고 효율적으로 관리하는 두 가지 핵심 전략을 소개합니다.
3.1 .env 파일 활용
프로젝트 루트 폴더에 .env 파일을 만들고 아래와 같이 키를 저장하세요.
ANTHROPIC_API_KEY=sk-ant-api03-xxxx...
코드에서는 python-dotenv 라이브러리를 사용해 안전하게 불러올 수 있습니다.
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("ANTHROPIC_API_KEY")
3.2 IPython %store 매직 명령어 (노트북 전용 팁)
Jupyter Notebook 환경에서 여러 개의 파일을 오가며 실습할 때, 매번 API 키를 로드하는 것은 번거롭습니다. 이때 IPython의 %store 기능을 사용하면 변수를 노트북 세션 간에 영구적으로 공유할 수 있습니다.
# 첫 번째 노트북에서 변수 저장
API_KEY = "your-api-key-here"
%store API_KEY
# 다른 노트북 파일에서 저장된 변수 불러오기
%store -r API_KEY
print(f"로드된 키: {API_KEY[:10]}...")
이 방법을 사용하면 커널을 재시작하거나 다른 노트북을 열어도 설정값을 유지할 수 있어 실습 효율이 극대화됩니다.
4. 두 가지 실행 트랙 (Direct API vs Amazon Bedrock)
Claude를 사용하는 방식은 크게 두 가지로 나뉩니다. 여러분의 상황에 맞는 트랙을 선택하세요.
Track A: Anthropic Direct API (개인/빠른 시작)
가장 일반적인 방법으로, Anthropic Console에서 발급받은 키를 직접 사용합니다.
from anthropic import Anthropic
client = Anthropic(api_key=os.environ.get("ANTHROPIC_API_KEY"))
Track B: Amazon Bedrock (기업용/보안 중시)
AWS 인프라 내부에서 Claude를 호출하는 방식입니다. 설정이 다소 복잡하지만, 강력한 보안과 관리 기능을 제공합니다.
1) IAM 권한 설정
사용자나 역할(Role)에 AmazonBedrockFullAccess 정책을 연결하거나, 최소 권한 원칙에 따라 아래 액션을 허용해야 합니다.
bedrock:InvokeModelbedrock:InvokeModelWithResponseStream
2) 모델 접근 권한 요청 (Model Access)
AWS 콘솔의 Bedrock 서비스 페이지 좌측 하단 Model access 메뉴에서 Anthropic 모델들의 상태를 Access granted로 변경해야 합니다. 기본적으로 비활성화되어 있으므로 반드시 'Edit' 버튼을 눌러 요청 과정을 거치세요.
3) 클라이언트 초기화
Bedrock은 리전 설정이 중요합니다. us-east-1 (버지니아 북부) 또는 us-west-2 (오레곤) 리전이 가장 빠른 업데이트를 제공합니다.
import boto3
from anthropic import AnthropicBedrock
# AWS 자격 증명은 ~/.aws/credentials 또는 환경 변수를 자동으로 참조합니다.
client = AnthropicBedrock(
aws_region="us-east-1"
)
5. 모델 가이드: 최신 모델명을 확인하세요
원본 튜토리얼은 claude-3-haiku-20240307을 기준으로 작성되었습니다. 하지만 현재는 더 강력한 모델들이 출시되었습니다. 실습 목적에 따라 적절한 모델을 선택하세요.
| 모델 계열 | 특징 | Anthropic 모델 ID | Bedrock 모델 ID |
|---|---|---|---|
| Claude 3.7 Sonnet | 최신/최강 성능 (추론 모드 지원) | claude-3-7-sonnet-20250219 |
us.anthropic.claude-3-7-sonnet-20250219-v1:0 |
| Claude 3.5 Sonnet | 가성비와 성능의 완벽한 균형 | claude-3-5-sonnet-20241022 |
anthropic.claude-3-5-sonnet-20241022-v2:0 |
| Claude 3.5 Haiku | 매우 빠르고 경제적인 모델 | claude-3-5-haiku-20241022 |
anthropic.claude-3-5-haiku-20241022-v1:0 |
| Claude 3 Haiku | 튜토리얼 기본 권장 모델 | claude-3-haiku-20240307 |
anthropic.claude-3-haiku-20240307-v1:0 |
--
2026.2.6 기준으로는
| 모델 계열 | Anthropic 모델 ID |
|---|---|
| Claude Opus 4.5 | claude-opus-4-5-20251101 |
| Claude Sonnet 4.5 | claude-sonnet-4-5-20250929 |
| Claude Haiku 4.5 | claude-haiku-4-5-20251001 |
6. 헬퍼 함수 정의: get_completion
튜토리얼 전체에서 수백 번 호출하게 될 핵심 함수를 작성해 봅시다. 매번 복잡한 API 호출 인자를 입력하는 대신, 이 헬퍼 함수를 통해 프롬프트에만 집중할 수 있습니다.
# 실습에 사용할 모델 설정
MODEL_NAME = "claude-3-5-sonnet-20241022"
def get_completion(prompt, system=''):
"""
Claude에게 프롬프트를 보내고 텍스트 응답을 받는 만능 함수
"""
message = client.messages.create(
model=MODEL_NAME,
max_tokens=2000,
temperature=0.0, # 실습의 일관성을 위해 0.0으로 고정 (결정론적 답변)
system=system,
messages=[
{"role": "user", "content": prompt}
]
)
return message.content[0].text
중요 포인트: temperature=0.0 설정은 매우 중요합니다. 모델의 창의성을 억제하고 항상 동일한 질문에 동일한 답변을 내놓도록 유도하여, 우리가 프롬프트를 수정했을 때 그 영향력을 정확히 측정할 수 있게 해줍니다.
7. 실전 테스트: Hello, Claude!
모든 준비가 끝났습니다. 첫 번째 메시지를 보내보세요.
response = get_completion("프롬프트 엔지니어링의 세계에 오신 것을 환영해줘!")
print(response)
⚠️ 아래 내용은 실제 실행 결과가 아닌 텍스트 시뮬레이션입니다.
예상 실행 결과:
반갑습니다! Anthropic의 모델 Claude입니다. 프롬프트 엔지니어링의 세계에 오신 것을 진심으로 환영합니다.
저를 더 스마트하게 활용하는 방법을 배우게 될 이번 여정이 매우 기대되네요.
준비되셨다면 첫 번째 레슨부터 함께 시작해 볼까요?
만약 여기서 오류가 발생한다면 다음 시나리오를 확인하세요:
- 시나리오 1 (API Key 오류):
AuthenticationError가 발생한다면 API 키 복사 시 공백이 들어갔거나 만료되었는지 확인하세요. - 시나리오 2 (Bedrock 권한 오류):
AccessDeniedException이 뜬다면 AWS 콘솔에서 'Model Access'를 승인받았는지 다시 확인해야 합니다. 리전 설정 불일치도 흔한 원인입니다.
8. 결론
이제 기초 공사는 끝났습니다. get_completion 함수라는 강력한 도구도 손에 넣었죠. 이번 가이드를 통해 환경 설정을 마친 여러분은 이미 상위 10%의 AI 개발자로 나아갈 준비가 되었습니다.
다음 파트에서는 Claude에게 일을 시키는 가장 기초적이면서도 강력한 원칙인 '명확하고 직접적으로 지시하기(Be Clear and Direct)'에 대해 깊이 있게 다뤄보겠습니다.
TL;DR
- GitHub 인기 튜토리얼: 4.8k Stars의 검증된 교육 과정으로 시작합니다.
- 환경 설정 필수:
pip install anthropic과 API 키 확보가 첫걸음입니다. - 보안과 효율:
.env로 키를 보호하고,%store로 노트북 간 변수를 공유하세요. - Bedrock 팁: IAM 권한과 'Model Access' 승인 여부를 반드시 체크하세요.
- 실습의 핵심:
temperature=0.0설정으로 결과의 일관성을 확보하는 것이 중요합니다. - 정답지 제공: 공식 Answer Key 링크를 통해 정답을 언제든 확인할 수 있습니다.