AAYMA
RU
Войти

Sөile (Saqta Voice Router)

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

Доведённый продукт
Команда «Anhalt Volta» 51💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: Anhalt Volta
Кейс HackAlem.ai: Коммуникации — Halyk Bank · кейс 2
Стадия: Доведённый продукт

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

Суть

Голосовой робот контакт-центра страховой компании: для русской, казахской и смешанной речи выбирает один из 40 сценариев, выполняет mock-действия и озвучивает ответ. У супервизора есть панель с объяснением решения и таймингами.

Как устроено

Реплика (текст или аудио через STT) попадает в гибридный роутер. Если правило уверено на 0,8 и выше, срабатывает быстрый путь. Иначе вызывается OpenAI Responses API со structured output по JSON Schema: сценарий, confidence, объяснение, альтернативы, действие, отложенные темы. При ошибке или таймауте LLM работает fallback на правилах. Executor выполняет действия по mock_backend и knowledge_base, спрашивает недостающие параметры и ждёт подтверждения необратимых операций. Ответ озвучивается через TTS, интерфейс на Streamlit.

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

  • гибридный fast path + LLM + rules fallback
  • structured output JSON Schema
  • not_this_if границы сценариев
  • pending topics
  • приоритет срочных сценариев
  • trace сессии

Метрики

Primary accuracy 97,1% на 104 репликах (gpt-4.1-mini); fast path 19 реплик 100%, 0,8 мс; LLM-путь 84 реплики 96,4%, llm_ms 1614,7 мс (P95 2412,7); история 93,3→95,2→94,2→97,1%

Особенности

Гибрид: быстрый путь на правилах с задержкой меньше 1 мс закрывает часть трафика без LLM. Есть живая оценка на eval-наборе с историей улучшений и сравнением моделей. Отложенные темы работают: например, «авария + смена адреса» маршрутизируется на срочный сценарий, а адрес откладывается. Дополнительно есть модуль аватара с lip-sync.

Стек

Python · FastAPI · Uvicorn · Streamlit · OpenAI Responses API · pytest

Модели

gpt-4.1-mini · GPT-5 (reasoning minimal) · gpt-4o-mini-transcribe · whisper-1 · gpt-4o-mini-tts · tts-1


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

README

README.md

README.md

Sөile — голосовой роутер для Saqta Insurance

Проект для хакатона HackAlem AI, трек Halyk Bank, кейс 2 «Voice Router».

Быстрый старт

Запускайте команды из корня репозитория C:\hack-be2276aa-anhalt-volta-main.

Windows PowerShell

cd C:\hack-be2276aa-anhalt-volta-main
Copy-Item .env.example .env
notepad .env

В .env укажите ключ:

OPENAI_API_KEY=sk-ваш_ключ

Сохраните файл и запустите оба сервиса одной командой:

python run.py

После запуска откройте http://127.0.0.1:8501. Документация API доступна по адресу http://127.0.0.1:8000/docs.

Команда run.py автоматически создаёт .venv, устанавливает зависимости, запускает FastAPI и Streamlit. Для остановки нажмите Ctrl+C.

Если команда python не найдена, установите Python 3.10 или новее с включённой опцией Add Python to PATH, откройте новый PowerShell и повторите запуск. Команда run.cmd является короткой оболочкой для py -3 run.py; используйте её только если команда py доступна в системе.

macOS / Linux

cd /путь/к/hack-be2276aa-anhalt-volta-main
cp .env.example .env
nano .env
python3 run.py

В .env добавьте OPENAI_API_KEY, сохраните файл и откройте http://127.0.0.1:8501.

При первом запуске, если .env ещё не существует, run.py создаст его из .env.example и завершится. Впишите ключ и запустите команду ещё раз.

Проверка работы LLM

В интерфейсе выберите режим OpenAI · backend и отправьте, например:

Хочу оформить КАСКО на автомобиль

В панели супервизора должны появиться сценарий SC03, объяснение решения, время LLM и трассировка. Для приветствия «Здравствуйте» результат SYS_UNCLEAR является ожидаемым: в реплике ещё нет страховой задачи.

Для локальной проверки без API выберите Локальный роутер · fallback.

Если OpenAI не отвечает

Проверьте, что ключ находится в корневом .env, а не только в папке Soile-Voice-Router:

Get-Content .env

Не публикуйте значение ключа в GitHub. Файл .env уже добавлен в .gitignore. Перезапустите python run.py после изменения ключа. При недоступном API интерфейс покажет резервный локальный роутер.

Оглавление

За минуту

Saqta Voice Router — голосовой робот контакт-центра вымышленной страховой компании Saqta Insurance. Для русской, казахской и смешанной речи он выбирает один из 40 страховых сценариев по смыслу, истории и границам соседних сценариев, а не по отдельному intent-классификатору. LLM возвращает структурированный результат: сценарий, confidence, объяснение, альтернативы, действие и отложенные темы. Супервизор видит путь решения, тайминги и причину выбора.

Последний сохранённый live-прогон на 104 репликах: 23 сентября 2026, модель gpt-4.1-mini, primary accuracy 97.1%. В нём 19 реплик прошли fast path с точностью 100.0% и средним временем 0.8 мс (P95 0.9 мс), 84 — через LLM с точностью 96.4% и средним llm_ms 1614.7 мс (P95 2412.7 мс), ещё 1 — через fallback после недоступности LLM.

История улучшений: 93.3% → 95.2% → 94.2% → 97.1%.

Технологии

КомпонентТехнологияЗачем
СерверPython, FastAPI, UvicornHTTP API сессии, turns, trace, STT и TTS
LLM-роутерOpenAI Responses API, structured output, JSON SchemaВыбор сценария по смыслу, истории и границам not_this_if
GPT-5reasoning с минимальным уровнемПоддержка GPT-5 через OPENAI_MODEL; значение задаётся в .env
ГолосOpenAI gpt-4o-mini-transcribe/whisper-1, gpt-4o-mini-tts/tts-1STT и TTS с fallback-моделями
ИнтерфейсStreamlitЧат, микрофон, озвучка и панель супервизора
Правилаrouter/router.pyСуществующий baseline-роутер, fast path и fallback участника 1
Данные китаJSON-файлы в voice_router_dataset/Сценарии, знания, действия, mock-клиенты и eval-набор

Запуск

Требования

  • Python 3.10+;
  • ключ OpenAI в корневом .env;
  • uv необязателен: при его наличии он используется для окружения и установки пакетов;
  • сеть для установки зависимостей и обращения к OpenAI.

macOS / Linux

Команды выполняются из корня репозитория:

cp .env.example .env

Откройте .env и впишите OPENAI_API_KEY. Затем:

python3 run.py

или:

bash run.sh

run.py сам создаёт .venv, устанавливает requirements.txt, проверяет порты и запускает оба процесса:

Windows

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

copy .env.example .env

Впишите OPENAI_API_KEY в .env, затем запустите:

py -3 run.py

или:

run.cmd

Адреса те же: http://127.0.0.1:8501 и http://127.0.0.1:8000/docs.

Если порт занят, задайте другие значения.

PORT=8001 STREAMLIT_PORT=8502 python3 run.py
set PORT=8001
set STREAMLIT_PORT=8502
py -3 run.py

run.py проверяет порты средствами Python и останавливает backend и Streamlit по Ctrl+C. Streamlit запускается с --server.headless true --browser.gatherUsageStats false, поэтому email при первом запуске не запрашивается.

Микрофон браузера работает на localhost/127.0.0.1 или по HTTPS. Если ключа нет или он недействителен, интерфейс покажет ошибку; текстовый ввод и локальный режим-резерв останутся доступны.

Проверка за три минуты

В интерфейсе по умолчанию выбран режим OpenAI · backend. Клиент может написать текст, нажать микрофон и выбрать «Распознать запись». Ответ озвучивается через TTS. В правой панели супервизор видит сценарий, confidence, объяснение, альтернативы, путь решения, действие, pending topics и тайминги.

Проверьте по одной реплике за раз:

РепликаОжидаемый результат
«Сколько стоит ОГПО на машину?»SC01, цена ОГПО
«Сәлеметсіз бе, мекенжайымды өзгерткім келеді»SC29, изменение контактных данных
«Сәлеметсіз бе, мне нужно поменять адрес в полисе»SC29, изменение контактных данных
«Попал в аварию и ещё адрес поменять надо»основным становится срочный SC11, адрес остаётся отложенной темой
«Алло, я по поводу страховки»SYS_UNCLEAR, уточняющий вопрос
«Какая погода завтра?»SYS_OUT_OF_SCOPE, вне тематики страхования
«Соедините с оператором»передача оператору, action=handoff

Многошаговая проверка:

python3 scripts/demo_dialog.py

В Windows:

py -3 scripts/demo_dialog.py

Скрипт берёт тестовый телефон из voice_router_dataset/mock_backend.json, создаёт сессию и печатает по одной строке на реплику:

router_mode | scenario_id | confidence | action | answer_text | llm_ms

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

Для самостоятельной оценки 104 реплик:

./.venv/bin/python scripts/eval_router.py --workers 8
.venv\Scripts\python.exe scripts\eval_router.py --workers 8

Для сравнения модели без изменения .env:

./.venv/bin/python scripts/eval_router.py --model gpt-5-mini --workers 8

Новый live-результат дописывается в docs/eval_results.md.

Как устроен проект

flowchart LR
    B["Браузер / Streamlit"] -->|текст| T["POST /turn"]
    B -->|audio| V["POST /voice_turn"]
    V --> S["STT OpenAI"]
    S --> R["Гибридный роутер"]
    T --> R
    R --> F{"fast_path_eligible и уверенность правил ≥ 0.8?"}
    F -->|да| FP["Быстрый путь rules"]
    F -->|нет| L["LLM Responses API"]
    L -->|ошибка или timeout| FB["Rules fallback"]
    FP --> E["Executor"]
    L --> E
    FB --> E
    E --> D["mock_backend + knowledge_base + actions"]
    D --> A["answer_text"]
    A --> Q["POST /tts"]
    Q --> B
    T -.-> X["session trace"]
    V -.-> X
    X --> P["GET /session/{id}/trace"]

Компоненты

  • backend/app.py хранит сессии в памяти, принимает текстовые turns, передаёт историю и current_scenario роутеру, вызывает executor и записывает trace.
  • backend/llm_router.py строит каталог сценариев из scenarios.json, вызывает OpenAI Responses API по JSON Schema, поддерживает GPT-5 reasoning, фильтрует pending topics и делает rules fallback при ошибке/таймауте.
  • backend/router_client.py нормализует параметры и безопасно превращает исключение роутера в handoff.
  • backend/executor.py выполняет mock-действия по сценарию, использует knowledge_base.json, mock_backend.json и actions.json, задаёт вопросы для недостающих параметров и ждёт подтверждение необратимых операций.
  • backend/speech.py содержит /stt, /tts и /voice_turn. STT использует gpt-4o-mini-transcribe с fallback на whisper-1; TTS — gpt-4o-mini-tts с fallback на tts-1. В TTS передаётся уже сформированный ответ на языке клиента; основная TTS-модель получает инструкцию говорить на языке входного текста, а fallback tts-1 использует сам текст без отдельной language-параметризации.
  • Soile-Voice-Router/app.py — текущий Streamlit-интерфейс. Он читает корневой .env, отправляет текст/аудио в backend, показывает панель супервизора и озвучивает ответ.
  • router/router.py — зона участника 1: детерминированный baseline с тем же контрактом route_dialogue(utterance, history, current_scenario).
  • run.py — единый кроссплатформенный запускатель.

Soile-Avatar/ присутствует в репозитории как отдельная версия интерфейса с аватаром, но текущий единый run.py запускает Soile-Voice-Router/app.py.

Почему это не intent-классификатор

Основное решение принимает LLM по каталогу сценариев, их описаниям, границам not_this_if, истории и текущему сценарию. Правила используются для явно разрешённого fast path (fast_path_eligible) и как страховка при сбое LLM. Безопасная регулярка оператора обрабатывает только явную просьбу соединить с человеком. В коде нет правил, составленных под отдельные проверочные реплики из eval-набора; dev_utterances.json не загружается роутером во время работы.

Объяснимость и контроль AI

Пример структуры ответа /turn (значения иллюстративны):

{
  "scenario_id": "SC11",
  "confidence": 0.86,
  "reasoning": "Клиент сообщает о ДТП, произошедшем сейчас.",
  "alternatives": [{"id": "SC29", "confidence": 0.42}],
  "params": {"contact_field": "address"},
  "action": "answer",
  "pending_topics": ["SC29"],
  "answer_text": "Сначала разберём срочное ДТП.",
  "router_mode": "llm",
  "timings_ms": {
    "session_lookup": 0.01,
    "routing": 1200.0,
    "llm_ms": 1198.0,
    "executor_ms": 0.4,
    "save": 0.01,
    "total": 1201.0
  }
}
ПолеСмысл
scenario_idОсновной сценарий из каталога, включая SYS_*
confidenceУверенность маршрутизации от 0 до 1
reasoningКороткое объяснение на русском
alternativesДо трёх альтернатив с confidence
paramsИзвлечённые параметры для executor
actionanswer, clarify, confirm или handoff после политики executor
pending_topicsДополнительные темы, к которым можно вернуться
answer_textОтвет клиенту на русском или казахском
router_modellm, fast_path или rules_fallback
timings_msЭтапы обработки и общее время

Если confidence ниже 0.6 или сценарий требует уточнения, executor задаёт один вопрос. После двух неудачных уточнений формируется handoff с контекстом. Если клиент сам просит оператора, запрос передаётся оператору. Необратимые операции из actions.json сначала возвращают confirm и выполняются только после «да», «иә» или другого явного подтверждения.

Темп живого разговора

Система хранит контекст в сессии: последние реплики, текущий сценарий, параметры и pending_topics. Телефон или другой параметр, названный один раз, сохраняется и не должен запрашиваться снова. При нескольких темах срочные сценарии (например, ДТП, болезнь за границей или мошенничество) ставятся первыми, остальные сохраняются для возврата. Поддерживаются русский, казахский и смешанная речь.

Измеряются session lookup, routing, llm_ms, executor, save, STT, TTS и total на соответствующих путях. В последнем live-прогоне fast path занял в среднем 0.8 мс, LLM — 1614.7 мс. Ориентир ТЗ — до 500 мс для выбора сценария и до 1.5 с до ответа; 500 мс достигаются на fast path, но средний LLM-путь в текущем прогоне медленнее 1.5 с. TTS и STT зависят от внешнего API и сети.

Масштабирование

Каталог для LLM загружается из voice_router_dataset/scenarios.json, поэтому добавление описания, границ, примеров и fast_path_eligible не требует переписывать сам промпт или роутер. Для нового исполняемого действия также потребуются запись в actions.json, знания в knowledge_base.json и поддержка действия в executor.

Модель меняется через OPENAI_MODEL в корневом .env или для eval через --model. GPT-5 распознаётся по имени и получает минимальный уровень reasoning. Для production потребуются внешнее хранилище сессий вместо dict процесса, очередь/фоновые задачи для медленных операций, мониторинг OpenAI и метрик latency, а также единый поток trace для фронтенда.

Границы применимости

  • Accuracy измерена на 104 репликах dev-набора организаторов; на новых формулировках результат может быть ниже.
  • В последнем live-прогоне fast path дал 100%, но это не гарантия на незнакомых формулировках.
  • Известные ошибки последнего прогона: статус платежа был выбран как SC30 вместо SC17; мультиинтент с КАСКО и ОГПО выбрал SC01 вместо SC03; запись к ЛОРу с вопросом о покрытии выбрала SC22 вместо SC21.
  • Сессии хранятся только в памяти одного процесса и теряются после перезапуска.
  • Данные клиентов, полисов, платежей и знаний синтетические; реальные персональные данные в репозитории не используются.
  • Для работы нужны внешние OpenAI API; задержка зависит от сети, модели и квоты.
  • Качество STT на казахском и смешанной речи зависит от аудио и модели распознавания.
  • Потоковая обработка аудио и распознавание эмоций не реализованы.

Соответствие ТЗ

ТребованиеКак выполненоГде
Голос в вебеst.audio_input → /stt или /voice_turn → /ttsSoile-Voice-Router/app.py, backend/speech.py
LLM-слойResponses API, JSON Schema, история и каталог сценариевbackend/llm_router.py
Корректность маршрутизацииeval на 104 репликах, fast path и LLM-метрикиscripts/eval_router.py, docs/eval_results.md
Панель трассировкиСценарий, confidence, reasoning, alternatives, action, режим, pending, timingSoile-Voice-Router/app.py, /session/{id}/trace
RU/KZЯзык определяется для STT и executor; TTS получает ответ на языке клиентаbackend/speech.py, backend/executor.py
Объяснимостьreasoning, confidence, alternatives, router_mode, tracebackend/llm_router.py, backend/app.py
HandoffЯвная просьба оператора и две неудачные попытки уточненияbackend/llm_router.py, backend/executor.py
ПодтвержденияНеобратимые actions сначала требуют подтвержденияbackend/executor.py, voice_router_dataset/actions.json
Запуск одной командойpython run.py, bash run.sh, run.cmdrun.py, run.sh, run.cmd
Измерение latencySTT/LLM/routing/executor/TTS/totalbackend/app.py, backend/speech.py
Приватность ключаКлюч только в корневом .env, .env в .gitignore.env.example, .gitignore
МасштабируемостьJSON-каталог и отдельные backend-компонентыvoice_router_dataset/, backend/
Streaming STT/TTSНе реализован—
Распознавание эмоцийНе реализовано—
Устойчивое хранилище сессийНе реализовано: сейчас dict в памятиbackend/app.py

API

МетодEndpointНазначение
POST/sessionСоздать сессию и получить session_id
POST/turnОбработать текстовую реплику
POST/sttПреобразовать webm/ogg/wav/mp3 в текст
POST/ttsПолучить mp3 по тексту; время в заголовке tts_ms
POST/voice_turnSTT и обработка голосовой реплики в одной операции
GET/session/{session_id}/traceПолучить trace решений сессии

После запуска полная OpenAPI-документация доступна по адресу http://127.0.0.1:8000/docs. Отдельного docs/API.md в репозитории нет.

Структура репозитория

backend/                 FastAPI, LLM-адаптер, executor, STT/TTS
router/                  baseline rules участника 1
Soile-Voice-Router/      текущий Streamlit UI
Soile-Avatar/            отдельная версия UI с аватаром
scripts/                 eval, demo-dialog и контрактные тесты
docs/                    результаты live-eval
voice_router_dataset/    scenarios, actions, knowledge base, mock и eval
run.py                   кроссплатформенный запуск backend + Streamlit
run.sh / run.cmd         тонкие оболочки запуска
requirements.txt         зависимости проекта

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

OPENAI_API_KEY хранится только в корневом .env; файл исключён из Git. В репозитории используются синтетические клиенты, полисы, платежи и адреса из mock-данных. Не вставляйте реальные персональные данные в eval, demo или issue. В production нужно добавить секрет-хранилище, а не передавать ключи через исходники или логи.

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

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

GreebBrothet 37Mirkhan-commits 17Darya 16

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

  • 2026-09-23 17:57Create README for Saqta Voice Router projectMirkhan-commits
  • 2026-09-23 17:55Add files via uploadDarya
  • 2026-09-23 17:42Delete benchmark.pyMirkhan-commits
  • 2026-09-23 17:42Delete config.pyGreebBrothet
  • 2026-09-23 17:41Delete benchmark-report-demo.jsonMirkhan-commits
  • 2026-09-23 17:41Delete lip_sync.pyGreebBrothet
  • 2026-09-23 17:41Delete avatar.pyMirkhan-commits
  • 2026-09-23 17:41Delete app.pyMirkhan-commits
Все коммиты (70)
  • 2026-09-23 17:41Delete main.pyGreebBrothet
  • 2026-09-23 17:41Delete agent.pyMirkhan-commits
  • 2026-09-23 17:41Delete pytest.iniGreebBrothet
  • 2026-09-23 17:41Delete PITCH.mdMirkhan-commits
  • 2026-09-23 17:40Delete AVATAR_BEHAVIOR.mdMirkhan-commits
  • 2026-09-23 17:40Delete requirements-dev.txtGreebBrothet
  • 2026-09-23 17:40Delete AVATAR.mdMirkhan-commits
  • 2026-09-23 17:40Delete requirements.txtGreebBrothet
  • 2026-09-23 17:40Delete router.pyGreebBrothet
  • 2026-09-23 17:40Delete routing_models.pyGreebBrothet
  • 2026-09-23 17:40Delete run.cmdGreebBrothet
  • 2026-09-23 17:39Delete run.pyGreebBrothet
  • 2026-09-23 17:39Delete run.shGreebBrothet
  • 2026-09-23 17:39Delete AGENT.mdMirkhan-commits
  • 2026-09-23 17:39Delete scenario_executor.pyGreebBrothet
  • 2026-09-23 17:39Delete .gitignoreMirkhan-commits
  • 2026-09-23 17:39Delete scenario_repository.pyGreebBrothet
  • 2026-09-23 17:39Delete test_avatar.pyGreebBrothet
  • 2026-09-23 17:39Delete .env.exampleMirkhan-commits
  • 2026-09-23 17:39Delete test_prompts.pyGreebBrothet
  • 2026-09-23 17:38Delete THEME.mdMirkhan-commits
  • 2026-09-23 17:38Delete test_routing.pyGreebBrothet
  • 2026-09-23 17:38Delete test_theme.pyGreebBrothet
  • 2026-09-23 17:37Delete theme.pyGreebBrothet
  • 2026-09-23 17:37Delete README.mdGreebBrothet
  • 2026-09-23 17:37Delete ROUTING.mdGreebBrothet
  • 2026-09-23 17:35Delete .envGreebBrothet
  • 2026-09-23 17:33Add files via uploadGreebBrothet
  • 2026-09-23 17:30Add files via uploadGreebBrothet
  • 2026-09-23 17:29Delete team member information from READMEDarya
  • 2026-09-23 17:28Update README.mdDarya
  • 2026-09-23 17:27docs: README for jury, screenshot, pointers in sub-READMEsZhirnova Darya
  • 2026-09-23 17:26Add files via uploadMirkhan-commits
  • 2026-09-23 17:15cross-platform run.py, GPT-5 support, python demo scriptZhirnova Darya
  • 2026-09-23 16:51backZhirnova Darya
  • 2026-09-23 16:44Add files via uploadMirkhan-commits
  • 2026-09-23 16:29backend: urgent priority on LLM path, operator rule narrowed, client reuseZhirnova Darya
  • 2026-09-23 16:10backend: hybrid fast path, live eval 95.2%Zhirnova Darya
  • 2026-09-23 15:43Add files via uploadMirkhan-commits
  • 2026-09-23 15:39run.sh: self-contained venv, python version checkZhirnova Darya
  • 2026-09-23 15:25backend: voice endpoints (stt/tts/voice_turn), fast_path labelZhirnova Darya
  • 2026-09-23 15:19backend: demo dialog script, keep client id in sessionZhirnova Darya
  • 2026-09-23 15:04remove pycache from gitZhirnova Darya
  • 2026-09-23 15:03backend: executor, confirmations, traceZhirnova Darya
  • 2026-09-23 14:55DEMO backend: LLM router with rules fallbackZhirnova Darya
  • 2026-09-23 14:16restore root .gitignoreZhirnova Darya
  • 2026-09-23 14:10Delete test_prompts.pyGreebBrothet
  • 2026-09-23 14:10Delete requirements.txtGreebBrothet
  • 2026-09-23 14:10Delete requirements-dev.txtGreebBrothet
  • 2026-09-23 14:09Delete main.pyGreebBrothet
  • 2026-09-23 14:09Delete config.pyGreebBrothet
  • 2026-09-23 14:09Delete app.pyGreebBrothet
  • 2026-09-23 14:09Delete agent.pyGreebBrothet
  • 2026-09-23 14:09Delete README.mdGreebBrothet
  • 2026-09-23 14:09Delete PITCH.mdGreebBrothet
  • 2026-09-23 14:08Delete AGENT.mdGreebBrothet
  • 2026-09-23 14:08Delete .gitignoreGreebBrothet
  • 2026-09-23 14:08Delete .env.exampleGreebBrothet
  • 2026-09-23 14:07Add files via uploadGreebBrothet
  • 2026-09-23 14:04Add files via uploadMirkhan-commits
  • 2026-09-23 13:57Add files via uploadGreebBrothet
  • 2026-09-23 13:45backend skeleton: sessions, turn API, router stubZhirnova Darya
Структура репозитория (74 файлов)
.agents/skills/developing-with-streamlit
README.md
Seile-GitHub-20260923-173215.zip
Soile-Avatar/.env.example
Soile-Avatar/.github/workflows/tests.yml
Soile-Avatar/.gitignore
Soile-Avatar/.streamlit/config.toml
Soile-Avatar/AGENT.md
Soile-Avatar/AVATAR.md
Soile-Avatar/PACKAGE_MANIFEST.txt
Soile-Avatar/PITCH.md
Soile-Avatar/README.md
Soile-Avatar/START_HERE.txt
Soile-Avatar/START_WINDOWS.cmd
Soile-Avatar/agent.py
Soile-Avatar/app.py
Soile-Avatar/avatar.py
Soile-Avatar/avatar_frontend/avatar.js
Soile-Avatar/avatar_frontend/core.js
Soile-Avatar/avatar_frontend/core.test.js
Soile-Avatar/avatar_frontend/demo.json
Soile-Avatar/avatar_frontend/demo.wav
Soile-Avatar/avatar_frontend/index.html
Soile-Avatar/avatar_frontend/playback.test.js
Soile-Avatar/avatar_frontend/style.css
Soile-Avatar/config.py
Soile-Avatar/lip_sync.py
Soile-Avatar/main.py
Soile-Avatar/pytest.ini
Soile-Avatar/requirements-dev.txt
Soile-Avatar/requirements.txt
Soile-Avatar/test_avatar.py
Soile-Avatar/test_prompts.py
Soile-Voice-Router/AGENT.md
Soile-Voice-Router/PITCH.md
Soile-Voice-Router/README.md
Soile-Voice-Router/agent.py
Soile-Voice-Router/app.py
Soile-Voice-Router/config.py
Soile-Voice-Router/main.py
Soile-Voice-Router/requirements-dev.txt
Soile-Voice-Router/requirements.txt
Soile-Voice-Router/test_prompts.py
backend/__init__.py
backend/app.py
backend/executor.py
backend/llm_router.py
backend/router_client.py
backend/speech.py
docs/eval_results.md
router/ROUTER_README.md
router/__init__.py
router/complex_routes.json
router/predictions.json
router/predictions_complex.json
router/router.py
router/test_router.py
scripts/demo_dialog.py
scripts/demo_dialog.sh
scripts/eval_router.py
scripts/print_turn.py
scripts/test_llm_router.py
soile-unified.zip
voice_router_dataset/README.kz.md
voice_router_dataset/README.md
voice_router_dataset/README.ru.md
voice_router_dataset/actions.json
voice_router_dataset/dev_utterances.json
voice_router_dataset/dialogs_sample.json
voice_router_dataset/evaluate.py
voice_router_dataset/knowledge_base.json
voice_router_dataset/mock_backend.json
voice_router_dataset/scenarios.json
voice_router_dataset/slots.json
Ветки (2)

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

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

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