음성 에이전트의 발화가 정확한가요? 올바른 주문을 했나요?
요약
본 글은 음성 주문 에이전트의 정확성을 평가하기 위한 오픈 소스 벤치마크인 IndicOrderBench를 소개합니다. 이 도구는 단순히 대화 내용을 읽어내는 것이 아니라, 허용 가능한 최종 상태와 실제 커밋된 백엔드 상태를 비교하여 오류를 포착하는 데 중점을 둡니다.
핵심 포인트
- IndicOrderBench는 음성 주문 에이전트의 정확성을 검증하는 오픈 소스 벤치마크입니다.
- 단순한 대화 스크립트 평가가 아닌, 커밋된 백엔드 상태를 비교하여 오류를 포착합니다.
- 재현 가능한 실행을 보장하며, 초기 벤치마크 목적으로 설계되었습니다.
다음은 레스토랑 음성 에이전트에 대한 Hinglish 통화 예시입니다:
caller: Do paneer wrap... actually ek hi karo. Bina pyaaz. Aur ek mango lassi.
agent: 2 Paneer Wrap add kar diya. Paneer Wrap 1 kar diya. Paneer Wrap No onion kar diya. 1 Mango Lassi add kar diya. Aur kuch?...
...
에이전트는 양파가 없는 랩(wrap) 하나를 읽어주었습니다. 이것이 에이전트가 '커밋(committed)'한 내용입니다:
| Field | Expected | Actual | Result |
|---|---|---|---|
| Submitted orders | 1 | 1 | Pass |
| ... |
스크립트를 기반으로 한 테스트, 또는 대화를 읽는 LLM(대규모 언어 모델) 심사관이 이 통화에서 성공합니다. 고객은 양파가 들어간 랩 두 개를 받게 됩니다.
제가 구축한 것
IndicOrderBench는 음성 주문 에이전트를 위한 오픈 소스 벤치마크이자 CI 게이트입니다. 이는 에이전트가 말한 단어를 평가하는 대신, 영어와 Hinglish에서 각 시나리오의 허용 가능한 최종 상태(acceptable end states)와 **커밋된 백엔드 상태(committed backend state)**를 비교합니다.

수정된 레퍼런스 에이전트의 단일 파일 HTML 보고서입니다. 동일한 시나리오에서 실패하는 실행 결과가 잘못된 주문을 포착합니다.
이것이 목표로 하는 심각한 오류(hard failures)는 억양이나 지연 시간이 아닙니다. 문장 중간의 수정(
에이전트를 Python에서 인-프로세스로 연결하거나 HTTP 어댑터를 통해 연결할 수 있습니다. 샌드박스 백엔드는 LLM에게 JSON 스키마 도구 정의를 제공합니다.
범위 (Scope)
의도적으로 작고 결정론적입니다: 재현 가능한 실행(reproducible runs)을 보장하며, 데모에는 API 키가 필요하지 않습니다. 이는 프로덕션 시스템의 리더보드가 아니라 초기 벤치마크입니다.
Repo (Apache-2.0): https://github.com/Lingikaushikreddy/indicorderbench
PyPI: https://pypi.org/project/indicorderbench/
만약 이 벤치마크가 다루지 못하는 방식으로 음성 에이전트의 실패 사례를 보셨다면, 스크립트를 첨부하여 이슈를 제기해 주세요. 시나리오 추가는 쉽습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기