dropbox

DSPy를 활용해 Dash 채팅에서 AI 평가를 더 나은 응답으로 전환한 방법 (새 탭에서 열림)

Dropbox는 Dash chat 에이전트의 최종 답변만 평가하지 않고, 의도 파악·검색·도구 사용·근거 선택·다중 턴 대응까지 전체 실행 과정을 평가했습니다. 이후 사람의 평가 데이터를 활용해 LLM 평가자(judge)를 보정하고, DSPy의 GEPA·MIPROv2로 평가자와 에이전트 시스템 프롬프트를 최적화했습니다. 그 결과 불완전한 답변을 줄이고 토큰 사용량도 낮추면서 답변 품질을 유지할 수 있었습니다.

에이전트 평가가 어려운 이유

  • 전통적인 검색 평가는 단일 결과의 관련성을 주로 측정하지만, 에이전트는 여러 단계의 의사결정을 수행합니다.
  • 평가 대상에는 다음 과정이 모두 포함됩니다.
    • 사용자의 의도 해석
    • 문서·메시지·회의 기록 등 적절한 컨텍스트 수집
    • 검색 및 문서 읽기 같은 도구 사용
    • 여러 출처의 정보 종합
    • 직접 답변, 추가 검색, 요약, 명확화 질문 중 적절한 선택
  • 대화가 여러 턴에 걸쳐 진행될 수 있으므로 최종 답변뿐 아니라 피드백 반영과 재검색 과정도 평가해야 합니다.
  • 따라서 답변 품질, 의도 이해, 컨텍스트 선택, 도구 사용, 근거성, 지시 준수, 과업 완료 여부를 পৃথ도로 분석해야 실패 원인을 찾을 수 있습니다.

사람의 평가로 LLM judge 보정

  • 내부 채팅 샘플과 에이전트 trace 로그를 수집하고, 사람이 다음 다섯 가지 차원을 평가했습니다.
    • 사용자 의도 추종
    • 의미적 관련성
    • 도구 호출 품질
    • 지시사항 준수
    • 컨텍스트 선택
  • 평가자는 먼저 의도와 컨텍스트가 적절했는지 확인한 뒤 검색·검색 결과 활용·도구 행동을 검토했습니다.
  • 이후 최종 답변이 선택된 근거에 의해 뒷받침되는지, 관련성·근거성·완전성·지시 준수 여부를 평가했습니다.
  • 일부 지표는 1~5점으로 점수화하고, 함께 다음 정보를 기록했습니다.
    • 점수의 근거가 되는 reasoning note
    • 오래된 근거, 누락된 컨텍스트, 근거 없는 주장, 불완전한 답변, 개인화 실패 등의 failure code
  • 점수는 결과를 요약하지만, 평가 메모와 실패 코드는 문제가 발생한 위치와 원인을 보여줍니다.
  • 이 데이터는 judge 프롬프트 보정뿐 아니라 디버깅, 오류 분석, 개선 로드맵 수립, 우선순위 결정에도 활용됐습니다.

DSPy를 이용한 평가자 개선

  • 목표는 LLM judge의 점수가 사람의 판단과 더 일치하도록 만드는 것이었습니다.
  • judge는 단순히 답변에 점수를 매기는 것이 아니라 다음과 같은 정해진 절차를 따라야 했습니다.
    • 사용자의 의도 추론
    • 대화 내용 검토
    • 에이전트 trace와 지원 근거 확인
    • 컨텍스트 선택과 도구 사용 분석
    • 점수·실패 코드·평가 메모 작성
  • DSPy를 최적화 도구로 사용하고, GEPA와 MIPROv2를 알고리즘으로 활용했습니다.
  • 알고리즘은 사람의 라벨이 있는 예제에서 프롬프트 변경안을 자동으로 제안하고 테스트했습니다.
  • 지원한 최적화 방식에는 다음이 포함됩니다.
    • judge 지침을 처음부터 새로 작성
    • 기존 평가 행동을 유지하면서 다른 기반 모델에 맞게 조정
    • 특정 실패 유형을 집중적으로 수정하는 타깃 최적화
  • 이렇게 최적화된 judge는 이후 채팅 에이전트 자체의 시스템 프롬프트를 개선하는 평가 신호로 사용됐습니다.

평가에서 에이전트 개선으로 이어지는 피드백 루프

  • 전체 과정은 다음 순환 구조로 구성됩니다.
    • 사람의 라벨이 judge를 보정
    • 개선된 judge가 대규모 평가 신호 생성
    • 평가 신호가 에이전트 프롬프트와 행동 개선에 사용
  • 이 구조를 통해 사람의 평가를 모든 대화에 직접 적용하지 않고도 에이전트를 반복적으로 최적화할 수 있었습니다.
  • 최종적으로 불완전한 답변이 크게 줄었고, 답변 품질을 떨어뜨리지 않으면서 토큰 사용량도 절감했습니다.

실무적으로는 에이전트 개선 전에 평가자의 신뢰성을 먼저 검증해야 합니다. 최종 점수만 수집하기보다 trace, 평가 이유, 실패 유형을 함께 기록하고, 사람의 라벨과 DSPy 같은 자동 최적화 도구를 결합하면 평가를 지속적인 품질 개선 시스템으로 전환할 수 있습니다.