💡 결론부터 말하면: AI 에이전트를 만들 때 가장 성공적인 구현은 복잡한 프레임워크가 아닌, 단순하고 조합 가능한 패턴을 사용하는 것입니다.
Claude를 개발한 Anthropic이 2024년 12월 19일 공개한 “Building Effective Agents” 문서는 수십 개 산업 팀과의 협업을 통해 발견한 실전 노하우를 담고 있습니다.

🎯 에이전트란 무엇인가?
Anthropic은 모든 에이전트 시스템을 **Agentic Systems(에이전틱 시스템)**으로 분류하되, 크게 두 가지로 구분합니다:
| 구분 | 🔄 Workflows | 🤖 Agents |
|---|---|---|
| 제어 방식 | 미리 정의된 코드 경로 | LLM이 동적으로 결정 |
| 특징 | 예측 가능, 일관된 결과 | 유연하고 모델 주도적 |
| 적합한 작업 | 잘 정의된 작업 | 복잡하고 예측 불가능한 작업 |
| 예시 | 고객 문의 자동 분류 | 복잡한 코드 리팩토링 |
⚖️ 에이전트를 언제 사용해야 하나?
Anthropic은 가능한 가장 단순한 솔루션을 찾을 것을 권장합니다:
| ✅ 에이전트가 필요한 경우✔️ 단계를 예측할 수 없는 개방형 문제✔️ 고정된 경로를 하드코딩할 수 없는 경우✔️ 유연성과 모델 주도 의사결정이 필요한 대규모 작업 | ❌ 에이전트가 불필요한 경우✖️ 단일 LLM 호출로 해결 가능한 경우✖️ Retrieval과 in-context 예시로 충분한 경우✖️ 지연 시간과 비용 증가를 정당화할 수 없는 경우 |
⚠️ 핵심: 에이전트는 지연 시간과 비용을 성능 향상으로 교환하는 것입니다. 이 트레이드오프가 합리적인지 먼저 평가하세요.
🎨 5가지 워크플로우 패턴
Anthropic이 실제 프로덕션에서 발견한 효과적인 패턴들입니다:
1️⃣ Prompt Chaining (프롬프트 체이닝)
📝 작업 → 🔗 LLM 1 → 🔗 LLM 2 → 🔗 LLM 3 → ✅ 완료
개념: 작업을 순차적 단계로 분해하여, 각 LLM 호출이 이전 출력을 처리
언제 사용?
- ✔️ 작업이 명확하게 고정된 하위 작업으로 분해 가능할 때
- ✔️ 정확도를 위해 지연 시간을 교환할 수 있을 때
실전 예시:
- 📝 마케팅 카피 생성 → 🌐 다른 언어로 번역
- 📋 문서 개요 작성 → ✅ 기준 확인 → 📄 개요 기반으로 문서 작성
2️⃣ Routing (라우팅)
📥 입력 → 🔍 분류 → 📍 전문 처리 A/B/C
개념: 입력을 분류하여 전문화된 후속 작업으로 전달
언제 사용?
- ✔️ 개별적으로 처리하는 것이 더 나은 명확한 카테고리가 있을 때
- ✔️ 분류를 정확하게 처리할 수 있을 때
실전 예시:
- 💬 고객 서비스: 일반 질문 / 환불 요청 / 기술 지원으로 분류
- 💰 비용 최적화: 쉬운 질문 → Haiku / 어려운 질문 → Sonnet
3️⃣ Parallelization (병렬화)
📥 입력 → 🔀 [LLM 1 | LLM 2 | LLM 3] → 🔄 집계 → ✅ 완료
개념: LLM이 동시에 작업하고 출력을 프로그래밍 방식으로 집계
두 가지 변형:
- Sectioning: 독립적인 하위 작업으로 분할하여 병렬 실행
- Voting: 동일한 작업을 여러 번 실행하여 다양한 출력 획득
실전 예시:
- 🛡️ Sectioning: 사용자 쿼리 처리 + 부적절한 콘텐츠 검사 (별도 호출)
- 🔍 Voting: 코드 취약점 검토를 여러 프롬프트로 실행하여 문제 감지
4️⃣ Orchestrator-Workers (오케스트레이터-워커)
👨✈️ 오케스트레이터 → 분배 → [👷 워커1 | 👷 워커2 | 👷 워커3] → 📊 종합
개념: 중앙 LLM이 동적으로 작업을 분해하고, 워커 LLM에 위임하며, 결과를 종합
언제 사용?
- ✔️ 필요한 하위 작업을 예측할 수 없는 복잡한 작업
- ✔️ 입력에 따라 하위 작업이 결정되는 경우
실전 예시:
- 💻 여러 파일에 대한 복잡한 코드 변경
- 🔎 여러 소스에서 정보를 수집하고 분석하는 검색 작업
5️⃣ Evaluator-Optimizer (평가자-최적화자)
🔄 생성 → 평가 → 피드백 → 재생성 → 평가 → ✅ 완료
개념: 하나의 LLM이 응답 생성, 다른 LLM이 루프에서 평가와 피드백 제공
언제 사용?
- ✔️ 명확한 평가 기준이 있을 때
- ✔️ 반복적 개선이 측정 가능한 가치를 제공할 때
- ✔️ LLM이 유용한 비평을 제공할 수 있을 때
실전 예시:
- 🌐 문학 번역: 번역가 LLM + 평가자 LLM (뉘앙스 비평)
- 🔍 복잡한 검색: 추가 검색이 필요한지 평가자가 결정
🤖 자율 에이전트의 핵심 요소
완전 자율 에이전트는 다음과 같이 작동합니다:
1️⃣ 시작 → 사용자 명령 또는 대화로 작업 명확화 ⬇️ 2️⃣ 실행 → 독립적으로 계획하고 운영 ⬇️ 3️⃣ 피드백 → 환경으로부터 "실제 결과" 획득 (도구 호출, 코드 실행) ⬇️ 4️⃣ 체크포인트 → 필요시 사용자에게 피드백 요청 ⬇️ 5️⃣ 종료 → 완료 또는 중지 조건 도달
💡 중요: 에이전트 구현은 종종 단순합니다. 환경 피드백을 기반으로 도구를 사용하는 LLM이 루프로 실행되는 것입니다. 도구 설계와 문서화가 핵심입니다.
🏆 Anthropic의 실제 에이전트 사례
| 에이전트 | 기능 |
|---|---|
| 💻 SWE-bench 코딩 에이전트 | 작업 설명만으로 여러 파일 자동 편집 |
| 🖥️ Computer Use | Claude가 컴퓨터를 직접 사용하여 작업 수행 |
⚠️ 프레임워크 사용 시 주의사항
📦 주요 프레임워크들
| 프레임워크 | 설명 |
|---|---|
| 🔵 Claude Agent SDK | Anthropic 공식 SDK |
| 🟠 Strands Agents SDK | AWS 제공 |
| 🟢 Rivet | 드래그 앤 드롭 GUI |
| 🟣 Vellum | 워크플로우 구축 GUI |
💡 Anthropic의 권장사항
❌ 처음부터 복잡한 프레임워크 사용 ⬇️ ✅ LLM API 직접 사용 (많은 패턴이 몇 줄의 코드로 구현 가능) ⬇️ ✅ 프레임워크 사용 시 기본 코드 이해 필수 ⬇️ ⚠️ 추상화 레이어 → 디버깅 어려움 ⬇️ ⚠️ 단순한 설정으로 충분할 때 복잡성 추가하지 말 것
🎯 핵심: 프레임워크는 빠른 시작에는 좋지만, 프로덕션에서는 추상화를 줄이고 기본 컴포넌트로 구축하세요.
🛠️ 도구 프롬프트 엔지니어링의 핵심
AI 에이전트에서 도구 정의는 프롬프트만큼 중요합니다!
📋 도구 형식 선택 3원칙
| 원칙 | 설명 |
|---|---|
| 🧠 충분한 사고 공간 | 모델이 구석으로 몰리기 전에 “생각할” 충분한 토큰 제공 |
| 🌐 자연스러운 형식 | 인터넷 텍스트에서 자연스럽게 나타나는 형식 사용 |
| ⚡ 오버헤드 제거 | 수천 줄 카운트, 문자열 이스케이프 등 형식 부담 제거 |
🎨 ACI(Agent-Computer Interface) 설계 원칙
💡 HCI에 투자하는 노력만큼 ACI에도 투자하세요!
1️⃣ 모델 입장에서 생각하기 ❓ 설명과 파라미터만으로 사용법이 명확한가? 2️⃣ 명확한 도구 정의 ✅ 예시 사용법 ✅ 엣지 케이스 ✅ 입력 형식 요구사항 ✅ 다른 도구와의 경계 3️⃣ 테스트 반복 🧪 Workbench에서 많은 예시 입력 테스트 🔍 모델이 어떤 실수를 하는지 확인 4️⃣ Poka-yoke (실수 방지) 🛡️ 인수를 변경하여 실수하기 어렵게 만들기
💼 실전 사례: SWE-bench 에이전트
Anthropic은 전체 프롬프트보다 도구 최적화에 더 많은 시간을 투자했습니다.
문제점 발견:
- 루트 디렉토리 밖으로 이동한 후 상대 경로로 실수
해결책:
- 항상 절대 경로를 요구하도록 도구 변경
결과:
- ✅ 완벽하게 작동
🎯 세 가지 핵심 원칙
Anthropic이 강조하는 에이전트 구축의 골든 룰:
┌─────────────────────────────────────────┐
│ 1️⃣ Simplicity (단순성) │
│ → 에이전트 설계를 단순하게 유지 │
└─────────────────────────────────────────┘
⬇️
┌─────────────────────────────────────────┐
│ 2️⃣ Transparency (투명성) │
│ → 에이전트의 계획 단계를 명시적 표시 │
└─────────────────────────────────────────┘
⬇️
┌─────────────────────────────────────────┐
│ 3️⃣ Tool Documentation (도구 문서화) │
│ → ACI를 철저히 문서화하고 테스트 │
└─────────────────────────────────────────┘
❓ FAQ
Q1. 에이전트와 워크플로우 중 어떤 것을 선택해야 하나요?
답변:
- ✅ 워크플로우: 예측 가능하고 잘 정의된 작업
- ✅ 에이전트: 유연성과 동적 의사결정이 필요한 경우
- 💡 대부분의 경우: 단일 LLM 호출 최적화로 충분합니다
Q2. 프레임워크를 사용해야 하나요?
답변:
- 🟢 초기: 빠른 시작에 도움
- 🟡 프로덕션: 추상화 레이어를 줄이고 기본 컴포넌트로 구축 권장
- ⚠️ 핵심: 기본 코드를 이해하는 것이 중요
Q3. 에이전트가 가장 효과적인 분야는?
답변 (Anthropic의 경험):
| 분야 | 이유 |
|---|---|
| 💬 고객 지원 | 대화 + 액션 + 검증 가능한 성공 기준 |
| 💻 코딩 | 자동화된 테스트로 검증 가능 |
Q4. 에이전트의 비용과 지연 시간은 어떻게 관리하나요?
답변:
- ⚠️ 에이전트는 본질적으로 비용이 높고 오류가 복합될 수 있음
- ✅ 필수 사항:
- 샌드박스 환경에서 광범위한 테스트
- 적절한 가드레일 설정
- 중지 조건 명확히 정의
Q5. 도구 정의를 어떻게 최적화하나요?
답변: 주니어 개발자를 위한 훌륭한 docstring을 작성한다고 생각하세요.
✅ 포함 사항:
- 예시 사용법
- 엣지 케이스
- 명확한 파라미터 이름
- Workbench에서 반복적으로 테스트
Q6. 복잡한 시스템은 언제 구축해야 하나요?
답변: 단순한 솔루션이 부족할 때만 복잡성을 추가하세요.
1️⃣ 단순한 프롬프트로 시작 ⬇️ 2️⃣ 포괄적인 평가로 성능 측정 ⬇️ 3️⃣ 복잡성이 실제로 결과를 개선할 때만 ⬇️ 4️⃣ 다단계 에이전트 시스템 추가
💡 결론: 단순함이 답이다
AI 에이전트 개발의 성공은 가장 정교한 시스템을 구축하는 것이 아니라, 필요에 맞는 올바른 시스템을 구축하는 것입니다.
🎯 Anthropic의 권장 접근법
┌──────────────────────────────────────┐
│ STEP 1: 단순한 프롬프트로 시작 │
│ → 가장 간단한 솔루션부터 시도 │
└──────────────────────────────────────┘
⬇️
┌──────────────────────────────────────┐
│ STEP 2: 포괄적인 평가로 최적화 │
│ → 성능을 측정하고 개선점 파악 │
└──────────────────────────────────────┘
⬇️
┌──────────────────────────────────────┐
│ STEP 3: 부족할 때만 복잡도 추가 │
│ → 다단계 에이전트 시스템 고려 │
└──────────────────────────────────────┘
🏆 핵심 메시지
복잡한 프레임워크 ❌
단순하고 조합 가능한 패턴 ✅
이것이 수십 개 팀과의 협업을 통해 실제 프로덕션에서 입증된 교훈입니다.
📚 참고 자료
- 🔗 Building Effective Agents – Anthropic (2024년 12월 19일)
- 📖 Anthropic Claude Agent SDK 공식 문서
- 🔧 Model Context Protocol (MCP) 공식 문서
🏷️ 태그: #AI #에이전트 #Claude #Anthropic #LLM #프롬프트엔지니어링 #워크플로우 #AI개발