AAYMA
RU
Войти

Voice Router

Голосовой бот страховой компании: потоковое распознавание речи, LLM-маршрутизатор выбирает один или несколько из 40 сценариев, ведёт состояние…

Рабочий MVP
Команда «overfit» 20💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: overfit
Кейс HackAlem.ai: Коммуникации — Halyk Bank · кейс 2
Стадия: Рабочий MVP

Задача кейса: «Voice Router»: голосовой AI, маршрутизирующий звонки в контакт-центре страховой компании

Суть

Голосовой бот страховой компании: потоковое распознавание речи, LLM-маршрутизатор выбирает один или несколько из 40 сценариев, ведёт состояние диалога, уточняет неясное и передаёт оператору. Ответ озвучивается через браузерный TTS, а в Supervisor UI видна трассировка.

Как устроено

Микрофон передаёт PCM16 по WebSocket, Silero VAD определяет конец реплики, OpenAI gpt-live-transcribe транскрибирует поток. Финальная реплика идёт в POST /api/message, где Agent Core одним структурированным LLM-вызовом выбирает сценарии по description, not_this_if и priority, извлекает слоты и определяет продолжение или мульти-интент. Decision policy по confidence выбирает уточнение, выполнение или handoff. Состояние хранится in-memory (стек сценариев, ожидающие сценарии), ответ озвучивается Web Speech API. Есть evaluation runner на dev_utterances.

Ключевые решения

  • structured LLM routing
  • multi-intent decomposition
  • slot extraction
  • confidence/clarification policy
  • scenario stack
  • Silero VAD endpointing
  • streaming STT
  • router evaluation runner

Особенности

Сознательно отказались от encoder-классификатора: маршрутизирует только LLM с учётом границ not_this_if. Голосовой цикл непрерывный: после TTS снова включается прослушивание до статуса ended или handoff. В .agents/skills остались посторонние навыки (agri-rag-vision, supabase-data).

Стек

Python · FastAPI · Uvicorn · Pydantic · WebSocket · React · TypeScript · Vite

Модели

gpt-4.1-mini · OpenAI gpt-live-transcribe · OpenAI Agents SDK · Browser Web Speech API TTS


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-52fe5ec3-overfit.

README

README.md

Voice Router — Hybrid Voice AI Robot with LLM Scenario Routing

1. О проекте

Voice Router От голосового меню — к интеллектуальной маршрутизации.

Клиенту больше не нужно искать нужный пункт меню или ждать свободного оператора. Voice Router понимает, что именно хочет клиент, и сам выбирает нужный бизнес-сценарий.LLM выступает не только как conversational layer, а как интеллектуальный роутер между голосом клиента и бизнес-логикой Saqta Insurance.

Система поддерживает:

  • русский язык;
  • казахский язык;
  • смешанную RU/KZ речь;
  • single-intent и multi-intent запросы;
  • продолжение сценария между несколькими репликами;
  • смену темы и возврат к предыдущему сценарию;
  • clarification вместо угадывания при низкой уверенности;
  • перевод на оператора;
  • непрерывный голосовой диалог;
  • supervisor trace с выбранным сценарием, confidence, альтернативами и latency.

В проекте используется датасет HackAlem AI / Halyk Bank с 40 бизнес-сценариями и системными intents. Выбор сценария выполняется LLM; encoder-based intent classifier не используется.

Все бизнес-данные в data/starter_kit/ синтетические.


⚡ Quick Start

Для полной технической проверки нужны:

  • Python 3.11+;
  • Node.js 22.12+ и npm;
  • Chrome или Edge;
  • микрофон;
  • интернет;
  • OPENAI_API_KEY.

Используемая модель LLM Router:

OPENAI_ROUTER_MODEL=gpt_4.1-mini

Минимальный путь запуска

1. Клонировать репозиторий
2. Установить backend dependencies
3. Выполнить npm ci во frontend
4. Создать .env и frontend/.env
5. Запустить backend
6. Запустить frontend
7. Открыть URL, который выведет Vite
8. Разрешить доступ к микрофону
9. Нажать «Начать разговор»

Подробные инструкции:

Все команды ниже приведены для Windows PowerShell и отдельно для Linux/macOS там, где команды отличаются. Значения host/port в README — рекомендуемые примеры; при изменении адресов важно, чтобы frontend URL, FRONTEND_ORIGIN и VITE_API_BASE_URL были согласованы.


2. Основной пользовательский сценарий

Микрофон
   ↓
Streaming Voice Input
   ↓
STT + endpointing
   ↓
Final transcript
   ↓
Conversation Runtime
   ↓
POST /api/message
   ↓
Agent Core
   ↓
LLM Router + Dialogue State + Decision Policy
   ↓
Scenario / knowledge / mock backend
   ↓
response_text + routing + state + trace
   ↓
Browser TTS
   ↓
Голосовой ответ
   ↓
Listening resumes

Один session_id используется на протяжении всей беседы.

После голосового ответа система снова переходит в режим прослушивания. Разговор завершается только когда Agent Core возвращает:

  • conversation_status = ended; или
  • conversation_status = handoff.

Завершение отдельного бизнес-сценария само по себе не завершает беседу.


3. Архитектура

┌───────────────────────────────────────────────────────────────┐
│                         FRONTEND                              │
│                                                               │
│  Microphone / File                                            │
│        │                                                      │
│        ▼                                                      │
│  VoiceControls ──────────────────────────────────────┐        │
│        │                                              │        │
│        │ final transcript                             │        │
│        ▼                                              │        │
│  ConversationRuntime                                  │        │
│        │                                              │        │
│        ├──────────── POST /api/message ───────────────┼───┐    │
│        │                                              │   │    │
│        ├── Browser TTS ◄── response_text              │   │    │
│        │                                              │   │    │
│        └── Supervisor Trace ◄── routing/state/trace   │   │    │
│                                                               │
└───────────────────────────────────────────────────────────┼───┘
                                                            │
                                                            ▼
┌───────────────────────────────────────────────────────────────┐
│                         BACKEND                               │
│                                                               │
│  WS /api/v1/voice                                             │
│      │                                                        │
│      ├── Silero VAD / endpointing                             │
│      └── OpenAI gpt-live-transcribe                           │
│                                                               │
│  POST /api/message                                            │
│      │                                                        │
│      ▼                                                        │
│  Agent Core                                                   │
│      │                                                        │
│      ├── Scenario Catalog                                     │
│      ├── LLM Router                                           │
│      ├── Confidence / Clarification Policy                    │
│      ├── DialogueState                                        │
│      ├── Scenario Stack / Pending Scenarios                   │
│      ├── Slot extraction                                      │
│      ├── Basic response generation                            │
│      └── Trace + latency                                      │
│           │                                                   │
│           ├── scenarios.json                                  │
│           ├── slots.json                                      │
│           ├── actions.json                                    │
│           ├── knowledge_base.json                             │
│           └── mock_backend.json                               │
│                                                               │
└───────────────────────────────────────────────────────────────┘

Разделение ответственности

Voice Input / STT

  • захватывает микрофон;
  • передаёт PCM16 audio по WebSocket;
  • использует Silero VAD для определения конца реплики;
  • получает streaming transcription от OpenAI;
  • передаёт только финальную реплику в conversation runtime.

Agent Core

  • понимает смысл пользовательской реплики;
  • выбирает один или несколько сценариев;
  • использует description, not_this_if, priority и примеры из scenarios.json;
  • хранит состояние разговора;
  • поддерживает multi-intent;
  • поддерживает продолжение текущего сценария;
  • при неоднозначности задаёт clarification question вместо угадывания;
  • возвращает короткий ответ и supervisor trace.

Conversation Runtime

  • хранит один session_id на протяжении диалога;
  • связывает STT, Agent Core и TTS;
  • не допускает параллельной обработки реплик;
  • после окончания TTS снова включает listening;
  • останавливает автоматический loop при handoff или ended.

TTS

  • реализован через Browser Web Speech API;
  • поддерживает ru-RU;
  • пытается использовать kk-KZ, если такой voice доступен в браузере/ОС;
  • измеряет время до начала аудио.

Supervisor UI

  • отображает transcript;
  • выбранные сценарии;
  • confidence;
  • alternatives;
  • short routing reason;
  • slots;
  • active/pending scenarios;
  • conversation status;
  • latency.

4. Agent Core

Основной HTTP endpoint:

POST /api/message
Content-Type: application/json

Request:

{
  "session_id": "uuid",
  "text": "Хочу продлить полис и добавить сына"
}

Response:

{
  "response_text": "Ответ ассистента",
  "conversation_status": "awaiting_user",
  "routing": {},
  "state": {},
  "trace": {}
}

Допустимые conversation_status:

active
awaiting_user
awaiting_confirmation
handoff
ended

Routing

Router использует один структурированный LLM-вызов и поддерживает:

  • RU;
  • KZ;
  • mixed;
  • single-intent;
  • multi-intent;
  • SYS_UNCLEAR;
  • SYS_OUT_OF_SCOPE;
  • SYS_GOODBYE;
  • semantic decomposition;
  • slot extraction;
  • continuation detection;
  • alternatives и confidence.

Пример:

"Хочу продлить ОГПО и добавить туда сына"

может быть маршрутизирован как:

SC27 — Policy renewal
SC04 — Add driver

Dialogue State

Agent Core хранит состояние сессии между репликами, в том числе:

session_id
turn_number
language
client_id
active_scenario
scenario_stack
pending_scenarios
slots
unclear_count
conversation_status
history

Для MVP состояние хранится in-memory.

Clarification

При неоднозначном запросе бот не обязан угадывать сценарий.

Пример:

Вы хотите узнать статус страхового случая
или не согласны с уже принятым решением?

Следующая реплика клиента обрабатывается в той же сессии.


5. Starter Kit

Бизнес-данные находятся в:

data/starter_kit/

Ключевые файлы:

ФайлНазначение
scenarios.json40 бизнес-сценариев + системные intents
slots.jsonтипы и правила слотов
actions.jsonконтракты mock backend actions
knowledge_base.jsonпродукты, правила, тарифы, офисы, клиники и справочная информация
mock_backend.jsonтестовые клиенты, полисы, claims и payments
dialogs_sample.json10 размеченных многоходовых диалогов
dev_utterances.json104 размеченных запроса для проверки routing
evaluate.pyофициальный evaluator

Исходные starter-kit файлы не должны изменяться для улучшения метрик.


6. Технологии

ОбластьТехнологии
BackendPython, FastAPI, Uvicorn, Pydantic
Agent CoreOpenAI Agents SDK / structured LLM output, Router model: gpt_4.1-mini
STTOpenAI gpt-live-transcribe
Voice endpointingSilero VAD, ONNX Runtime, faster-whisper
Audio processingWeb Audio API, AudioWorklet, PyAV, NumPy
FrontendReact, TypeScript, Vite
TTSBrowser Web Speech API
DataJSON starter kit
Testingpytest, Ruff, TypeScript, Vite build
Agent evaluationdev_utterances.json + evaluate.py

Для MVP не требуются:

  • PostgreSQL;
  • Supabase;
  • Redis;
  • Docker;
  • GPU;
  • vector database;
  • отдельный intent classifier.

7. Системные требования

Рекомендуемая среда:

  • Windows 10/11;
  • PowerShell;
  • Python 3.11+;
  • Node.js 22.12+;
  • npm;
  • Git;
  • Google Chrome или Microsoft Edge;
  • микрофон;
  • интернет;
  • OpenAI API key с доступом к используемым моделям.

Разработка voice-модуля проверялась также на Python 3.13 и Node.js 24.13.


8. Получение проекта

git clone https://github.com/BAITC-Hacks/hack-52fe5ec3-overfit.git
cd hack-52fe5ec3-overfit
git checkout main
git pull origin main

Все следующие команды выполняются из корня репозитория, если не указано иное.


9. Установка Backend

Windows PowerShell

Проверить Python:

python --version

Создать virtual environment:

python -m venv .venv

Установить backend со всеми зависимостями, нужными для voice-модуля и тестов:

./.venv/Scripts/python.exe -m pip install -c backend/requirements.lock -e './backend[dev,voice]'

Linux / macOS

python3 --version
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -c backend/requirements.lock -e './backend[dev,voice]'

10. Установка Frontend

Команды одинаковы для Windows, Linux и macOS:

cd frontend
npm ci
node --version
npm --version
cd ..

Для воспроизводимой установки используется npm ci, а не npm install.


11. Параметры окружения

Backend

Создать корневой .env.

Windows PowerShell

if (-not (Test-Path .env)) { Copy-Item .env.example .env }
notepad .env

Linux / macOS

cp .env.example .env

Минимальная конфигурация:

OPENAI_API_KEY=YOUR_OPENAI_API_KEY
OPENAI_ROUTER_MODEL=gpt_4.1-mini
FRONTEND_ORIGIN=http://127.0.0.1:5173

FRONTEND_ORIGIN должен совпадать с origin, на котором фактически открыт frontend. Если Vite запустился на другом host/port, обновите это значение и перезапустите backend.

Опционально:

STARTER_KIT_PATH=data/starter_kit
BACKEND_HOST=127.0.0.1
BACKEND_PORT=8000
ПеременнаяНазначение
OPENAI_API_KEYключ OpenAI API; используется только backend
OPENAI_ROUTER_MODELмодель для LLM Router
FRONTEND_ORIGINразрешённый frontend Origin
STARTER_KIT_PATHпуть к starter kit; по умолчанию data/starter_kit
BACKEND_HOSThost backend
BACKEND_PORTport backend

Никогда не размещайте реальный API key в Git, README или frontend env.

Frontend

Создать:

frontend/.env

Для полной интеграции:

VITE_USE_MOCK_AGENT=false
VITE_API_BASE_URL=http://127.0.0.1:8000

Если backend запущен на другом адресе, укажите его фактический URL в VITE_API_BASE_URL.

VITE_USE_MOCK_AGENT=true используется только для автономной разработки frontend и не является режимом основной технической проверки.


12. Запуск

Нужны два терминала.

Терминал 1 — Backend

Из корня репозитория.

Windows PowerShell

./.venv/Scripts/python.exe -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --ws-max-size 8192 --ws-max-queue 16

Linux / macOS

.venv/bin/python -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --ws-max-size 8192 --ws-max-queue 16

Дождитесь:

Application startup complete

Проверка:

http://127.0.0.1:8000/health

FastAPI docs:

http://127.0.0.1:8000/docs

Терминал 2 — Frontend

cd frontend
npm run dev

Vite выведет фактический локальный URL приложения в терминале. Откройте именно этот URL в Chrome или Edge.

Типичный адрес:

http://127.0.0.1:5173

или:

http://localhost:5173

Если origin отличается от значения FRONTEND_ORIGIN, обновите .env и перезапустите backend.

Оба терминала должны оставаться запущенными.

Для остановки:

Ctrl+C

13. Проверка основного сценария экспертами

Перед началом проверьте:

  • backend запущен без ошибок;
  • /health доступен;
  • frontend открыт по URL, который вывел Vite;
  • VITE_USE_MOCK_AGENT=false;
  • OPENAI_API_KEY задан;
  • OPENAI_ROUTER_MODEL=gpt_4.1-mini;
  • браузеру разрешён доступ к микрофону;
  • интернет-соединение доступно.
  1. Запустить backend.

  2. Запустить frontend.

  3. Открыть URL frontend, который вывел Vite (например http://127.0.0.1:5173 или http://localhost:5173).

  4. Разрешить браузеру доступ к микрофону.

  5. Нажать «Начать разговор».

  6. Сказать:

«Я оплатил страховку, но полис не появился».

  1. После завершения реплики замолчать.

Ожидаемый pipeline:

microphone
→ streaming STT
→ final transcript
→ Agent Core
→ routing
→ response_text
→ Browser TTS
→ listening resumes

Ожидаемое поведение:

  • на экране появляется финальная транскрипция;
  • Agent Core выбирает соответствующий страховой сценарий;
  • появляется текстовый ответ;
  • ответ озвучивается;
  • Supervisor Trace отображает routing/state/latency;
  • после завершения озвучивания приложение снова готово слушать пользователя;
  • session_id сохраняется.
  1. Сказать вторую реплику в той же беседе, например:

«И ещё проверьте, до какого числа действует мой полис».

  1. Убедиться, что это не новая сессия и история предыдущей реплики сохранена.

  2. Для завершения разговора сказать:

«Спасибо, до свидания».

После conversation_status = ended автоматическое listening должно остановиться.


14. Дополнительные сценарии проверки

Казахский

Сказать:

«Маған саяхат сақтандыруы керек».

Mixed RU/KZ

Сказать:

«Маған полис керек, сколько это стоит?»

Multi-intent

Через голос или text fallback:

«Хочу продлить ОГПО и добавить туда сына».

Clarification

Использовать неоднозначный запрос:

«У меня проблема с полисом».

Ожидается уточняющий вопрос вместо случайного выбора сценария.

Out of scope

Сказать:

«Какая завтра погода в Алматы?»

Запрос не должен принудительно маршрутизироваться в SC01–SC40.

Text fallback

Если микрофон или STT временно недоступны, основной Agent Core можно проверить через текстовое поле.

Text fallback проходит через тот же runtime pipeline:

ConversationRuntime
→ Agent Core
→ Trace
→ TTS

Это резервный канал для диагностики и demo, а не отдельная mock-логика.


15. Supervisor Trace

После реплики интерфейс может показывать:

Transcript
Language
Selected scenario
Confidence
Alternative
Reason
Active scenario
Slots
Conversation status

Latency
STT
Router
Policy
Tools
Response
TTS first audio
Total

Frontend не рассчитывает confidence и не выбирает scenario самостоятельно.


16. API и WebSocket контракты

Agent API

POST /api/message

Request:

{
  "session_id": "uuid",
  "text": "текст клиента"
}

Response:

{
  "response_text": "ответ",
  "conversation_status": "awaiting_user",
  "routing": {},
  "state": {},
  "trace": {}
}

Voice

WS /api/v1/voice

Начальное сообщение:

{
  "type": "start",
  "session_id": "<UUID>",
  "sample_rate": 24000,
  "channels": 1,
  "pause_ms": 2500
}

После ready frontend отправляет PCM16 little-endian mono 24 kHz.

Основные server events:

ready
activity
transcript.partial
committed
utterance.final
empty
error

В Agent Core передаётся только финальная реплика.


17. Тестирование перед сдачей

Backend

./.venv/Scripts/python.exe -m pytest backend/tests -q
./.venv/Scripts/python.exe -m ruff check backend/app backend/tests
./.venv/Scripts/python.exe -m ruff format --check backend/app backend/tests

Frontend

cd frontend
npm run typecheck
npm run build
npm run test:runtime
npm run test:tts
npm run test:trace
npm run test:integration
cd ..

Если в package.json присутствует отдельный test-script для Voice Runtime Bridge, его также следует выполнить перед сдачей.

Все команды должны завершиться без ошибок перед технической сдачей.


18. Проверка Router

При наличии рабочего OPENAI_API_KEY и OPENAI_ROUTER_MODEL Router можно проверить на предоставленном dev-наборе.

python data/starter_kit/evaluate.py predictions.json data/starter_kit/dev_utterances.json

Evaluator рассчитывает:

  • primary accuracy;
  • full match;
  • multi-intent recall;
  • разбивку по языку;
  • разбивку по типу запроса.

dev_utterances.json не должен изменяться для улучшения результата.


19. Ограничения MVP

  • состояние Agent Core хранится in-memory;
  • после перезапуска backend активные сессии не сохраняются;
  • Browser TTS зависит от voices, установленных в ОС/браузере;
  • при отсутствии kk-KZ используется fallback voice;
  • STT требует работающего OpenAI API и интернет;
  • Silero VAD определяет акустическую паузу, а не смысловую завершённость мысли;
  • система предназначена для синтетического hackathon dataset;
  • реальные персональные данные использовать не следует;
  • основной MVP запускается одним backend-процессом.

20. Безопасность

  • .env не должен попадать в Git;
  • OpenAI key используется только backend;
  • секреты нельзя размещать в VITE_* переменных;
  • реальные персональные данные не используются;
  • supervisor trace показывает application-level explanation, а не hidden chain-of-thought;
  • необратимые бизнес-действия должны выполняться только после явного подтверждения пользователя.

21. Troubleshooting

ПроблемаЧто проверить
Backend не запускаетсяPython version, venv, backend[dev,voice], запуск из корня
Frontend не запускаетсяNode/npm versions, npm ci
Backend unavailableпорт 8000, /health, VITE_API_BASE_URL
Ошибка OpenAIOPENAI_API_KEY, API balance/access, интернет
Router не работаетOPENAI_ROUTER_MODEL и доступ к модели
Микрофон не доступенразрешение браузера, Chrome/Edge, localhost/127.0.0.1
WebSocket rejectedFRONTEND_ORIGIN, frontend URL и backend port
Казахский TTS звучит некорректноналичие kk-KZ voice в ОС/браузере
Текст работает, voice нетпроверить /api/v1/voice, микрофон, VAD/STT
Voice работает, Agent не отвечаетпроверить POST /api/message через /docs
Порт занятостановить предыдущие процессы через Ctrl+C

22. Быстрая техническая проверка

Windows PowerShell

git clone https://github.com/BAITC-Hacks/hack-52fe5ec3-overfit.git
cd hack-52fe5ec3-overfit

python -m venv .venv
./.venv/Scripts/python.exe -m pip install -c backend/requirements.lock -e './backend[dev,voice]'

cd frontend
npm ci
cd ..

Copy-Item .env.example .env
notepad .env

Linux / macOS

git clone https://github.com/BAITC-Hacks/hack-52fe5ec3-overfit.git
cd hack-52fe5ec3-overfit

python3 -m venv .venv
source .venv/bin/activate
python -m pip install -c backend/requirements.lock -e './backend[dev,voice]'

cd frontend
npm ci
cd ..

cp .env.example .env

Указать:

OPENAI_API_KEY=...
OPENAI_ROUTER_MODEL=gpt_4.1-mini
FRONTEND_ORIGIN=http://127.0.0.1:5173

Создать frontend/.env:

VITE_USE_MOCK_AGENT=false
VITE_API_BASE_URL=http://127.0.0.1:8000

Запустить backend:

./.venv/Scripts/python.exe -m uvicorn app.main:app --host 127.0.0.1 --port 8000 --ws-max-size 8192 --ws-max-queue 16

В другом терминале:

cd frontend
npm run dev

Открыть URL, который выведет Vite. Если origin отличается от FRONTEND_ORIGIN, обновить переменную и перезапустить backend.

После этого выполнить основной голосовой сценарий из раздела «Проверка основного сценария экспертами».


Финальный smoke-check перед сдачей

Рекомендуется выполнить проверку из чистого clone, а не из рабочей папки разработчика:

clone
→ install backend
→ npm ci
→ configure env
→ /health
→ frontend
→ microphone
→ turn 1
→ TTS
→ turn 2 в той же session
→ goodbye / ended
→ tests

Если для запуска требуется действие, которого нет в README, его необходимо добавить в инструкцию до сдачи.


23. Дополнительная документация

Детальная документация отдельных модулей:

README_VOICE.md
README_CONVERSATION_RUNTIME.md
docs/

Главным документом для установки и технической проверки итоговой системы является этот корневой README.md.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
17
Авторы
5
Файлы
147
Ветки
6

Авторы коммитов

ZxZxZ154 7vesta-12 6nastoikazhenshen 2vesta-12 1ZxZxZ143 1

История коммитов

  • 2026-09-23 17:57final README.mdnastoikazhenshen
  • 2026-09-23 17:57docs: record final MVP validation and router resultsZxZxZ154
  • 2026-09-23 17:49Final README.mdvesta-12
  • 2026-09-23 17:47feat: integrate voice runtime and agent core MVPZxZxZ154
  • 2026-09-23 17:47feat: complete voice router MVPZxZxZ154
  • 2026-09-23 17:10feat: connect streaming voice input to conversation runtimevesta-12
  • 2026-09-23 17:06fix: harden router output and publish evaluation findingsZxZxZ154
  • 2026-09-23 16:59merge: integrate voice input into runtime test branchvesta-12
Все коммиты (17)
  • 2026-09-23 16:53test: harden runtime integration boundariesvesta-12
  • 2026-09-23 16:48Add streaming voice test bench with automatic endpointingДарья
  • 2026-09-23 16:44feat: add supervisor trace and conversation UXvesta-12
  • 2026-09-23 16:35feat: implement agent core routing, dialogue state and dev evaluation standZxZxZ154
  • 2026-09-23 16:24feat: add browser TTS playbackvesta-12
  • 2026-09-23 16:01feat: add conversation runtime integration foundationvesta-12
  • 2026-09-23 15:06Merge pull request #1 from BAITC-Hacks/foundation/voice-router-architectureZxZxZ143
  • 2026-09-23 15:05chore: scaffold voice router architectureZxZxZ154
  • 2026-09-23 14:14chore: add Voice Router project guidanceZxZxZ154
Структура репозитория (147 файлов)
.agents/skills/agent-debugging/SKILL.md
.agents/skills/agent-evals/SKILL.md
.agents/skills/agents-sdk/SKILL.md
.agents/skills/agri-rag-vision/SKILL.md
.agents/skills/demo-readiness/SKILL.md
.agents/skills/security-review/SKILL.md
.agents/skills/supabase-data/SKILL.md
.env.example
.gitignore
AGENTS.md
README.md
backend/app/__init__.py
backend/app/agent/__init__.py
backend/app/agent/errors.py
backend/app/agent/prompts.py
backend/app/agent/router.py
backend/app/agent/schemas.py
backend/app/api/__init__.py
backend/app/api/routes/__init__.py
backend/app/api/routes/dev.py
backend/app/api/routes/health.py
backend/app/api/routes/message.py
backend/app/api/routes/turns.py
backend/app/api/websocket/__init__.py
backend/app/api/websocket/voice.py
backend/app/core/__init__.py
backend/app/core/config.py
backend/app/core/contracts.py
backend/app/core/logging.py
backend/app/core/services.py
backend/app/data/__init__.py
backend/app/data/loaders.py
backend/app/data/models.py
backend/app/data/repositories.py
backend/app/dev_stand/index.html
backend/app/dialog/__init__.py
backend/app/dialog/message.py
backend/app/dialog/models.py
backend/app/dialog/state.py
backend/app/dialog/store.py
backend/app/evaluation/__init__.py
backend/app/evaluation/__main__.py
backend/app/evaluation/runner.py
backend/app/main.py
backend/app/response/__init__.py
backend/app/response/generator.py
backend/app/response/routing.py
backend/app/scenarios/__init__.py
backend/app/scenarios/catalog.py
backend/app/scenarios/decision_policy.py
backend/app/scenarios/engine.py
backend/app/speech/__init__.py
backend/app/speech/errors.py
backend/app/speech/stt/__init__.py
backend/app/speech/stt/base.py
backend/app/speech/stt/endpointing.py
backend/app/speech/stt/openai_provider.py
backend/app/speech/tts/__init__.py
backend/app/speech/tts/base.py
backend/app/speech/tts/openai_provider.py
backend/app/tools/__init__.py
backend/app/tools/actions.py
backend/app/tools/errors.py
backend/app/tools/read_only.py
backend/app/tools/registry.py
backend/app/tracing/__init__.py
backend/app/tracing/collector.py
backend/app/tracing/models.py
backend/app/triage/__init__.py
backend/app/triage/models.py
backend/app/triage/service.py
backend/pyproject.toml
backend/requirements.lock
backend/tests/integration/test_api.py
backend/tests/integration/test_dev_stand.py
backend/tests/integration/test_message.py
backend/tests/integration/test_message_v2.py
backend/tests/integration/test_reply_language.py
backend/tests/integration/test_voice_stream.py
backend/tests/unit/test_core_policy_mvp.py
backend/tests/unit/test_data.py
backend/tests/unit/test_dialog_store.py
backend/tests/unit/test_endpointing.py
backend/tests/unit/test_evaluation_capture.py
backend/tests/unit/test_evaluation_v1.py
backend/tests/unit/test_foundation.py
backend/tests/unit/test_read_only_replies.py
backend/tests/unit/test_router_v1.py
backend/tests/unit/test_routing_replies.py
backend/tests/unit/test_speech.py
backend/tests/unit/test_tools.py
data/starter_kit/README.kz.md
data/starter_kit/README.md
data/starter_kit/README.ru.md
data/starter_kit/actions.json
data/starter_kit/dev_utterances.json
data/starter_kit/dialogs_sample.json
data/starter_kit/evaluate.py
data/starter_kit/knowledge_base.json
data/starter_kit/mock_backend.json
data/starter_kit/scenarios.json
data/starter_kit/slots.json
docs/AGENT_CORE_3H_PLAN.md
docs/ARCHITECTURE.md
docs/INTEGRATION.md
docs/MVP_VALIDATION.md
docs/PROJECT_MAP.md
docs/ROUTER_EVALUATION.md
docs/VOICE_STREAMING_CONTRACT.md
docs/VOICE_TESTS.md
frontend/.env.example
frontend/index.html
frontend/package-lock.json
frontend/package.json
frontend/public/pcm-worklet.js
frontend/src/App.tsx
frontend/src/api/client.ts
frontend/src/components/conversation/ConversationPanel.tsx
frontend/src/components/trace/TracePanel.tsx
frontend/src/components/trace/traceViewModel.ts
frontend/src/components/voice/TtsDebugPanel.tsx
frontend/src/components/voice/VoiceControls.tsx
frontend/src/components/voice/voiceRuntimeBridge.ts
frontend/src/hooks/useHealth.ts
frontend/src/main.tsx
frontend/src/runtime/ConversationRuntime.ts
frontend/src/services/agentClient.ts
frontend/src/services/tts.ts
frontend/src/services/tts/BrowserTtsService.ts
frontend/src/styles.css
frontend/src/types/agent.ts
frontend/src/types/contracts.ts
frontend/tests/integration.test.mjs
frontend/tests/runtime.test.mjs
frontend/tests/trace.test.mjs
frontend/tests/tts.test.mjs
frontend/tests/voiceBridge.test.mjs
frontend/tsconfig.json
frontend/vite.config.ts
scripts/compare_router_evals.py
scripts/requirements-cloud-voice.txt
scripts/requirements-voice.txt
scripts/smoke_agent_core.py
scripts/smoke_teammate_runtime.mjs
scripts/test_openai_stream.py
scripts/test_voice_backend.py
scripts/transcribe_audio.py
Ветки (6)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.