다음은 레스토랑 음성 에이전트에 대한 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)**를 비교합니다.
IndicOrderBench HTML report for a passing run: order check, conversation and tool-call trace
수정된 레퍼런스 에이전트의 단일 파일 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/
만약 이 벤치마크가 다루지 못하는 방식으로 음성 에이전트의 실패 사례를 보셨다면, 스크립트를 첨부하여 이슈를 제기해 주세요. 시나리오 추가는 쉽습니다.