효과적인 AI 에이전트 구축: Anthropic의 에이전트 시스템 가이드

Anthropic은 복잡한 프레임워크보다 간단하고 조합 가능한 패턴을 사용하여 AI 에이전트를 구축하는 것을 권장합니다. 가장 성공적인 구현은 특정 작업에 적합한 적절한 수준의 복잡성을 우선시하기 때문입니다. 핵심 철학은 가능한 가장 단순한 해결책—보통 단일 LLM 호출—부터 시작하고, 성과가 명확히 향상될 때만 복잡성을 증가시키는 것입니다.

워크플로우와 에이전트의 구분

Anthropic은 모든 LLM 기반 시스템을 "에이전트 시스템"으로 분류하지만, 아키텍처상 중요한 차이를 두고 있습니다:

  • 워크플로우: LLM과 도구가 사전 정의된 코드 경로를 통해 조율되는 시스템입니다. 이는 명확하게 정의된 작업에 대해 예측 가능性和 일관성을 제공합니다.
  • 에이전트: LLM이 자신의 프로세스와 도구 사용을 동적으로 조정하며, 작업을 수행하는 방식에 대한 통제권을 유지하는 시스템입니다. 필요한 단계를 하드코딩할 수 없는 개방형 문제에 가장 적합합니다.

에이전트 시스템의 기본 구성 요소

모든 에이전트 시스템은 증강된 LLM(retrieval, 도구, 메모리가 강화된 LLM)에서 시작합니다. Anthropic은 제3자 도구를 간단한 클라이언트 구현을 통해 통합하기 위해 Model Context Protocol (MCP)을 사용할 것을 제안합니다.

조합형 워크플로우

작업이 예측 가능한 단계로 분해될 수 있다면, 워크플로우는 완전한 자율성의 대안으로 신뢰할 수 있습니다:

  • 프롬프트 체이닝: 작업을 이전 출력을 처리하는 각 LLM 호출로 구성된 단계 시퀀스로 분해합니다. 마케팅 콘텐츠 생성 후 번역과 같은 작업에 이상적입니다.
  • 라우팅: 입력을 분류하여 전용 후속 작업으로 연결합니다. 이는 책임 분리를 가능하게 하며, 예를 들어 고객 지원 문의를 다양한 전문 프롬프트로 라우팅하거나, 쉬운 질문은 더 작은 모델(예: Claude Haiku 4.5)에, 어려운 질문은 더 강력한 모델(예: Claude Sonnet 4.5)에 전달할 수 있습니다.
  • 병렬화: 여러 LLM 호출을 동시에 실행합니다. 이에는 섹션링(작업을 독립적인 하위 작업으로 나누는 것, 예: 응답 생성과 가드레일 검사를 병렬로 실행)과 투표(동일한 작업을 여러 번 실행하여 다양한 출력을 얻어 신뢰도를 높이는 것)이 포함됩니다.
  • 오케스트레이터-워커: 중심 LLM이 작업을 동적으로 분해하고 워커 LLM에 위임합니다. 하위 작업이 예측 불가능한 복잡한 작업(예: 코드 프로젝트에서 여러 파일에 변경 사항을 가하는 작업)에 사용됩니다.
  • 평가자-최적화자: 하나의 LLM이 응답을 생성하고, 다른 LLM이 피드백을 제공하여 반복적으로 개선하는 루프입니다. 문학 번역이나 다단계 분석이 필요한 복잡한 검색 작업에 효과적입니다.

자율 에이전트

자율 에이전트는 LLM이 계획하고 독립적으로 운영해야 하는 개방형 문제에 사용됩니다. 이들은 환경적 피드백(실제 진실)을 기반으로 도구 사용 루프에 의존하여 진행 상황을 평가합니다.

에이전트의 주요 특징:

  • 동적 계획: 에이전트는 자신의 완료 경로를 스스로 결정합니다.
  • 사람이 루프에 참여하는 방식: 에이전트는 체크포인트나 장애물에서 사람의 피드백을 일시 중단할 수 있습니다.
  • 정지 조건: 통제를 유지하기 위해 에이전트는 일반적으로 최대 반복 횟수 제한을 포함합니다.

Anthropic은 SWE-bench 작업용 코드 에이전트와 "컴퓨터 사용" 참조 구현체를 자율 에이전트의 주요 예시로 제시합니다.

구현을 위한 최선의 실천 방법

프레임워크 vs. 직접 API 사용

Claude Agent SDK, AWS Strands, Rivet, Vellum과 같은 프레임워크는 저수준 작업을 간소화하지만, Anthropic은 이러한 프레임워크가 프롬프트와 응답을 은폐하는 추상화 계층을 만들 수 있으며, 디버깅을 어렵게 할 수 있다고 경고합니다. 투명성을 유지하기 위해 LLM API를 직접 사용하는 것을 권장합니다.

에이전트-컴퓨터 인터페이스(ACI) 설계

효과적인 에이전트는 고품질의 도구 문서화와 설계가 필요합니다. Anthropic은 도구 정의를 프롬프트 엔지니어링만큼 철저하게 다뤄야 한다고 제안합니다:

  • 서식 오버헤드 회피: 모델이 인터넷에서 자연스럽게 접한 형식을 사용하세요. 복잡한 계산(예: diff의 줄 수 계산)이나 과도한 문자 이스케이프(예: 코드용 JSON)를 요구하지 마세요.
  • 포카요케(오류 방지): 도구 인수를 설계하여 실수를 어렵게 만드세요. 예를 들어, Anthropic은 상대 경로 대신 절대 경로를 요구함으로써 SWE-bench 에이전트의 일반적인 실패 요인을 제거했습니다.
  • 명확한 문서화: 도구 정의 내에 예시 사용법, 예외 사례, 입력 형식 요구 사항을 제공하세요.

실용적 응용 사례

Anthropic은 에이전트 시스템의 두 가지 고가치 영역을 식별했습니다:

  1. 고객 지원: 대화형 인터페이스와 도구를 결합하여 고객 데이터를 가져오고 작업(예: 환불 발행)을 수행하며, 성공은 사용자가 정의한 해결책으로 측정됩니다.
  2. 코드 에이전트: 코드 솔루션이 자동화된 테스트를 통해 검증될 수 있기 때문에 매우 효과적입니다. 이는 모델이 객관적인 피드백을 기반으로 반복할 수 있기 때문입니다.

성공을 위한 핵심 원칙

신뢰할 수 있고 유지보수가 쉬운 에이전트를 구축하기 위해 Anthropic은 세 가지 원칙을 강조합니다:

  1. 단순성: 단순한 설계를 유지하고 불필요한 복잡성을 피하세요.
  2. 투명성: 에이전트의 계획 단계를 명시적으로 보여주세요.
  3. ACI 최적화: 도구 문서화와 테스트를 신중하게 작성하여 모델이 도구를 완벽하게 사용할 수 있도록 하세요.

Sources

관련