Building Better Agents through End-to-End Evals
엔드투엔드 평가로 더 나은 에이전트 만들기
Ramp는 회계 업무를 자동화하는 에이전트를 만들며 실제 업무 단계를 반영한 엔드투엔드 평가를 설계했습니다. 여러 합성 비즈니스 환경에서 기술과 메모리의 변경을 측정한 결과, 스킬 제거와 압축은 품질을 높이거나 비용을 낮췄고 업무 방식을 추린 메모리는 평균 점수를 5.7점 높였습니다.
- 주제
에디터 노트
최종 답만 채점하면 숫자는 맞지만 잘못된 절차를 밟은 에이전트가 통과할 수 있다는 댓글의 지적이 이 평가 설계에서 가장 큰 빈틈입니다. 원문은 태스크, 월드, 작업 궤적, 점수를 구분하고 도메인 전문가가 기준을 쓰도록 하지만, 실제 채점은 최종 결과물에 적용한다고 설명합니다. 궤적 검증을 추가했다는 댓글은 이 간극을 구체적으로 짚습니다. 고정된 기준선과 여러 월드를 두고 스킬을 제거하거나 압축한 뒤 성능을 비교하는 접근은 원문이 제시한 수치로 뒷받침됩니다. 반면 평균 점수만으로는 특정 월드의 하락이나 어려운 사례의 손실을 확인하기 어렵다는 댓글도 타당한 보완입니다. 메모리 실험 역시 기간별 수치를 빼야 한다는 원칙을 보여주지만, 다음 달 업무 규칙이 바뀌는 경우까지 다루지는 않습니다. 댓글에서 제안한 변화 사례를 넣으면 과거 절차의 재사용과 새 근거에 따른 갱신을 더 직접적으로 구분할 수 있습니다.
AI 요약
에이전트를 만들 때 가장 큰 실수는 사람이 어떻게 처리하는지 모르는 업무부터 자동화하는 일입니다. Ramp Stack의 회계 자동화 사례에서는 코드를 쓰기 전에 업무를 조정(reconciliation), 데이터 입력, 차이 분석, 스케줄 및 발생액 처리의 네 가지로 나눴습니다. 각 업무를 세부 단계로 풀면 에이전트가 해야 할 일과 평가에서 확인할 항목이 드러납니다. 예를 들어 매입채무 조정에서는 미지급 청구서와 매입채무 원장을 대조합니다. 청구서 합계가 3,500달러인데 원장에는 3,000달러만 있다면 빠진 500달러 청구서를 찾아 수정 사항을 기록해야 합니다.
평가 환경과 채점 기준
엔드투엔드 평가는 비즈니스 데이터가 데이터베이스에 들어가고, 에이전트가 도구를 써서 그 상태를 처리한 뒤, 결과물을 채점하는 구조입니다. 출시 전에는 실제 업무 데이터가 없으므로 합성 데이터로 환경을 마련합니다. 글에서는 이를 '월드(world)'라고 부릅니다. 예시 월드는 Shopify, Amazon, 도매 채널에서 가정용품을 판매하는 DTC 브랜드로, 장부와 현실적인 거래 내역, 정리가 덜 된 Excel 파일을 포함합니다. 실제 사용자의 데이터는 지저분할 수 있으므로 지나치게 깨끗한 합성 데이터는 평가를 약하게 만듭니다.
평가 사례는 네 부분으로 구성됩니다. 태스크는 '2025년 4분기 매입채무와 청구서를 조정해 달라'는 요청입니다. 월드는 에이전트가 접근하는 가상의 ERP와 사업 데이터입니다. 궤적(trajectory)은 청구서를 읽고 지급 내역을 맞추며 차이를 조사하는 에이전트의 작업 단계입니다. 점수(score)는 회계 전문가가 작성한 기준표를 바탕으로 LLM 심사자가 최종 결과를 채점한 값입니다. 통과와 실패만 가르는 대신 '4분기 매입채무 잔액이 정확한가', '중복 항목을 표시했는가'처럼 여섯 가지 기준을 두면 6개 중 4개를 충족했는지와 놓친 항목을 확인할 수 있습니다. 기준은 실제 검토자가 무엇을 거부할지 아는 도메인 전문가가 작성해야 합니다.
변경 사항을 평가하는 방법
평가는 실제 개발 결정을 바꿀 때 가치가 있습니다. 글에서는 모델을 고르는 일보다 하네스(harness), 즉 스킬과 도구, 인프라를 조정해 낮은 비용과 지연 시간으로 좋은 결과를 내는 일이 더 큰 개선 여지를 보였다고 설명합니다. 자동으로 스킬을 튜닝하는 GEPA 방식의 실험에서는 학습 중 향상이 다른 환경으로 일반화되지 않았습니다. 높은 추론 강도를 설정해도 정확도는 같고 비용만 늘었습니다.
효과가 있었던 방법은 에이전트를 ML 모델처럼 다루고 컨텍스트를 특성(feature)처럼 평가하는 일이었습니다. 스킬 제거 실험에서는 스킬이 없는 기준선과 스킬 하나씩 적용한 결과를 비교했습니다. 여섯 개 월드에서 스킬 여덟 개를 네 개로 줄였고 평균 점수는 2.8점 올랐습니다. 일부 스킬은 성능을 떨어뜨렸으며 모든 환경에서 가장 좋은 스킬은 없었습니다. 스프레드시트 스킬은 분량을 61% 줄여도 품질이 거의 그대로였고 월 3만 달러가량을 절감했습니다. 글의 원칙은 여러 월드에서 고정된 기준선과 모든 변경을 비교하고 점수를 실제로 높이는 변경만 남기는 것입니다.
메모리 평가와 다음 기간의 업무
메모리는 시간이 지나야 효과를 확인할 수 있어 평가하기 어렵습니다. 글에서는 같은 사업체의 데이터를 한 달 앞으로 진행한 '롤포워드 월드(roll-forward worlds)'를 만들었습니다. 에이전트가 이번 달 마감을 처리하고 배운 점을 기록한 뒤 다음 달 업무에서 평가받습니다. 기억할 내용은 사업체가 일하는 방식이며 기간별 수치는 새로 확인해야 합니다. 이전 작업 궤적에서 특정 기간의 금액을 뺀 메모리는 스킬만 썼을 때보다 평균 점수를 5.7점 높였습니다. 재사용 가능한 업무 절차를 담은 메모리는 한 태스크의 점수를 0%에서 100%로 높였습니다. 반대로 지난달의 구체적인 처리 방식을 그대로 담은 메모리는 다른 태스크 점수를 75%에서 25%로 떨어뜨렸습니다.
dev.to 반응
- @max_quimby — '데이터가 병목'이라는 부분은 저희 경험과 너무나 잘 맞습니다. 깨끗한 합성 데이터에서는 에이전트가 아주 똑똑해 보이다가 실제 고객의 지저분한 Excel 내보내기 파일을 처음 만나면 무너집니다. 지저분한 데이터 자체가 신호인데 대부분의 팀은 여기에 충분히 투자하지 않습니다. 통과와 실패 대신 여러 기준으로 채점하자는 데도 강하게 동의합니다. 저희도 여러 기준 점수로 바꾸고 나서야 의미 없는 빨간 X 대신 '6개 중 4개를 통과했고 놓친 것은 이 두 가지'라고 볼 수 있었습니다. 저희가 부딪힌 함정 하나는 최종 결과만 채점하는 LLM 심사자가 추론 과정은 틀렸지만 답만 맞아 보이는 결과를 통과시킨다는 점입니다. 숫자는 맞아도 궤적은 잘못된 경우입니다. 그래서 최종 결과뿐 아니라 궤적에도 검증 조건(assertions)을 추가했습니다. 월드에서 그런 문제를 겪으셨나요? 제품이 바뀔 때 도메인 전문가의 기준표가 낡지 않게 어떻게 관리하시나요? 저희 기준은 예상보다 빨리 어긋났습니다.
- @alexshev — 롤포워드 월드는 첫 번째 태스크 이후에도 메모리가 도움이 되는지 시험하는 좋은 방법입니다. 출처 정보(provenance)도 채점하면 좋겠습니다. 에이전트가 재사용 가능한 업무 절차와 다시 가져와야 하는 기간별 수치를 구분하는지 확인하는 방식입니다. 그러면 '새 수치를 사용하라'는 지침을 관찰 가능한 실패 유형으로 바꿀 수 있습니다.
- @aidiveyt — 스킬 여덟 개를 네 개로 줄인 제거 실험은 따라 해보고 싶은 부분입니다. 하네스가 서브에이전트에 일을 맡긴다면 한 가지 더 확인해야 합니다. Claude Code 서브에이전트 문서에 따르면 각 서브에이전트는 새롭고 격리된 컨텍스트 창에서 시작하며 부모의 대화 기록이나 이미 호출된 스킬을 보지 못합니다. 부모 대화를 이어받는 포크(fork)는 예외입니다. 따라서 메인 에이전트에서 스킬을 제거해 본 결과만으로 서브에이전트가 그 스킬을 어떻게 쓰는지는 알 수 없습니다.
- @marcusykim — 스킬 여덟 개를 네 개로 줄인 실험은 지시를 더 많이 넣으면 오히려 해가 될 수 있다는 점을 보여줍니다. 평균 2.8점 상승과 함께 월드별 점수 변화도 기록하고 도메인 전문가가 필수라고 보는 기준마다 최저 점수를 정하겠습니다. 그렇지 않으면 여러 월드의 점수 상승이 한 월드의 하락을 감출 수 있습니다. 같은 표가 61% 압축 결과를 판단하는 데도 도움이 됩니다. 평균 품질이 그대로인 점은 안심되지만 어려운 사례에서도 품질이 유지됐는지 알고 싶습니다.
- @jabinpou — 롤포워드 월드는 메모리 효과를 훨씬 설득력 있게 시험합니다. 다음 달에 사업체는 익숙하게 유지하되 업무 규칙 하나를 바꾸는 사례도 추가할 수 있겠습니다. 그러면 에이전트가 지난달 성공한 절차를 자동으로 적용하는 대신 새로운 증거를 알아차리는지 확인할 수 있습니다.
원문: dev.to / 번역·요약: Trawling