Launch HN: Hamming (YC S24) – 음성 에이전트 (Voice Agents)를 위한 자동화된 테스트
요약
Hamming은 LLM 기반 음성 에이전트의 성능을 자동으로 테스트하고 평가하는 솔루션을 제공합니다. 수동 테스트의 번거로움을 해결하기 위해 다양한 사용자 페르소나와 시나리오를 생성하고, 에이전트 간의 직접 통화 또는 API 훅을 통해 대화 품질을 점수화합니다.
핵심 포인트
- LLM 음성 에이전트 개발 시 발생하는 반복적이고 수동적인 테스트 과정을 자동화함
- 다양한 사용자 페르소나와 현실적인 시나리오를 생성하여 테스트의 다양성 확보
- 배경 소음, 침묵, 중단 등 실제 환경의 변수를 포함한 에이전트 간 직접 통화 테스트 지원
- 결정론적 체크와 LLM 심판(LLM judges)을 결합하여 주문 정확도, 어조 등을 정밀하게 평가
안녕하세요 HN! Hamming(https://www.hamming.ai)의 Sumanyu와 Marius입니다. Hamming은 여러분의 LLM 음성 에이전트 (voice agent)를 자동으로 테스트할 수 있게 해줍니다. 저희의 인터랙티브 데모에서는 여러분이 음성 에이전트 역할을 맡고, 저희의 에이전트가 까다로운 최종 사용자 (end user) 역할을 수행합니다. 그런 다음 통화 시 여러분의 성과를 점수로 매깁니다. 여기서 체험해 보세요:
https://app.hamming.ai/voice-demo (가입 불필요). 실제 환경에서는 저희 에이전트가 여러분의 에이전트에게 직접 전화를 겁니다!
현재 LLM 음성 에이전트들은 많은 반복 작업 (iteration)과 튜닝 (tuning)을 필요로 합니다. 예를 들어, 저희 고객 중 한 곳은 패스트푸드 체인을 위한 LLM 드라이브스루 음성 에이전트를 구축하고 있습니다. 그들의 핵심 성과 지표 (KPI)는 주문 정확도입니다. 알레르기와 같은 식단 제한 사항이나, 주문 도중 주의가 산만해지거나 마음을 바꾸는 고객들을 시스템이 유연하게 처리하는 것이 매우 중요합니다. 이러한 맥락에서의 실수는 고객 불만, 잠재적인 건강 위험, 그리고 재정적 손실로 이어질 수 있습니다.
이런 시스템이 실제로 잘 작동하는지 어떻게 확인할 수 있을까요? 대부분의 팀은 버그를 찾기 위해 음성 에이전트에게 직접 전화를 걸어 몇 시간씩 시간을 보내고, 프롬프트 (prompt)나 함수 정의 (function definitions)를 수정한 뒤, 문제가 해결되었는지 그리고 회귀 (regressions)가 발생하지 않았는지 확인하기 위해 다시 음성 에이전트에게 전화를 겁니다. 이는 느리고, 임시방편적이며, 시간 낭비처럼 느껴집니다. 소프트웨어 개발의 다른 분야에서는 자동화된 테스트 (automated testing)가 이미 이러한 반복적인 단순 노동을 제거했습니다. 그런데 왜 여기서는 안 될까요?
저희는 처음에 몇 달 동안 사용자들이 프롬프트 및 LLM 파이프라인 (pipelines)을 위한 평가 (evals)를 생성하도록 돕는 작업을 하고 있었으나, 두 가지 사실을 발견했습니다:
-
많은 친구가 LLM 음성 에이전트를 구축하고 있었습니다.
-
그들은 수동 테스트 (manual testing)에 너무 많은 시간을 소비하고 있었습니다.
이는 미래에 더 많은 음성 관련 기업들이 등장할 것이며, 그들에게 반복 프로세스를 더 쉽게 만들어 줄 무언가가 필요할 것이라는 증거가 되었습니다. 그래서 저희는 이를 구축하기로 결정했습니다!
저희의 솔루션은 네 단계로 구성됩니다:
(1) 예상되는 대화 범위를 포괄하는 다양하면서도 현실적인 사용자 페르소나 (User Personas) 및 시나리오를 생성합니다. 저희는 각 고객을 위해 이를 직접 생성합니다. 높은 온도 (Temperature) 설정에서도 LLM (Large Language Models)이 다양한 시나리오를 생성하도록 만드는 것은 놀라울 정도로 까다로운 작업입니다. 저희는 https://www.reddit.com/r/LocalLLaMA/ 의 유저들로부터 더 많은 무작위성과 더 충실한 역할극 (Role-play)을 만들어내기 위한 많은 기술들을 배우고 있습니다.
(2) 배경 소음, 긴 침묵 또는 중단과 같은 상황을 처리하는 귀하의 에이전트 능력을 테스트할 때, 저희의 에이전트가 귀하의 에이전트를 호출하도록 합니다. 또는 API 훅 (API hook)을 통해 LLM / 로직 레이어 (Function calls 등)만을 테스트할 수도 있습니다.
(3) 결정론적 체크 (Deterministic checks)와 특정 문제 도메인에 맞춤화된 LLM 심판 (LLM judges) (예: 주문 정확도, 어조, 친절도)을 사용하여 각 대화의 출력값을 점수화합니다. LLM 심판은 좋거나 나쁜 대화 기록의 예시를 참조하여, 사전에 정의된 성공 기준에 따라 전체 대화 스크립트(함수 호출 및 트레이스 포함)를 검토합니다. 그런 다음 분류 결과와 결정의 근거가 되는 상세한 추론을 제공합니다. 인간의 선호도와 일관되게 일치하는 LLM 심판을 구축하는 것은 도전적인 과제이지만, 저희는 수동으로 개발하는 각 심판을 통해 개선해 나가고 있습니다.
(4) 위의 체크 및 심판을 재사용하여 프로덕션 트래픽 (Production traffic)의 점수를 매기고, 이를 통해 프로덕션에서의 품질 지표를 추적합니다. (즉, 온라인 평가 (Online evals))
저희 고객의 로그인 경험을 보여주는 Loom 녹화 영상을 제작했습니다. 시나리오를 저장하고 관리하는 방법, 실험 실행을 트리거하는 방법, 그리고 각 스크립트의 점수를 매기는 방법을 다룹니다. 영상은 여기에서 확인하세요: https://www.loom.com/share/839fe585aa1740c0baa4faa33d772d3e
저희는 Sumanyu가 데이터 사이언티스트 (Data Scientist)로서 성장 이니셔티브 (Growth Initiatives)를 이끌었던 Tesla와, Marius가 데이터 인프라 (Data Infrastructure) 팀을 총괄했던 Anduril에서의 경험에서 영감을 얻었습니다. 두 회사 모두에서 시뮬레이션 (Simulations)은 시스템을 배포하기 전 자율 시스템 (Autonomous Systems)을 테스트하는 데 핵심적인 역할을 했습니다. 하지만 공통적인 과제는 시뮬레이션이 실제 세계의 복잡성을 포착하는 데 부족한 경우가 많아, 그 결과가 항상 현실로 이어지지는 않는다는 점이었습니다. 음성 테스트 (Voice Testing) 분야에서 저희는 이 문제를 극복할 수 있을 것이라 낙관합니다. PlayHT 및 ElevenLabs와 같은 도구를 사용하면 매우 현실적인 음성 상호작용 (Voice Interactions)을 생성할 수 있으며, 인간과 유사한 추론 (Reasoning)을 보여주는 LLM (Large Language Models)을 통합함으로써, 저희의 시뮬레이션이 실제 사용자가 음성 에이전트 (Voice Agents)와 상호작용하는 방식을 밀접하게 복제할 수 있기를 희망합니다.
현재는 각 사용자를 수동으로 온보딩 (Onboarding)하고 활성화하고 있습니다. 향후 몇 주 내에 셀프 서비스 (Self-serve)가 가능하도록 열심히 작업 중입니다. 다만, https://app.hamming.ai/voice-demo 의 데모는 별도의 가입이 필요하지 않습니다!
현재 가격 정책은 사용량과 시트 (Seats) 수의 조합으로 구성되어 있습니다: https://hamming.ai/pricing. 저희는 고객 데이터를 학습 목적으로 사용하거나 다른 고객에게 이익을 주기 위해 사용하지 않으며, 어떠한 데이터도 판매하지 않습니다. 사용량 추적을 위해 PostHog를 사용합니다. 현재 HIPAA 준수 (Compliance)를 진행 중이며, 그다음 단계로 SOC 2를 준비하고 있습니다.
앞으로 저희는 시나리오 생성 (Scenario Generation)과 LLM 판사 (LLM Judge) 생성을 더욱 자동화하고 셀프 서비스화하는 데 집중하고 있습니다. 또한 실제 운영 환경의 대화 (Production Conversations)를 기반으로 페르소나 (Personas)를 생성하여, 필요할 때마다 사용자를 쉽게 '재생 (Replay)'할 수 있도록 만들고자 합니다.
테스트를 넘어선 자연스러운 다음 단계는 최적화 (Optimization)입니다. 저희는 테스트에서 실패한 시나리오를 사용하여, 해당 시나리오를 통과할 수 있도록 새로운 프롬프트 (Prompts) 세트나 함수 호출 (Function Call) 정의를 생성하는 음성 에이전트 최적화 도구 (DSPy와 같은)를 구축하는 것을 고려하고 있습니다. 저희는 이 과정에서 셀프 플레이 (Self-play)와 자기 개선 (Self-improvement)의 잠재력이 매우 흥미롭다고 생각합니다.
사용자로서든 혹은 개발자로서든, 음성 에이전트 (Voice Agents)를 사용하거나 구축하며 겪은 경험에 대해 듣고 싶습니다. 만약 여러분이 음성 또는 에이전트 (Agentic) 분야에서 개발 중이라면, 어떤 부분이 잘 작동하고 있으며 어떤 어려움에 직면하고 있는지 궁금합니다. 평가 (Evals) 및 시뮬레이션 파이프라인 (Simulation pipelines)을 구축하는 방법에 대한 여러분의 통찰력이나, 이 분야가 어디로 향하고 있는지에 대한 생각으로부터 많은 것을 배우고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 HN Claude Code Search의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기