CI는 통과했습니다. 하지만 당신의 에이전트는 운영 준비가 되지 않았습니다.

지난 분기에 한 기업 고객에게 문서 에이전트를 인도했습니다.

저희 테스트 스위트는 94%의 통과율을 보여주었습니다.

파일럿 시작 3주 만에, 에이전트가 읽을 수 없는 송장에 대해 환불을 처리하기 시작했습니다. 이 과정은 조용히 진행되었습니다. 오류나 로그도 남지 않았습니다. 에이전트는 그저 정답처럼 보이는 오답을 내놓았을 뿐입니다.

그동안 저희 CI는 계속 초록색(통과) 상태를 유지했습니다.

문제는 모델이나 프롬프트가 아니었습니다. 문제는 저희가 테스트하지 않은 6%의 데이터였습니다. 그 6%는 운영자로부터 전달된 첫 번째 실제 데이터였습니다.

이것은 예외적인 상황(edge case)이 아닙니다. 이것이 바로 '운영 준비(operator-ready)'의 정의입니다.

'프로덕션 준비(Production-ready)'는 인프라에 관한 것입니다. 서비스가 중단되지 않고 부하를 처리할 수 있음을 의미합니다.

'운영 준비'는 다릅니다. 이는 에이전트가 그것을 만든 사람이 아닌 다른 사람을 위해 작동해야 함을 의미합니다. 설계하지 않은 데이터에서도 작동해야 하며, 실제 결과로 이어지는 결정을 내려야 합니다.

대부분의 테스트 파이프라인은 직접 만든 데이터 세트에 대한 통과율을 측정합니다. 실제 데이터가 테스트 세트와 다를 때 어떤 일이 발생하는지는 측정하지 않습니다.

97%의 검증 성공률을 가진 모델은 좋아 보입니다. 하지만 실패하는 3%를 보십시오.

만약 에이전트가 재시도 과정에서 누락된 필드를 기본값으로 채운다면, 당신은 '조용한 오류 생성기'를 만든 것입니다. 스키마는 통과하지만 데이터는 틀린 상태가 됩니다.

이를 해결하려면 스키마 유효성과 콘텐츠 신뢰도(content confidence)를 분리하십시오.

저희는 모든 응답에 신뢰도 점수(confidence score)를 추가했습니다. 이제 신뢰도가 낮으면 재시도 대신 사람의 검토를 요청합니다. 이 변경 사항 덕분에 초기 18건의 장애 중 14건을 잡아낼 수 있었습니다.

테스트 세트는 당신이 생각한 범위를 다룹니다. 하지만 운영자의 데이터는 당신이 놓친 부분을 다룹니다.

저희의 경우, 단일 페이지 송장을 테스트했습니다. 하지만 운영자는 스캔된 PDF 형태의 다중 페이지 송장을 사용했습니다. 에이전트는 이 새로운 형식에서 실패했습니다.

단순히 파서를 수정하는 데 그치지 마십시오. 실제 운영 환경에 배포하기 전에 운영자의 실제 데이터로 테스트하십시오.

이제 저희는 인수인계 전에 운영자 데이터에서 추출한 50개의 문서를 필수로 요구합니다. 합성 데이터(synthetic data)를 사용하지 않습니다. 그들의 데이터를 사용합니다.

또한 완전한 감사 추적(audit trail)이 필요합니다. 모델이 반환한 값만 기록하지 마십시오. 모델이 무엇을 하지 않기로 결정했는지도 기록하십시오.

최소한의 감사 추적에는 다음이 포함되어야 합니다:

  • 필드 수준의 신뢰도 점수가 포함된 출력값
  • 에이전트가 재시도했는지 여부를 보여주는 폴백(fallback) 지표
  • 정확한 문서를 재현하기 위한 입력 해시(input hash)
  • 사용된 특정 모델 및 프롬프트 버전

에이전트를 운영자에게 넘기기 전에 다음 다섯 가지를 확인하십시오:

  • 운영자의 실제 데이터로 50개 이상의 샘플을 실행하십시오.
  • 스키마 검사는 통과했지만 다운스트림(downstream) 오류를 일으킨 출력이 있는지 로그를 검색하십시오.
  • 에이전트가 안전하게 실패(fail safely)하는지 확인하기 위해 잘못된 형식의 입력을 넣어보십시오.
  • 특정 문서에 어떤 일이 일어났는지 5분 이내에 답변할 수 있는지 확인하십시오.
  • 에이전트가 가능한 최소한의 권한만 가지고 있는지 확인하십시오.

저희의 테스트 통과율은 94%였습니다. 하지만 첫 달의 오류율은 8%였습니다.

신뢰도 점수, 실전 테스트, 그리고 더 나은 로그를 추가한 후, 오류율은 1.4%로 떨어졌습니다.

문제는 테스트 점수가 아니었습니다. 테스트 범위(scope)가 문제였습니다.

Source: https://dev.to/ethanwritesai/our-ci-passed-your-agent-isnt-operator-ready-2mfn

Optional learning community: https://t.me/GyaanSetuAi