AI·News
뒤로

에이전트 개발 라이프사이클: AI 에이전트 구축, 테스트, 배포 및 모니터링 | LangChain

The Agent Development Lifecycle: Build, Test, Deploy & Monitor AI Agents | LangChain

모든 사람이 에이전트를 배포하고 싶어한다.

최고의 조직들은 반복적으로, 안전하게, 체계적으로 이를 수행하는 방법을 찾아냈다. 그들은 조기에 배포하고, 실제 사용법을 학습하며, 빠르게 반복한다. 그들은 에이전트를 일회성 데모나 고립된 프로젝트로 취급하지 않는다.

대신, 그들은 실험을 시간이 지남에 따라 배포, 학습, 개선하는 반복 가능한 시스템으로 전환하여 모멘텀을 생성하는 에이전트 개발 생명주기를 구축했다.

그 생명주기는 네 가지 부분으로 이루어져 있다:

구축 → 테스트 → 배포 → 모니터링

순서는 의도적이다. 테스트는 에이전트가 프로덕션에 도달하기 전에 시작되어야 하며, 이후에 시작되어서는 안 된다. 팀은 배포 전에 에이전트를 테스트하고, 제어된 방식으로 배포하며, 프로덕션에서 그들이 어떻게 작동하는지 모니터링한 다음, 그 학습 내용을 다음 빌드 및 평가 사이클로 피드백해야 한다.

단일 에이전트의 경우, 이 프로세스는 가벼운 상태로 유지될 수 있다. 많은 에이전트에 걸쳐, 이는 인프라 및 거버넌스 챌린지가 된다. 팀은 비용을 제어하고, 도구 액세스를 관리하고, 도구 호출을 검사하고, 컨텍스트를 재사용하고, 인간이 관여해야 하는 위치를 결정할 수 있는 공유 방법이 필요하다.

에이전트를 한 번 작동시키는 것과 에이전트를 반복 가능한 관행으로 구축하는 것의 차이는 올바른 개발 생명주기를 갖추고 있는 것에서 비롯된다.

구축

빌드 단계는 팀이 생성하고 있는 에이전트 시스템의 종류와 사용하려는 추상화 수준을 결정하는 곳이다.

여기에는 광범위한 도구 세트가 있다. 일부 도구는 코드 우선이지만, 다른 도구는 노코드 또는 로우코드이다. 일부는 추상화에 중점을 두지만, 다른 도구는 프롬프트, 도구, 스킬, 상태를 가진 작동 환경을 에이전트에 제공하는 데 중점을 둔다.

코드 우선 측면에서, 팀은 종종 오픈소스 프레임워크와 하네스에 의존한다. 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에서, 팀은 사용자 피드백을 기본 실행에 직접 첨부할 수 있으며, "사용자가 불행했다"를 "에이전트가 세 단계 전에 잘못된 도구를 사용했다"에 연결하기가 더 쉬워진다.

대시보드

마지막으로, 팀은 시간이 지남에 따라 트렌드를 표시할 수 있는 대시보드 및 경고가 필요하다.

유용한 에이전트 대시보드는 사용량, 피드백, 지연, 비용, 도구 호출, 평가자 점수 및 반복되는 실패 패턴 같은 메트릭을 추적한다. 경고는 증가하는 지연, 증가하는 비용, 실패하는 도구, 감소하는 사용자 피드백, 또는 정책 위반의 스파이크 같은 중요한 임계값을 초과할 때 트리거되어야 한다.

좋은 모니터링은 단순히 시스템이 작동 중인지 여부를 아는 것이 아니다. 에이전트가 올바른 작업을 올바른 방식으로 수행하고 시간이 지남에 따라 개선되고 있는지 여부를 이해하는 것이다.

가장 강력한 모니터링 시스템은 평가로 직접 피드백된다. 중요한 트레이스는 데이터세트 예제가 되고, 반복되는 실패는 메트릭이 되고, 프로덕션 동작은 다음 라운드의 개선의 기초가 된다.

반복

최고의 조직은 에이전트 개발 생명주기를 빠르고 체계적으로 이동한다.

그들은 배포하기 전에 완벽한 에이전트를 기다리지 않는다. 대신, 그들은 유용한 것을 구축하고, 그것의 동작을 이해하기 위해 충분히 테스트하고, 제어된 방식으로 배포하고, 프로덕션에서 어떻게 수행하는지 모니터링하고, 그러한 학습 내용을 다음 버전으로 피드백한다.

이것은 무분별하게 배포한다는 뜻이 아니다. 핵심은 가시성을 갖는 것이다.

데이터세트, 실험, 추적, 피드백, 대시보드를 가진 팀은 실제 사용법에서 직접 학습할 수 있다. 그들은 광범위하게 출시하기 전에 변경 사항을 테스트하고, 프로덕션에서 무엇이 손상되었는지 파악하고, 실패를 평가로 전환하고, 추측에 의존하지 않고 에이전트를 개선할 수 있다.

이것이 팀이 언덕을 올라가는 방법이고, 에이전트 시스템이 시간이 지남에 따라 개선되는 방법이다.

가장 효과적인 팀은 어려운 예제를 찾고, 에이전트가 왜 실패했는지 이해하고, 프롬프트, 도구 구성, 검색 전략, 모델, 미들웨어, 또는 워크플로우를 조정한다. 그들은 평가를 다시 실행하고, 더 나은 버전을 배포하고, 모니터링은 다음 엣지 케이스 및 실패를 제공한다.

엔터프라이즈 내에서, 도전은 그 루프를 팀 전체에서 반복 가능하게 만드는 것이다.

만약 모든 팀이 처음부터 자신의 평가 프레임워크, 배포 인프라, 추적 시스템, 피드백 파이프라인 및 대시보드를 구축해야 한다면, 에이전트 개발은 느리게 진행될 것이다. 가장 효과적인 조직은 팀이 기본 시스템을 지속적으로 재창조하지 않고 생명주기를 이동할 수 있도록 공유 인프라에 투자한다.

이것이 에이전트 개발 생명주기를 운영 관행으로 만드는 것이다.

거버넌스

거버넌스는 전체 에이전트 개발 생명주기 주변에 위치한다.

단일 에이전트의 경우, 가벼운 제어로 충분할 수 있다. 조직이 더 많은 에이전트를 배포할수록, 거버넌스가 필요해진다. 이것이 없으면, 팀은 빠르게 발견하기 어렵고, 모니터링하기 어렵고, 비용이 많이 들고, 무엇을 할 수 있는지 불명확한 에이전트로 끝난다.

비용

첫 번째 거버넌스 도전은 비용이다.

에이전트는 여러 모델 호출, 긴 컨텍스트 윈도우, 반복되는 도구 사용, 재시도 또는 오랜 시간 실행을 포함할 수 있기 때문에 비용이 많이 들 수 있다. 조직은 예산, 사용량 모니터링, 경고 및 어떤 에이전트, 팀, 모델 또는 도구가 비용을 주도하는지에 대한 가시성을 통해 그 지출을 추적하고 관리할 수 있는 방법이 필요하다.

도구 액세스

두 번째 거버넌스 도전은 도구 액세스이다.

에이전트는 조치를 취할 수 있기 때문에 유용하지만, 이는 위험을 초래한다. 팀은 에이전트가 액세스할 수 있는 도구, 어떤 조건에서, 어떤 사용자를 대신하여 액세스할 수 있는 도구에 대한 명확한 제어가 필요하다.

이것이 감사 추적이 중요해지는 곳이다. 에이전트가 도구를 호출하면, 조직은 어떤 에이전트가 호출을 만들었는지, 어떤 입력을 사용했는지, 어떤 출력을 생성했는지, 어떤 사용자 또는 정책이 조치를 승인했는지를 검사할 수 있어야 한다. 도구 호출은 종종 에이전트 동작이 비즈니스 영향을 주도하는 곳이므로, 관찰 가능하고 검토 가능해야 한다.

휴먼인더루프는 또 다른 중요한 거버넌스 메커니즘이다.

모든 도구 호출이 완전히 자동화되어야 하는 것은 아니다. 일부 작업은 인간 검토를 위해 일시 중지되어야 한다. 특히 고객, 금융 시스템, 민감한 데이터 또는 프로덕션 인프라를 포함할 때 그렇다. 휴먼인더루프 워크플로우는 처음부터 시스템에 설계될 때 가장 잘 작동한다.

발견 가능성

세 번째 거버넌스 도전은 발견 가능성 및 재사용이다.

조직이 더 많은 에이전트를 구축할수록, 그들은 또한 프롬프트, 스킬, 도구, 검색 출처, 정책, 심지어 다른 에이전트와 같은 더 많은 재사용 가능한 자산을 축적한다. 좋은 발견 및 거버넌스 메커니즘이 없으면, 팀은 이러한 구성 요소를 반복적으로 재생성하는 경향이 있으며, 이는 불일치로 이어진다. 공유 컨텍스트 및 공유 에이전트는 찾을 수 있고, 재사용 가능하고, 거버넌스되어야 한다.

이는 스킬에 특히 중요하다. 스킬은 워크플로우, 작성 스타일, 도메인별 절차 또는 도구 사용 지시사항을 인코딩할 수 있다. 한 팀이 이미 좋은 스킬을 구축했다면, 다른 팀은 처음부터 새 버전을 작성하기보다는 그것을 찾을 수 있어야 한다.

좋은 거버넌스는 팀을 느리게 하는 것에 관한 것이 아니다. 에이전트 시스템이 확장될 때 가시성, 제어 또는 일관성을 잃지 않으면서 빠른 반복을 가능하게 하는 것이다.

결론

최고의 조직은 이미 이러한 방식으로 운영하기 시작했다. 그들은 조기에 배포하지만, 맹목적으로 배포하지 않는다. 그들은 배포 전에 평가하고, 배포 후 동작을 모니터링하고, 지속적으로 학습한 내용을 사용하여 다음 버전을 더 좋게 만든다.

이것이 에이전트 개발을 반복 가능하게 만드는 것이다. 그것은 또한 에이전트가 데모에서 신뢰할 수 있는 프로덕션 시스템으로 이동할 수 있게 하는 것이다.

Everyone wants to ship agents.

The best organizations have figured out how to do it repeatedly, safely, and systematically. They ship early, learn from real usage, and iterate quickly. They don’t treat agents as one-off demos or isolated projects.

Instead, they’ve  built an agent development lifecycle that creates momentum by turning experimentation into a repeatable system for shipping, learning, and improving over time.

That lifecycle has four parts:

Build → Test → Deploy → Monitor

The order is intentional. Testing should start before an agent reaches production, not after. Teams need to test the agents before deployment, deploy them in a controlled way, monitor how they behave in production, and feed those learnings back into the next build and evaluation cycle.

For a single agent, this process can stay lightweight. Across many agents, it becomes an infrastructure and governance challenge. Teams need shared ways to control cost, manage tool access, inspect tool calls, reuse context, and decide where humans need to be involved.

The difference between getting an agent to work once to building agents as a repeatable practice comes from having the right development lifecycle in place.

Build

The build phase is where teams decide what kind of agent system they are creating and what level of abstraction they want to use.

There is a wide range of tooling here. Some tools are code-first, while others are no-code or low-code. Some focus on abstractions, while others focus on giving agents a working environment with prompts, tools, skills, and state.

On the code-first side, teams often reach for open-source frameworks and harnesses. In the LangChain ecosystem, that includes LangChain, LangGraph, and Deep Agents. Outside of LangChain, examples include CrewAI and Claude Agents SDK.

These tools operate at different layers of the stack.

Agent frameworks focus primarily on abstractions. They help developers compose model calls, tools, prompts, retrieval, structured outputs, and agent loops. LangChain and CrewAI are examples in this category.

Agent runtimes focus on execution. They support agents that need state, control flow, durability, and human intervention. LangGraph is the clearest example in the LangChain ecosystem. It gives you a way to build agentic systems that can branch, loop, pause, resume, and persist state over time.

Agent harnesses focus on doing. They provide the surrounding structure agents need for longer-running tasks: prompts, skills, MCP servers, hooks, middleware, and sometimes a filesystem. Deep Agents and the Claude Agent SDK are examples of this pattern.

These distinctions matter because “building an agent” can mean different things.

For a simple application, it may only involve defining a tool-calling loop. For a more sophisticated agent, it may involve writing prompts, defining skills, connecting MCP servers, configuring middleware, and setting up context the agent can retrieve or update over time.

No-code building

There is also a no-code and low-code side of the build phase. Tools like LangSmith Fleet, Claude Cowork, and n8n allow more people to participate in agent development. That matters because the person who understands the workflow needed is not always the person who writes the code.

At the same time, no-code tools do not eliminate the need for engineering control. As systems become more complex, teams usually need ways to extend or override behavior in code. Hooks and middleware are especially important here because they allow teams to add custom logic around tool calls, context handling, approvals, auth, or business rules without rebuilding every agent from scratch.

The best build environments make simple things simple and complex things possible. They let domain experts edit prompts, skills, and context, while still giving engineers control over the parts that need to be reliable, testable, and governed.

Test

Before an agent is deployed, teams need a way to determine whether it is actually ready.

That does not mean building a perfect eval suite before anyone uses the agent. In practice, that is rarely realistic. It does mean having enough evals in place to catch obvious failures, compare versions, and avoid shipping changes blindly.

Most eval workflows start with  a small dataset of representative tasks. Some examples come from expected use cases, while others come from manual testing, dogfooding, support tickets, prior traces, or known edge cases. Over time, production traces make these datasets much stronger, but testing should start before production.

Datasets and metrics

Datasets are how teams preserve what they learn. Without them, the same failures tend to reappear after prompt changes, model upgrades, or tool updates.

The right metrics depend on the task.

In some cases, there is a clear ground truth answer. Did the agent extract the right value? Did it choose the right label? Did it update the right field? These tasks can be measured directly for correctness.

Other times, there is no single ground truth answer. An agent may need to write a response, summarize a conversation, decide whether to escalate, or complete a task with many valid paths. In those cases, teams rely more on criteria-based evaluation. The questions become whether the response was grounded, whether the agent followed policy, whether it asked for clarification, or whether it completed the task efficiently without unnecessary tool calls.

Experiments

Experiments are what connect datasets and metrics to iteration. They allow teams to compare prompts, models,retrieval strategies, tool schemas, and orchestration patterns against the same evaluation set. . Over time, these experiments show whether the agent is improving or regressing.

The goal is not to create a perfect eval suite on day one. The goal is to start with a useful one and continuously improve it. The most valuable eval datasets are built from the hardest examples: first from development and dogfooding, then later from production.

Simulations

Simulation is another important part of testing.

Many agents are multi-turn systems. They do not just answer one question; they have a conversation, gather information, call tools, update state, and recover from ambiguity. For those agents, single-turn evals are not enough. Teams need multi-turn evals and simulated end-to-end interactions.

Voice agents are an obvious example, but the pattern is broader. Any agent that operates over a sequence of turns may need simulation. A support agent may need to handle a frustrated customer, ask follow-up questions, check order status, and decide whether escalation is necessary. A coding agent may need to inspect a repository, make changes, run tests, and respond to feedback. An internal operations agent may need to gather missing information before taking action.

Good testing practices help teams improve agents systematically without relying on vibes. They turn expected behavior into datasets, datasets into experiments, and experiments into better versions of the system. After deployment, monitoring supplies the real-world examples that make those evals stronger.

Deploy

Once an agent has been built and evaluated, it needs an environment where it can reliably run. 

For simple agents, deployment may look similar to deploying a traditional application. But many agents need more than a stateless server. They run over longer periods of time, call tools, wait for human input, write files, recover from interruptions, and maintain state across multiple interactions or tasks.

That is why the runtime matters.

A production agent runtime typically needs to support durable execution and human-in-the-loop patterns. Durable execution means the agent can checkpoint progress and resume instead of losing work when something fails. Human-in-the-loop means the agent can pause when it needs approval, clarification, or review.

There are off-the-shelf solutions for this. LangSmith Deployment provides infrastructure for deploying and managing Deep Agents and LangGraph agents. AWS AgentCore is another example of a managed runtime for agents. Some teams also build their own runtime on top of systems like Temporal, especially when they already use Temporal for long-running workflows elsewhere in the stack.

Sandboxes

Many agents also  need dedicated execution environments.

Agents increasingly need to write code, execute code, inspect files, transform documents, or interact with a filesystem. In those cases, teams need to decide where that work happens. Sandboxes are a common solution. They provide isolated execution environments with filesystem access, while reducing the blast radius of mistakes or unsafe behavior.

Examples include LangSmith Sandboxes, Daytona, and E2B.

Not every agent requires a full sandbox. In some cases, the agent just needs a place to store and retrieve files. A virtual filesystem can be enough. Deep Agents supports this pattern by allowing agents to use files as working memory without necessarily executing arbitrary code inside a sandbox. Underneath, that filesystem might be backed by systems like Postgres or S3.

Context Hub

Another often overlooked part of deployment is managing prompts and context. 

Some of the most important parts of an agent are not traditional application code. Prompts, retrieval context, skills, and task instructions may need to change more often than the application itself. They may also need to be edited by people who are not engineers.

That creates the need for a prompt or context hub: a place to store, version, review, and update the non-code parts of the agent. This allows teams to adjust agent behavior without a full deploy, and it lets domain experts own the context they understand best.

In practice, deployment is not just about putting an agent on a server. It is about giving the agent the runtime, execution environment, and context management systems it needs to do real work.

Monitor

Once agents are deployed, teams need visibility into how they actually behave in production.

This is where monitoring agents differs from monitoring traditional software. Metrics like latency, cost, error rates, and uptime still matter, but they are only part of the picture. An agent can return a technically successful response and still fail the task itself. It may call the wrong tool, rely on the wrong context, skip a required approval step, or produce an answer that sounds plausible but is wrong.

To understand those failures, teams need traces.

A trace captures the full trajectory of the agent: the inputs it received, the model calls it made, the tools it invoked, the outputs it received, and the final response or action it produced. This is the level of detail you need to understand what the agent actually did.

This is why we have argued that agent observability powers agent evaluation, and why the agent improvement loop starts with a trace. If you cannot see the trajectory, you cannot reliably debug the behavior or turn those failures into future evals.

Signals

Monitoring should also include harvesting signals from those traces.

Some of those signals can come from LLM-as-judge evaluators. For example, a judge can score whether the agent answered the user’s question, followed policy, used the right tone, or completed the task. Other signals can be simpler. A regex can catch whether a required phrase appeared, whether a forbidden tool was called, or whether a known failure pattern occurred.

These signals are useful for more than just quality checks. They can also become a form of product analytics. They can tell you which tasks users are asking agents to do, where agents are getting stuck, how often users correct them, and where users perceive errors.

Feedback

Feedback is another core part of monitoring.

It is not enough to store traces alone. Teams also need to store feedback with those traces. That feedback can come from LLM judges, regex-based signals, human reviewers, or direct user feedback collected through an API. In LangSmith, for example, teams can attach user feedback directly to the underlying run,  making it easier to connect “the user was unhappy” to “the agent used the wrong tool three steps earlier.”

Dashboards

Finally, teams need dashboards and alerts that can surface trends over time.

A useful agent dashboard tracks metrics like usage, feedback, latency, cost, tool calls, evaluator scores, and recurring failure patterns. Alerts should trigger when important thresholds are crossed, such as rising latency, increasing costs, failing tools, declining user feedback, or spikes in policy violations. 

Good monitoring is not just about knowing whether the system is up. It is about understanding whether the agent is doing the right work, in the right way, and improving over time. 

The strongest monitoring systems feed directly back into evaluation.  Important traces become dataset examples, recurring failures become metrics, and production behavior becomes the foundation for the next round of improvement.

Iterate

The best organizations move through the agent development lifecycle quickly and systematically.

They do not wait for a perfect agent before shipping. Instead, they build something useful, test it enough to understand its behavior, deploy it in a controlled way, monitor how it performs in production, and feed those learnings back into the next version.

That does not mean shipping carelessly. The key is having visibility. 

Teams with  datasets, experiments, tracing, feedback, and dashboards can learn directly from real real usage. They can test changes before rolling them out broadly, identify what broke in production, turn failures into evals, and improve the agent without relying on guesswork.

This is how teams hill-climb, and how agent systems improve over time.

The most effective teams find the hard examples, understand why the agent failed, and adjust the prompt, tool configuration, retrieval strategy, model, middleware, or workflow. They re-run the  evals,  deploy the better version, and monitoring gives them the next edge cases and failures.

Inside an enterprise, the challenge is making that loop  repeatable across teams.

If every team has to build its own evaluation framework, deployment infrastructure, tracing system, feedback pipeline, and dashboards from scratch, agent development will move slowly. The most effective organizations invest in shared infrastructure so teams can move through the lifecycle without constantly reinventing the underlying systems.

That is what makes the agent development lifecycle an operational practice.

Govern

Governance sits around the entire agent development lifecycle.

For a single agent, lightweight controls may be enough. As organizations deploy more agents, governance becomes necessary. Without it, teams quickly end up with agents that are difficult to discover, difficult to monitor, expensive to run, and unclear in what they are allowed to do.

Cost

The first governance challenge is cost.

Agents can become expensive because they may involve multiple model calls, long context windows, repeated tools usage, retries, or run for a long time. Organizations need ways to track and manage that spend through budgets, usage monitoring, alerts, and visibility into which agents, teams, models, or tools are driving costs.

Tool Access

The second governance challenge is tool access.

Agents are useful because they can take action, but that also introduces risk. Teams need clear controls around which tools an agent can access, under what conditions, and on behalf of which users.

This is where audit trails become important. If an agent calls a tool, organizations should be able to inspect which agent made the call, what inputs it used, what outputs it produced, and what user or policy authorized the action. Tool calls are often where agent behavior drives business impact, so they need to be observable and reviewable.

Human-in-the-loop is another important governance mechanism.

Not every tool call should be fully automated. Some operations should pause for human review, especially when they involve customers, financial systems, sensitive data, or production infrastructure. Human-in-the-loop workflows work best when they are designed into the system from the beginning.

Discoverability

The third governance challenge is discoverability and reuse.

As organizations build more agents, they also accumulate more reusable assets such as prompts, skills, tools, retrieval sources, policies, and even other agents. Without good discovery and governance mechanisms, teams tend to recreate these components repeatedly, leading to inconsistency. Shared context and shared agents need to be findable, reusable, and governed.

This is especially important for skills. A skill can encode a workflow, a writing style, a domain-specific procedure, or instructions for using a tool. If one team has already built a good skill, another team should be able to find it rather than write a new version from scratch.

Good governance is not about slowing teams down. It is about making fast iteration possible without losing visibility, control, or consistency as agent systems scale.

Conclusion

The best organizations have already started to operate this way. They ship early, but they do not ship blindly. They evaluate before deploying, monitor behavior after deployment, and continuously use what they learn to make the next version better.

That is what makes agent development repeatable. It is also what allows agents to move from demos into reliable production systems.