모든 사람이 에이전트를 배포하고 싶어한다.
최고의 조직들은 반복적으로, 안전하게, 체계적으로 이를 수행하는 방법을 찾아냈다. 그들은 조기에 배포하고, 실제 사용법을 학습하며, 빠르게 반복한다. 그들은 에이전트를 일회성 데모나 고립된 프로젝트로 취급하지 않는다.
대신, 그들은 실험을 시간이 지남에 따라 배포, 학습, 개선하는 반복 가능한 시스템으로 전환하여 모멘텀을 생성하는 에이전트 개발 생명주기를 구축했다.
그 생명주기는 네 가지 부분으로 이루어져 있다:
구축 → 테스트 → 배포 → 모니터링
순서는 의도적이다. 테스트는 에이전트가 프로덕션에 도달하기 전에 시작되어야 하며, 이후에 시작되어서는 안 된다. 팀은 배포 전에 에이전트를 테스트하고, 제어된 방식으로 배포하며, 프로덕션에서 그들이 어떻게 작동하는지 모니터링한 다음, 그 학습 내용을 다음 빌드 및 평가 사이클로 피드백해야 한다.
단일 에이전트의 경우, 이 프로세스는 가벼운 상태로 유지될 수 있다. 많은 에이전트에 걸쳐, 이는 인프라 및 거버넌스 챌린지가 된다. 팀은 비용을 제어하고, 도구 액세스를 관리하고, 도구 호출을 검사하고, 컨텍스트를 재사용하고, 인간이 관여해야 하는 위치를 결정할 수 있는 공유 방법이 필요하다.
에이전트를 한 번 작동시키는 것과 에이전트를 반복 가능한 관행으로 구축하는 것의 차이는 올바른 개발 생명주기를 갖추고 있는 것에서 비롯된다.
구축
빌드 단계는 팀이 생성하고 있는 에이전트 시스템의 종류와 사용하려는 추상화 수준을 결정하는 곳이다.
여기에는 광범위한 도구 세트가 있다. 일부 도구는 코드 우선이지만, 다른 도구는 노코드 또는 로우코드이다. 일부는 추상화에 중점을 두지만, 다른 도구는 프롬프트, 도구, 스킬, 상태를 가진 작동 환경을 에이전트에 제공하는 데 중점을 둔다.
코드 우선 측면에서, 팀은 종종 오픈소스 프레임워크와 하네스에 의존한다. LangChain 에코시스템에서, 여기에는 LangChain, LangGraph, Deep Agents가 포함된다. LangChain 외에도, 예시로는 CrewAI와 Claude Agents SDK가 있다.
이 도구들은 스택의 다양한 계층에서 작동한다.
에이전트 프레임워크는 주로 추상화에 중점을 둔다. 그들은 개발자가 모델 호출, 도구, 프롬프트, 검색, 구조화된 출력 및 에이전트 루프를 구성하는 것을 도와준다. LangChain과 CrewAI는 이 범주의 예이다.
에이전트 런타임은 실행에 중점을 둔다. 그들은 상태, 제어 흐름, 내구성 및 인간 개입이 필요한 에이전트를 지원한다. LangGraph는 LangChain 에코시스템에서 가장 명확한 예이다. 그것은 분기, 루프, 일시 중지, 재개, 그리고 시간이 지남에 따라 상태를 유지할 수 있는 에이전트 시스템을 구축하는 방법을 제공한다.
에이전트 하네스는 실행에 중점을 둔다. 그들은 더 오래 실행되는 작업에 필요한 에이전트의 주변 구조를 제공한다: 프롬프트, 스킬, MCP 서버, 후크, 미들웨어, 그리고 때때로 파일 시스템. Deep Agents와 Claude Agent SDK는 이 패턴의 예이다.
이러한 구별이 중요한 이유는 "에이전트 구축"이 다양한 의미를 가질 수 있기 때문이다.
간단한 애플리케이션의 경우, 도구 호출 루프를 정의하는 것만 포함될 수 있다. 더 정교한 에이전트의 경우, 프롬프트 작성, 스킬 정의, MCP 서버 연결, 미들웨어 구성, 그리고 에이전트가 검색하거나 시간이 지남에 따라 업데이트할 수 있는 컨텍스트 설정을 포함할 수 있다.
노코드 구축
빌드 단계의 노코드 및 로우코드 측면도 있다. LangSmith Fleet, Claude Cowork, n8n과 같은 도구는 더 많은 사람들이 에이전트 개발에 참여할 수 있게 한다. 이것이 중요한 이유는 필요한 워크플로우를 이해하는 사람이 항상 코드를 작성하는 사람이 아니기 때문이다.
동시에, 노코드 도구는 엔지니어링 제어의 필요성을 제거하지 않는다. 시스템이 더 복잡해질수록, 팀은 보통 코드에서 동작을 확장하거나 재정의할 수 있는 방법이 필요하다. 후크와 미들웨어는 특히 여기서 중요하다. 왜냐하면 팀이 도구 호출, 컨텍스트 처리, 승인, 인증, 또는 비즈니스 규칙 주변에 커스텀 로직을 추가할 수 있게 하기 때문이다. 이는 모든 에이전트를 처음부터 다시 구축할 필요 없이 가능하다.
최고의 빌드 환경은 간단한 것을 간단하게 만들고 복잡한 것을 가능하게 만든다. 그들은 도메인 전문가가 프롬프트, 스킬, 컨텍스트를 편집할 수 있게 하면서도, 엔지니어에게 신뢰할 수 있고, 테스트 가능하고, 거버넌스되어야 하는 부분에 대한 제어를 제공한다.
테스트
에이전트가 배포되기 전에, 팀은 에이전트가 실제로 준비되었는지 여부를 결정할 수 있는 방법이 필요하다.
이것은 누구든 에이전트를 사용하기 전에 완벽한 평가 세트를 구축한다는 뜻이 아니다. 실제로, 이는 거의 현실적이지 않다. 이는 명백한 실패를 감지하고, 버전을 비교하고, 맹목적으로 변경 사항을 배포하는 것을 피하기 위해 충분한 평가가 준비되어 있다는 뜻이다.
대부분의 평가 워크플로우는 대표적인 작업의 작은 데이터세트로 시작한다. 일부 예는 예상되는 사용 사례에서 나오고, 다른 예는 수동 테스트, 도그푸딩, 지원 티켓, 이전 트레이스 또는 알려진 엣지 케이스에서 나온다. 시간이 지남에 따라, 프로덕션 트레이스는 이러한 데이터세트를 훨씬 강하게 만들지만, 테스트는 프로덕션 전에 시작되어야 한다.
데이터세트 및 메트릭
데이터세트는 팀이 학습한 내용을 보존하는 방법이다. 이들이 없으면, 같은 실패가 프롬프트 변경, 모델 업그레이드 또는 도구 업데이트 후에 다시 나타나는 경향이 있다.
올바른 메트릭은 작업에 따라 다르다.
일부 경우에, 명확한 기준 진실 답변이 있다. 에이전트가 올바른 값을 추출했는가? 올바른 레이블을 선택했는가? 올바른 필드를 업데이트했는가? 이러한 작업은 정확성에 대해 직접 측정할 수 있다.
다른 시간에, 단일 기준 진실 답변이 없다. 에이전트는 응답을 작성하거나, 대화를 요약하거나, 에스컬레이션을 결정하거나, 많은 유효한 경로가 있는 작업을 완료해야 할 수 있다. 이러한 경우, 팀은 기준 기반 평가에 더 많이 의존한다. 질문은 응답이 근거했는지, 에이전트가 정책을 따랐는지, 명확성을 요청했는지, 또는 불필요한 도구 호출 없이 작업을 효율적으로 완료했는지 여부가 된다.
실험
실험은 데이터세트 및 메트릭을 반복에 연결하는 것이다. 그들은 팀이 프롬프트, 모델, 검색 전략, 도구 스키마 및 오케스트레이션 패턴을 동일한 평가 세트와 비교할 수 있게 한다. . 시간이 지남에 따라, 이러한 실험은 에이전트가 개선되고 있는지 또는 퇴행하고 있는지 여부를 보여준다.
목표는 첫날에 완벽한 평가 세트를 만드는 것이 아니다. 목표는 유용한 세트로 시작하여 지속적으로 개선하는 것이다. 가장 가치 있는 평가 데이터세트는 가장 어려운 예제에서 구축된다: 먼저 개발 및 도그푸딩에서, 나중에 프로덕션에서.
시뮬레이션
시뮬레이션은 테스트의 또 다른 중요한 부분이다.
많은 에이전트는 다중 턴 시스템이다. 그들은 하나의 질문에만 답하지 않는다; 그들은 대화를 나누고, 정보를 수집하고, 도구를 호출하고, 상태를 업데이트하고, 모호함으로부터 복구한다. 그러한 에이전트의 경우, 단일 턴 평가는 충분하지 않다. 팀은 다중 턴 평가 및 시뮬레이션된 엔드투엔드 상호작용이 필요하다.
음성 에이전트는 명백한 예이지만, 패턴은 더 광범위하다. 턴의 시퀀스에서 작동하는 모든 에이전트는 시뮬레이션이 필요할 수 있다. 지원 에이전트는 좌절한 고객을 처리하고, 후속 질문을 하고, 주문 상태를 확인하고, 에스컬레이션이 필요한지 여부를 결정해야 할 수 있다. 코딩 에이전트는 저장소를 검사하고, 변경을 수행하고, 테스트를 실행하고, 피드백에 응답해야 할 수 있다. 내부 운영 에이전트는 조치를 취하기 전에 누락된 정보를 수집해야 할 수 있다.
좋은 테스트 관행은 팀이 진동에 의존하지 않고 에이전트를 체계적으로 개선하는 것을 도와준다. 그들은 예상되는 동작을 데이터세트로 변환하고, 데이터세트를 실험으로 변환하고, 실험을 시스템의 더 나은 버전으로 변환한다. 배포 후, 모니터링은 그러한 평가를 더 강하게 만드는 실제 예제를 제공한다.
배포
에이전트가 구축되고 평가된 후, 그것은 안정적으로 실행할 수 있는 환경이 필요하다.
간단한 에이전트의 경우, 배포는 전통적인 애플리케이션 배포와 유사할 수 있다. 하지만 많은 에이전트는 상태 비저장 서버보다 더 많이 필요하다. 그들은 더 긴 기간에 걸쳐 실행되고, 도구를 호출하고, 인간의 입력을 기다리고, 파일을 작성하고, 중단으로부터 복구하고, 여러 상호작용이나 작업에 걸쳐 상태를 유지한다.
그것이 런타임이 중요한 이유이다.
프로덕션 에이전트 런타임은 일반적으로 내구성 있는 실행 및 휴먼인더루프 패턴을 지원해야 한다. 내구성 있는 실행은 에이전트가 무언가 실패할 때 작업을 잃지 않고 진행률을 체크포인트하고 재개할 수 있다는 의미이다. 휴먼인더루프는 에이전트가 승인, 명확성, 또는 검토가 필요할 때 일시 중지할 수 있다는 의미이다.
이에 대한 기성 솔루션이 있다. LangSmith Deployment는 Deep Agents 및 LangGraph 에이전트를 배포하고 관리하기 위한 인프라를 제공한다. AWS AgentCore는 에이전트를 위한 관리형 런타임의 또 다른 예이다. 일부 팀은 Temporal과 같은 시스템 위에 자신의 런타임을 구축하기도 한다. 특히 스택의 다른 곳에서 이미 오래 실행되는 워크플로우를 위해 Temporal을 사용할 때 그렇다.
샌드박스
많은 에이전트는 또한 전용 실행 환경이 필요하다.
에이전트는 점점 더 코드를 작성하고, 코드를 실행하고, 파일을 검사하고, 문서를 변환하고, 파일 시스템과 상호작용해야 한다. 이러한 경우, 팀은 그 작업이 어디서 일어나는지 결정해야 한다. 샌드박스는 일반적인 해결책이다. 그들은 파일 시스템 액세스가 있는 격리된 실행 환경을 제공하면서, 실수나 안전하지 않은 동작의 폭발 반경을 감소시킨다.
예시로는 LangSmith Sandboxes, Daytona, E2B가 있다.
모든 에이전트가 전체 샌드박스가 필요한 것은 아니다. 일부 경우에, 에이전트는 단지 파일을 저장하고 검색할 수 있는 장소가 필요하다. 가상 파일 시스템으로 충분할 수 있다. Deep Agents는 에이전트가 샌드박스 내에서 임의의 코드를 실행할 필요 없이 파일을 작업 메모리로 사용할 수 있게 함으로써 이 패턴을 지원한다. 내부적으로, 그 파일 시스템은 Postgres 또는 S3과 같은 시스템에 의해 지원될 수 있다.
컨텍스트 허브
배포의 또 다른 자주 간과되는 부분은 프롬프트 및 컨텍스트 관리이다.
에이전트의 가장 중요한 부분 중 일부는 전통적인 애플리케이션 코드가 아니다. 프롬프트, 검색 컨텍스트, 스킬, 작업 지시사항은 애플리케이션 자체보다 더 자주 변경되어야 할 수 있다. 그들은 또한 엔지니어가 아닌 사람들에 의해 편집되어야 할 수도 있다.
이는 프롬프트 또는 컨텍스트 허브의 필요를 만든다: 에이전트의 비코드 부분을 저장, 버전 관리, 검토 및 업데이트할 수 있는 장소. 이를 통해 팀은 전체 배포 없이 에이전트 동작을 조정할 수 있으며, 도메인 전문가가 자신이 가장 잘 이해하는 컨텍스트를 소유할 수 있게 한다.
실제로, 배포는 단순히 에이전트를 서버에 올리는 것이 아니다. 에이전트에 실제 작업을 수행하는 데 필요한 런타임, 실행 환경 및 컨텍스트 관리 시스템을 제공하는 것이다.
모니터링
에이전트가 배포된 후, 팀은 프로덕션에서 실제로 어떻게 작동하는지에 대한 가시성이 필요하다.
이것이 에이전트 모니터링이 전통적인 소프트웨어 모니터링과 다른 점이다. 지연, 비용, 오류율, 업타임 같은 메트릭은 여전히 중요하지만, 그것들은 그림의 일부일 뿐이다. 에이전트는 기술적으로 성공적인 응답을 반환할 수 있지만 여전히 작업 자체에 실패할 수 있다. 그것은 잘못된 도구를 호출하거나, 잘못된 컨텍스트에 의존하거나, 필요한 승인 단계를 건너뛰거나, 그럴 듯하게 들리지만 잘못된 답변을 생성할 수 있다.
이러한 실패를 이해하기 위해, 팀은 트레이스가 필요하다.
트레이스는 에이전트의 전체 궤적을 캡처한다: 그것이 받은 입력, 그것이 수행한 모델 호출, 그것이 호출한 도구, 그것이 받은 출력, 그리고 그것이 생성한 최종 응답이나 조치. 이는 에이전트가 실제로 무엇을 했는지 이해하는 데 필요한 세부 정보 수준이다.
이것이 우리가 에이전트 관찰성이 에이전트 평가에 힘을 싣는다고 주장한 이유이고, 에이전트 개선 루프가 트레이스로부터 시작하는 이유이다. 만약 당신이 궤적을 볼 수 없다면, 당신은 동작을 안정적으로 디버깅할 수 없거나 그러한 실패를 미래 평가로 전환할 수 없다.
신호
모니터링은 또한 그러한 트레이스로부터 신호를 수집하는 것을 포함해야 한다.
이러한 신호 중 일부는 LLM-as-judge 평가자로부터 올 수 있다. 예를 들어, 판사는 에이전트가 사용자의 질문에 답했는지, 정책을 따랐는지, 올바른 톤을 사용했는지, 또는 작업을 완료했는지 여부를 점수화할 수 있다. 다른 신호는 더 간단할 수 있다. 정규식은 필요한 구문이 나타났는지, 금지된 도구가 호출되었는지, 또는 알려진 실패 패턴이 발생했는지 여부를 포착할 수 있다.
이러한 신호는 품질 검사 이상의 목적에 유용하다. 그들은 또한 제품 분석의 한 형태가 될 수 있다. 그들은 사용자가 에이전트에게 무엇을 요청하는지, 에이전트가 어디에 갇혀 있는지, 사용자가 얼마나 자주 그들을 수정하는지, 그리고 사용자가 오류를 인식하는 곳을 알려줄 수 있다.
피드백
피드백은 모니터링의 또 다른 핵심 부분이다.
트레이스만 저장하는 것으로는 충분하지 않다. 팀은 또한 그러한 트레이스와 함께 피드백을 저장해야 한다. 그 피드백은 LLM 판사, 정규식 기반 신호, 인간 검토자, 또는 API를 통해 수집된 직접 사용자 피드백에서 올 수 있다. 예를 들어, LangSmith에서, 팀은 사용자 피드백을 기본 실행에 직접 첨부할 수 있으며, "사용자가 불행했다"를 "에이전트가 세 단계 전에 잘못된 도구를 사용했다"에 연결하기가 더 쉬워진다.
대시보드
마지막으로, 팀은 시간이 지남에 따라 트렌드를 표시할 수 있는 대시보드 및 경고가 필요하다.
유용한 에이전트 대시보드는 사용량, 피드백, 지연, 비용, 도구 호출, 평가자 점수 및 반복되는 실패 패턴 같은 메트릭을 추적한다. 경고는 증가하는 지연, 증가하는 비용, 실패하는 도구, 감소하는 사용자 피드백, 또는 정책 위반의 스파이크 같은 중요한 임계값을 초과할 때 트리거되어야 한다.
좋은 모니터링은 단순히 시스템이 작동 중인지 여부를 아는 것이 아니다. 에이전트가 올바른 작업을 올바른 방식으로 수행하고 시간이 지남에 따라 개선되고 있는지 여부를 이해하는 것이다.
가장 강력한 모니터링 시스템은 평가로 직접 피드백된다. 중요한 트레이스는 데이터세트 예제가 되고, 반복되는 실패는 메트릭이 되고, 프로덕션 동작은 다음 라운드의 개선의 기초가 된다.
반복
최고의 조직은 에이전트 개발 생명주기를 빠르고 체계적으로 이동한다.
그들은 배포하기 전에 완벽한 에이전트를 기다리지 않는다. 대신, 그들은 유용한 것을 구축하고, 그것의 동작을 이해하기 위해 충분히 테스트하고, 제어된 방식으로 배포하고, 프로덕션에서 어떻게 수행하는지 모니터링하고, 그러한 학습 내용을 다음 버전으로 피드백한다.
이것은 무분별하게 배포한다는 뜻이 아니다. 핵심은 가시성을 갖는 것이다.
데이터세트, 실험, 추적, 피드백, 대시보드를 가진 팀은 실제 사용법에서 직접 학습할 수 있다. 그들은 광범위하게 출시하기 전에 변경 사항을 테스트하고, 프로덕션에서 무엇이 손상되었는지 파악하고, 실패를 평가로 전환하고, 추측에 의존하지 않고 에이전트를 개선할 수 있다.
이것이 팀이 언덕을 올라가는 방법이고, 에이전트 시스템이 시간이 지남에 따라 개선되는 방법이다.
가장 효과적인 팀은 어려운 예제를 찾고, 에이전트가 왜 실패했는지 이해하고, 프롬프트, 도구 구성, 검색 전략, 모델, 미들웨어, 또는 워크플로우를 조정한다. 그들은 평가를 다시 실행하고, 더 나은 버전을 배포하고, 모니터링은 다음 엣지 케이스 및 실패를 제공한다.
엔터프라이즈 내에서, 도전은 그 루프를 팀 전체에서 반복 가능하게 만드는 것이다.
만약 모든 팀이 처음부터 자신의 평가 프레임워크, 배포 인프라, 추적 시스템, 피드백 파이프라인 및 대시보드를 구축해야 한다면, 에이전트 개발은 느리게 진행될 것이다. 가장 효과적인 조직은 팀이 기본 시스템을 지속적으로 재창조하지 않고 생명주기를 이동할 수 있도록 공유 인프라에 투자한다.
이것이 에이전트 개발 생명주기를 운영 관행으로 만드는 것이다.
거버넌스
거버넌스는 전체 에이전트 개발 생명주기 주변에 위치한다.
단일 에이전트의 경우, 가벼운 제어로 충분할 수 있다. 조직이 더 많은 에이전트를 배포할수록, 거버넌스가 필요해진다. 이것이 없으면, 팀은 빠르게 발견하기 어렵고, 모니터링하기 어렵고, 비용이 많이 들고, 무엇을 할 수 있는지 불명확한 에이전트로 끝난다.
비용
첫 번째 거버넌스 도전은 비용이다.
에이전트는 여러 모델 호출, 긴 컨텍스트 윈도우, 반복되는 도구 사용, 재시도 또는 오랜 시간 실행을 포함할 수 있기 때문에 비용이 많이 들 수 있다. 조직은 예산, 사용량 모니터링, 경고 및 어떤 에이전트, 팀, 모델 또는 도구가 비용을 주도하는지에 대한 가시성을 통해 그 지출을 추적하고 관리할 수 있는 방법이 필요하다.
도구 액세스
두 번째 거버넌스 도전은 도구 액세스이다.
에이전트는 조치를 취할 수 있기 때문에 유용하지만, 이는 위험을 초래한다. 팀은 에이전트가 액세스할 수 있는 도구, 어떤 조건에서, 어떤 사용자를 대신하여 액세스할 수 있는 도구에 대한 명확한 제어가 필요하다.
이것이 감사 추적이 중요해지는 곳이다. 에이전트가 도구를 호출하면, 조직은 어떤 에이전트가 호출을 만들었는지, 어떤 입력을 사용했는지, 어떤 출력을 생성했는지, 어떤 사용자 또는 정책이 조치를 승인했는지를 검사할 수 있어야 한다. 도구 호출은 종종 에이전트 동작이 비즈니스 영향을 주도하는 곳이므로, 관찰 가능하고 검토 가능해야 한다.
휴먼인더루프는 또 다른 중요한 거버넌스 메커니즘이다.
모든 도구 호출이 완전히 자동화되어야 하는 것은 아니다. 일부 작업은 인간 검토를 위해 일시 중지되어야 한다. 특히 고객, 금융 시스템, 민감한 데이터 또는 프로덕션 인프라를 포함할 때 그렇다. 휴먼인더루프 워크플로우는 처음부터 시스템에 설계될 때 가장 잘 작동한다.
발견 가능성
세 번째 거버넌스 도전은 발견 가능성 및 재사용이다.
조직이 더 많은 에이전트를 구축할수록, 그들은 또한 프롬프트, 스킬, 도구, 검색 출처, 정책, 심지어 다른 에이전트와 같은 더 많은 재사용 가능한 자산을 축적한다. 좋은 발견 및 거버넌스 메커니즘이 없으면, 팀은 이러한 구성 요소를 반복적으로 재생성하는 경향이 있으며, 이는 불일치로 이어진다. 공유 컨텍스트 및 공유 에이전트는 찾을 수 있고, 재사용 가능하고, 거버넌스되어야 한다.
이는 스킬에 특히 중요하다. 스킬은 워크플로우, 작성 스타일, 도메인별 절차 또는 도구 사용 지시사항을 인코딩할 수 있다. 한 팀이 이미 좋은 스킬을 구축했다면, 다른 팀은 처음부터 새 버전을 작성하기보다는 그것을 찾을 수 있어야 한다.
좋은 거버넌스는 팀을 느리게 하는 것에 관한 것이 아니다. 에이전트 시스템이 확장될 때 가시성, 제어 또는 일관성을 잃지 않으면서 빠른 반복을 가능하게 하는 것이다.
결론
최고의 조직은 이미 이러한 방식으로 운영하기 시작했다. 그들은 조기에 배포하지만, 맹목적으로 배포하지 않는다. 그들은 배포 전에 평가하고, 배포 후 동작을 모니터링하고, 지속적으로 학습한 내용을 사용하여 다음 버전을 더 좋게 만든다.
이것이 에이전트 개발을 반복 가능하게 만드는 것이다. 그것은 또한 에이전트가 데모에서 신뢰할 수 있는 프로덕션 시스템으로 이동할 수 있게 하는 것이다.