Vibe Coding을 넘어: DeepEval을 사용하여 에이전트 중심 개발 루프 구동하기
LLM 기반 에이전트를 개발하는 초기 단계에서 많은 개발자들은 "vibe coding"—프롬프트를 미세 조정하고, 몇 번의 수동 테스트를 실행한 뒤 출력이 "느낌"이 맞는지 결정하는 과정—에 의존합니다. 이러한 직관적인 접근 방식은 프로토타이핑에는 빠르지만, 근본적으로 확장 불가능하며 회귀(regression)가 발생하기 쉽습니다. 에이전트가 RAG 파이프라인, 다중 도구, 다회차 대화 등을 통합하며 복잡해짐에 따라, "vibe"는 더 이상 품질을 위한 신뢰할 수 있는 지표가 아닙니다.
DeepEval은 평가 스위트를 수동적인 품질 게이트에서 개발의 능동적인 동력으로 변환함으로써 패러다임의 전환을 가져옵니다. 코딩 에이전트의 워크플로우에 강력한 평가 프레임워크를 직접 통합함으로써, 개발자는 추측에서 벗어나 측정과 개선의 구조화된 반복 루프로 이동할 수 있습니다.
피드백 루프: "Vibes" 없는 Vibe Coding
DeepEval은 평가 스위트와 코딩 에이전트 사이의 긴밀한 피드백 루프를 가능하게 합니다. 인간 개발자가 수동으로 로그를 해석하는 대신, 코딩 에이전트 자체가 평가를 실행하고, 실패를 분석하며, 타겟팅된 수정을 구현합니다. 이 프로세스는 5단계 주기를 따릅니다:
- Dataset Generation: 에이전트는 골드 데이터셋을 식별하거나 생성합니다.
deepeval generate를 사용하여 에이전트는 문서, 기존 트레이스 또는 예시로부터 테스트 케이스를 합성할 수 있으며, 이를 통해 에이전트가 근거 있는 요구사항 세트에 대해 테스트되도록 보장합니다. - Suite Construction: 에이전트는 사전 정의된 템플릿을 사용하여 pytest 기반의 평가 스위트를 구축합니다. 50개 이상의 메트릭(예:
FaithfulnessMetric또는AnswerRelevancyMetric) 카탈로그에서 선택함으로써, 에이전트는 성공을 위한 객관적인 임계값을 설정합니다. - Execution: 에이전트는
deepeval test runCLI 명령어를 통해 스위트를 실행합니다. 이는 UI 기반 테스트보다 훨씬 더 신뢰할 수 있는, 재현 가능하고 변동성이 없는(non-flaky) 신호를 제공합니다. - Failure Localization: span-level 관찰을 사용하여 에이전트는 단순히 테스트가 실패했다는 것만 보는 것이 아니라, 어디서 실패했는지를 봅니다. 만약 "Faithfulness" 점수가 낮다면, 에이전트는 프롬프트의 어느 부분이 문제인지 추측하는 대신 특정 retriever span으로 실패를 추적할 수 있습니다.
- Patch and Verify: 에이전트는 retriever filter를 미세 조정하거나 tool schema를 조정하는 것과 같이 가능한 가장 작은 변경을 적용하고, 평가를 다시 실행하여 회귀 없이 수정을 확인합니다.
왜 이것이 코딩 에이전트에게 효과적인가
모든 평가 프레임워크가 자율 코딩 에이전트에게 적합한 것은 아닙니다. DeepEval은 에이전트 중심 개발을 위한 고신호(high-signal) 소스로 만드는 세 가지 특정 속성을 제공합니다:
- Structured Outputs: 모든 메트릭은 숫자 점수와 자연어
reason을 반환합니다. 이를 통해 에이전트는 비구조화된 로그를 스크래핑할 필요 없이 실패 뒤에 숨겨진 이유를 파싱할 수 있습니다. - Span-Level Localization:
@observe데코레이터를 활용하여 실패를 특정 파일과 함수에 매핑합니다. 이는 에이전트가 "shotgun debugging"을 하는 것을 방지하고 대신 문제를 일으키는 정확한 코드 라인으로 안내합니다. - Reproducible CLI: 단일하고 일관된 명령어(
deepeval test run)를 통해 에이전트는 다양한 반복 과정에서 개선 사항을 객관적으로 확인할 수 있습니다.
에이전트 중심 루프 구현하기
수동 평가에서 에이전트 주도 루프를 위해, 사고방식은 에이전트에게 "테스트를 추가하라"고 요청하는 것에서 "루프를 구동하라"고 요청하는 것으로 전환되어야 합니다. 이 워크플로우를 위한 효과적인 프롬프트는 다음과 같습니다:
"
deepeval test run tests/evals/를 실행하고 가장 낮은 점수를 받은 메트릭을 수정하십시오. 임계값을 변경하지 마십시오. 확인을 위해 다시 실행하십시오."
"Faithfulness 메트릭이 케이스 3, 7, 12에서 실패하고 있습니다. 각 retriever span을 열고 공통 패턴을 찾아 retriever를 패치하십시오. 메트릭을 수정하지 마십시오."
에이전트가 실패를 숨기기 위해 임계값을 낮추거나 어려운 테스트 케이스를 삭제하는 것을 금지하는 것과 같은 가드레일을 설정함으로써, 개발자는 에이전트가 단순히 메트릭을 속이는 것이 아니라 실제로 시스템의 성능을 것을 개선하고 있는지 확인 할 수 있습니다.
로컬에서 팀 단위로 확장하기
이 루프는 완전히 오프라인에서 작동하지만, Confident AI와 같은 중앙 집중식 플랫폼에 연결하면 이 에이전트 중심 워크플로우를 팀 전체로 확장할 수 있습니다. 코딩 에이전트가 테스트 스위트를 실행할 때, 결과 보고서는 deepeval view를 통해 인간이 검토할 수 있습니다. 또한, 프로덕션 모니터링을 통해 실제 실패 사례를를 통해 로컬 데이터셋에 다시 피드백을 제공함으로써, 에이전트의 다음 반복 단계가 실제 사용자의 불편 사항을 자동으로 해결하도록 보장할 수 있습니다.