How to Create an AI Agent: A Production Walkthrough
개요
프로덕션 환경에서 AI 에이전트를 성공적으로 구축하고 운영하기 위한 실질적인 패턴과 고려사항을 다룬다.
주요 내용
* 명확한 작업 명세(Job Spec)로 시작: 에이전트의 역할, 금지사항, 완료 조건, 실패 신호를 명확히 정의하여 주니어 엔지니어에게 업무를 지시하듯 작성해야 한다. 5개 이상의 도구나 3개 이상의 의사결정 분기가 필요하면 두 개 이상의 에이전트로 분리하는 것을 고려한다.
* 도구(Tools) 우선 설계: LLM의 잘못된 도구 호출이나 응답 처리 문제를 방지하기 위해 각 도구는 단일 기능만 수행하고, 작고 구조화된 결과를 반환하며, 설명 가능한 이름과 매개변수를 가져야 한다. 모든 도구는 멱등성(idempotency) 키와 드라이런(dry-run) 모드를 지원해야 한다.
* 안정적인 프롬프트 작성: 시스템 프롬프트는 역할, 제약사항, 도구 목록, 최종 응답 형식, 종료 조건 등 고정된 정보를 담고, 런타임 컨텍스트는 현재 상태, 도구 호출 기록, 관련 메모리, 예산 정보 등 매 턴마다 재구성되어야 한다. 에이전트에게 예산 정보를 제공하면 비용 효율성이 향상된다.
* 세 가지 유형의 메모리 활용:
* Scratchpad: 현재 턴의 추론 및 도구 결과를 저장하며, 매 턴 압축하여 사용한다.
* Episodic: 과거 실행 기록(결정, 결과)을 요약하여 30-90일간 보관하며, 과거 실수를 반복하지 않도록 한다.
* Semantic: 에이전트가 알아야 할 사실(브랜드 목소리, 이전 토픽 등)을 저장하며, pgvector와 BM25를 결합한 하이브리드 검색으로 정확도를 높인다.
* 견고한 제어 루프 설계: 예산 소진, 정책 미준수, 크래시 등에 대한 처리 로직을 포함하여 에이전트의 안정적인 작동을 보장한다. 각 턴마다 상태를 저장(persist_state)하여 재개 기능을 구현하고, policy.allows와 같은 코드로 하드 규칙을 적용한다. 예산 소진 시에는 'handoff' 상태로 전환하여 다른 주체나 에이전트가 작업을 이어받도록 한다.
* 체계적인 평가: 데모를 프로덕션 수준으로 만들기 위해 유닛 레벨 테스트, 궤적(trajectory) 평가, 프로덕션 텔레메트리(로그, 메트릭) 등 세 단계의 평가 계층을 운영한다.
* 서버리스 배포: Lambda와 EventBridge를 활용한 서버리스 배포를 권장하며, 각 에이전트별로 Lambda를 분리하고, 모든 실패에 대해 Dead-letter Queue(DLQ)를 설정한다.
* 향후 구축 전략: 휴먼 작업 흐름을 모델링하여 시작하고, 도구를 먼저 구축하며, 강력한 LLM(Claude, GPT)을 사용하고, 예산 제약을 코드 레벨에서 관리하며, 확장 전에 평가를 완료하고, 'handoff' 경로를 계획하는 것을 강조한다.
시사점
에이전트의 성공은 단순히 LLM의 성능뿐만 아니라, 명확한 설계 원칙, 견고한 도구, 체계적인 메모리 관리, 철저한 평가, 그리고 안정적인 배포 및 운영 전략에 달려 있다.
댓글
GitHub Discussions