О проекте
Команда: QamQor.ai
Кейс HackAlem.ai: Коммуникации — Halyk Bank · кейс 2
Стадия: Доведённый продукт
Задача кейса: «Voice Router»: голосовой AI, маршрутизирующий звонки в контакт-центре страховой компании
Суть
AI-оператор страхового контакт-центра на RU/KK: принимает текст и голос, маршрутизирует обращение в один из 40 страховых сценариев, собирает поля, выполняет mock-операции с подтверждением и показывает трассировку супервизору.
Как устроено
Голос → STT (whisper-1) → FastAPI → LLM Router возвращает структурированный сценарий, поля, источники и цитаты → валидатор схемы и цитат → детерминированная policy → slot manager и dispatcher → mock-бэкенд/база знаний → композер ответа → TTS (gpt-4o-mini-tts). Состояние диалога и история в SQLite, защита от повторного выполнения операций. Есть экспериментальный адаптер Asterisk AudioSocket и оценка маршрутизации на golden-наборе.
Ключевые решения
- LLM routing со structured output
- валидация источников и цитат
- детерминированная policy-логика
- slot filling
- multi-topic routing
- Asterisk AudioSocket
Метрики
Коммит: golden L2 routing 104/104, recall 26/26, boundary-pass
Особенности
LLM только предлагает решение, а выполнение операций контролируют валидатор, policy и dispatcher; критичные действия требуют отдельного подтверждения. Пульт супервизора показывает альтернативные сценарии и различающие факты. Эксперименты оценки маршрутизации сохранены в репозитории.
Стек
Python · FastAPI · Pydantic · HTTPX · Next.js · React · TypeScript · Tailwind CSS · SQLite · Docker Compose · Vercel · Cloudflare Tunnel · pytest
Модели
gpt-6-astra · whisper-1 · gpt-4o-mini-tts
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-cd37b294-qamqor-ai.
README
README.mdHalyk CallAI
AI-оператор страхового контакт-центра на русском и казахском языках.
Halyk CallAI принимает текстовые и голосовые обращения, определяет страховой сценарий, собирает необходимые данные, выполняет контролируемые демонстрационные операции и сохраняет полный контекст диалога. Супервизор может проверить выбранный маршрут, источники, состояние диалога и выполненные действия.
1. О проекте
Клиент страховой компании может описать проблему обычными словами:
«Деньги списались, а полис не пришёл»
или:
«Хочу поменять email в полисе»
Ассистент должен не просто сгенерировать ответ, а:
- понять, какой страховой сценарий соответствует обращению;
- отличить похожие ситуации;
- извлечь необходимые данные;
- запросить недостающую информацию;
- проверить бизнес-правила;
- при необходимости запросить подтверждение;
- выполнить допустимое действие;
- сохранить результат и историю разговора.
Проект предназначен для двух основных ролей:
- Клиент контакт-центра — получает ответ, уточнение или результат операции.
- Супервизор — видит, как система обработала обращение, какие источники использовала и какие действия выполнила.
AI используется для понимания свободной речи, маршрутизации обращения и формирования части ответов. Выполнение операций контролируется отдельной backend-логикой.
Текущая версия — хакатонный прототип. Страховые данные относятся к вымышленной Saqta Insurance. Реальные системы страховой компании и банка не подключены.
Для IP-телефонии реализован отдельный экспериментальный адаптер Asterisk AudioSocket. Его код и тесты присутствуют в репозитории, однако реальный SIP/PSTN-звонок пока не подтверждён. Телефонный модуль выключен по умолчанию и не влияет на основной Web Demo.
2. Ключевые возможности
- RU/KK текстовый AI-ассистент.
- Голосовой ввод и озвучивание ответов.
- 40 страховых бизнес-сценариев.
- 3 системных сценария.
- AI-маршрутизация через
gpt-6-astra. - Детерминированные бизнес-правила поверх AI.
- Сбор и исправление обязательных полей.
- Поддержка нескольких тем внутри одного диалога.
- Предпросмотр критических операций.
- Отдельное подтверждение необратимых действий.
- Mock-backend страховых операций.
- SQLite-состояние и история диалогов.
- Защита от повторного выполнения одной операции.
- Пульт супервизора.
- Источники и цитаты для AI-решений.
- RU/KK STT.
- RU/KK TTS.
- Экспериментальный Asterisk AudioSocket adapter.
- Встроенный dataset.
- Автоматические backend и audio/frontend тесты.
- Сохранённые результаты оценки маршрутизации.
- Реальные smoke-тесты LLM и voice pipeline.
3. Что реализовано
Для клиента
- Чат с выбором RU / KK.
- История разговора.
- Восстановление последней сессии в браузере.
- Создание нового разговора.
- Голосовой ввод отдельными репликами.
- Озвучивание AI-ответа.
- Возможность прервать воспроизведение новой записью.
- Уточнение запроса.
- Сбор обязательных полей.
- Исправление ранее введённых данных.
- Возврат к предыдущей теме разговора.
- Подтверждение защищённых операций.
В интерфейсе доступны шесть встроенных demo-сценариев:
- офис;
- проблема оплаты;
- исправление сведений;
- возврат к теме;
- подтверждение действия;
- запрос на казахском языке.
Обработка
В проекте реализованы:
-
каталог из 40 бизнес-сценариев;
-
3 системных намерения:
- непонятный запрос;
- вопрос вне компетенции;
- завершение разговора;
-
структурированный ответ LLM;
-
проверка схемы ответа;
-
проверка источников;
-
проверка цитат;
-
извлечение полей;
-
детерминированная policy-логика;
-
маршрутизация нескольких тем;
-
выполнение mock-операций.
Mock-операции
Доступны демонстрационные операции:
- поиск клиента;
- поиск полиса;
- работа с оплатой;
- расчёты по тестовым тарифам;
- изменение контактных данных;
- работа с полисами;
- работа с обращениями;
- регистрация демонстрационных уведомлений.
Супервизор
Пульт супервизора показывает:
- выбранный сценарий;
- альтернативные сценарии;
- различающие факты;
- извлечённые данные;
- цитаты;
- источники;
- состояние до обработки;
- состояние после обработки;
- backend-вызовы;
- ожидаемую операцию;
- результат;
- время обработки.
4. Как работает решение
Основной pipeline:
Пользователь
↓
Текст / голос
↓
STT
↓
FastAPI
↓
LLM Router
↓
Validator
↓
Policy
↓
Slots / Dispatcher
↓
Mock Backend / Knowledge Base
↓
Response Composer
↓
TTS
↓
Пользователь
Пошагово:
-
Клиент вводит текст или записывает голосовую реплику.
-
Если используется голос, аудио отправляется в STT.
-
Распознанный текст поступает в
/api/chat. -
Backend загружает:
- историю;
- текущую тему;
- собранные поля;
- результаты предыдущих действий.
-
LLM предлагает:
- сценарий;
- извлечённые данные;
- источники;
- основания выбора.
-
Валидатор проверяет структуру результата.
-
Policy определяет допустимый следующий шаг.
-
Система:
- отвечает;
- задаёт уточнение;
- собирает поле;
- предлагает операцию;
- выполняет mock-action.
-
Для защищённых операций требуется подтверждение.
-
Ответ сохраняется в SQLite.
-
При голосовом взаимодействии ответ передаётся в TTS.
-
Супервизор получает журнал обработки.
5. Почему это не просто чат-бот
Halyk CallAI не передаёт LLM полный контроль над бизнес-операциями.
Архитектура разделяет:
AI interpretation
↓
Validation
↓
Business Policy
↓
Python Dispatcher
↓
Operation
LLM предлагает структурированное решение, но сам не выполняет операции.
Перед выполнением система отдельно проверяет:
- идентификатор сценария;
- структуру ответа;
- обязательные поля;
- источники;
- состояние диалога;
- необходимость подтверждения;
- допустимость операции.
Такой подход позволяет использовать AI для понимания естественного языка, сохраняя контролируемое выполнение бизнес-действий.
6. Инструкция по использованию
Текстовый разговор
- Откройте:
http://127.0.0.1:3000
-
Выберите RU или KK.
-
Нажмите:
Новый разговор
- Введите сообщение:
Где находится ваш офис в Алматы?
-
Отправьте сообщение.
-
Если системе требуется дополнительная информация — ответьте следующим сообщением.
-
Если появилась операция, требующая подтверждения, проверьте данные и нажмите:
Подтвердить
- Для просмотра технической трассировки откройте:
Пульт супервизора
Голосовой разговор
- Убедитесь, что интерфейс показывает:
Голос настроен
-
Выберите RU или KK.
-
Нажмите кнопку микрофона.
-
Разрешите браузеру доступ к микрофону.
-
Произнесите вопрос.
-
Нажмите ■, чтобы закончить запись.
-
Аудио будет отправлено на распознавание.
-
Распознанный текст появится в чате.
-
AI обработает обращение.
-
Ответ будет озвучен.
Повторное нажатие микрофона может прервать текущее воспроизведение.
Web Voice работает отдельными законченными репликами, а не как непрерывный телефонный full-duplex разговор.
7. Технологический стек
| Компонент | Технология | Назначение |
|---|---|---|
| Frontend | Next.js 15 | Web UI |
| UI | React 19 | Клиентский интерфейс |
| Язык frontend | TypeScript | Frontend |
| Стили | Tailwind CSS 4 | UI |
| Backend | FastAPI | API |
| Язык backend | Python 3.12+ | Логика |
| Validation | Pydantic | Контракты |
| ASGI | Uvicorn | Запуск API |
| HTTP | HTTPX | AI API |
| LLM | gpt-6-astra | Маршрутизация и составление части ответов |
| LLM API | POST /responses | Inference |
| STT | whisper-1 | Распознавание речи |
| STT API | /audio/transcriptions | Voice → text |
| TTS | gpt-4o-mini-tts | Синтез речи |
| TTS API | /audio/speech | Text → audio |
| Голоса | marin | RU / KK |
| DB | SQLite (для пилота) | Диалоги и состояние |
| Data | JSON / JSONL | Dataset и события |
| Browser Audio | MediaRecorder / MediaSource | Голосовой интерфейс |
| Telephony | Asterisk AudioSocket adapter | Экспериментальная IP-телефония |
| Test | pytest | Backend |
| Test | Node.js test runner | Frontend/audio |
| Containers | Docker Compose | Backend / экспериментальная телефония |
| Deploy frontend | Vercel | Публичный Web UI |
| Demo backend exposure | Cloudflare Tunnel | Публичный HTTPS |
8. Архитектура
flowchart TD
U["Клиент"] --> F["Next.js"]
F -->|"Text / API"| B["FastAPI"]
F -->|"Audio"| B
B --> STT["STT"]
STT --> C["Conversation Service"]
B --> C
C --> R["LLM Router"]
R --> AI["gpt-6-astra"]
AI --> R
R --> V["Validation"]
V --> P["Policy"]
P --> S["Slots / Dispatcher"]
S --> M["Mock Backend"]
S --> K["Knowledge Base"]
M --> DB[("SQLite")]
C --> DB
S --> RC["Response Composer"]
RC --> AI
RC --> C
C --> B
B --> TTS["TTS"]
TTS --> F
C --> E["Event Log"]
E --> DB
SUP["Supervisor UI"] --> B
Компоненты
Frontend
Отправляет запросы через /api/*. API keys не передаются браузеру.
LLM Router
Анализирует реплику и предлагает сценарий.
Validation
Проверяет структурированный результат модели.
Policy
Определяет допустимый следующий шаг.
Slots
Собирает обязательные данные.
Dispatcher
Выполняет разрешённые действия.
Mock Backend
Имитирует страховые системы.
Knowledge Base
Предоставляет справочные данные.
SQLite
Хранит:
- conversation state;
- операции;
- mock-состояние;
- события.
Supervisor
Отображает трассировку обработки.
9. Структура проекта
.
├── backend/
│ ├── app/
│ │ ├── catalog/
│ │ ├── router/
│ │ ├── policy/
│ │ ├── state/
│ │ ├── slots/
│ │ ├── actions/
│ │ ├── kb/
│ │ ├── response/
│ │ ├── voice/
│ │ └── observability/
│ └── tests/
│
├── frontend/
│
├── experimental/
│ └── asterisk/
│
├── scripts/
│
├── golden/
│ └── L2/
│
├── evaluation/
│
├── data/
├── docs/
├── .env.example
├── pyproject.toml
├── requirements.lock
├── Dockerfile
├── docker-compose.yml
└── README.md
Основные каталоги
backend/app/router
LLM routing и prompt.
backend/app/policy
Детерминированные правила.
backend/app/actions
Dispatcher и mock-backend.
backend/app/voice
STT / TTS.
backend/app/observability
Журнал обработки.
frontend
Клиентский интерфейс и supervisor.
golden/L2
Зафиксированная версия ядра и dataset.
evaluation
Сохранённые результаты проверок.
experimental/asterisk
Изолированный experimental telephony adapter.
10. Установка
Требования
-
Python 3.12+
-
Node.js / npm
-
Windows PowerShell для общего demo-script
-
доступ в интернет
-
AI API key
-
порты:
30008000
GPU не требуется.
Отдельный сервер БД не требуется.
Клонирование
git clone https://github.com/BAITC-Hacks/hack-cd37b294-qamqor-ai.git
cd hack-cd37b294-qamqor-ai
Copy-Item .env.example .env
11. Переменные окружения
Минимальная конфигурация:
OPENAI_API_KEY=<your-key>
При необходимости:
OPENAI_BASE_URL=<compatible-api-url>
Основная модель:
CALLAI_MODEL=gpt-6-astra
Dataset
Отдельно указывать путь не требуется.
По умолчанию используется:
golden/L2/case_2/voice_router_dataset
При необходимости:
CALLAI_DATASET_PATH=golden/L2/case_2/voice_router_dataset
Voice
CALLAI_VOICE_ENABLED=true
CALLAI_STT_MODEL=whisper-1
TTS_PROVIDER=openai
TTS_MODEL=gpt-4o-mini-tts
TTS_VOICE_RU=marin
TTS_VOICE_KK=marin
Основные переменные
| Переменная | Назначение | Обязательная |
|---|---|---|
OPENAI_API_KEY | AI API | Да |
OPENAI_BASE_URL | Совместимый endpoint | Нет |
CALLAI_MODEL | LLM | По умолчанию gpt-6-astra |
CALLAI_DATASET_PATH | Override dataset | Нет |
CALLAI_DATABASE | SQLite path | Нет |
CALLAI_TIMEOUT_SECONDS | LLM timeout | Нет |
CALLAI_VOICE_ENABLED | Voice | Нет |
CALLAI_VOICE_API_KEY | Отдельный voice key | Нет |
CALLAI_VOICE_BASE_URL | Voice API endpoint | Нет |
CALLAI_STT_MODEL | STT model | Нет |
TTS_PROVIDER | TTS provider | Нет |
TTS_MODEL | TTS model | Нет |
TTS_VOICE_RU | RU voice | Нет |
TTS_VOICE_KK | KK voice | Нет |
TTS_SPEED | TTS speed | Нет |
TELEPHONY_ENABLED | Experimental telephony | Нет |
Телефония
По умолчанию:
TELEPHONY_ENABLED=false
Телефонный адаптер запускается отдельно и не является обязательной зависимостью Web Demo.
12. Быстрый запуск
Из корня:
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\run.ps1 demo
Скрипт:
- создаёт
.venv; - устанавливает Python dependencies;
- выполняет
npm ci, если требуется; - собирает frontend;
- запускает FastAPI;
- запускает Next.js.
После запуска:
| URL | Назначение |
|---|---|
http://127.0.0.1:3000 | Web UI |
http://127.0.0.1:3000/supervisor | Supervisor |
http://127.0.0.1:8000/docs | OpenAPI |
http://127.0.0.1:8000/health | Health |
http://127.0.0.1:8000/ready | Readiness |
13. Ручной запуск
Backend
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e '.[test]' -c requirements.lock
.\.venv\Scripts\python.exe -m uvicorn app.main:app --host 127.0.0.1 --port 8000
Frontend
Во втором терминале:
cd frontend
npm.cmd ci
npm.cmd run build
npm.cmd run start
14. Быстрый запуск для жюри
git clone https://github.com/BAITC-Hacks/hack-cd37b294-qamqor-ai.git
cd hack-cd37b294-qamqor-ai
Copy-Item .env.example .env
Добавьте в .env:
OPENAI_API_KEY=<provided-api-key>
После этого:
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\run.ps1 demo
Откройте:
http://127.0.0.1:3000
Dataset уже находится внутри репозитория.
15. Demo-сценарий для жюри
Изменение контактных данных
Нажмите:
03 · Исправить сведения
Первая реплика:
Хочу поменять email, ИИН [ИИН скрыт]. Новый адрес [email protected]
Система должна подготовить операцию, но не выполнять её без подтверждения.
Следующая реплика:
Нет, ошибся: новый email [email protected]
Система должна заменить старое значение.
После этого нажмите:
Подтвердить
Ожидаемый результат
До подтверждения операция не выполняется.
После исправления:
[email protected]
должен быть заменён на:
[email protected]
После подтверждения:
- mock-backend получает
update_contact; - состояние сохраняется;
- pending operation очищается;
- результат отображается клиенту.
В Supervisor можно проверить вызов и состояние.
Дополнительный KK demo
Выберите KK и произнесите:
Алматыдағы кеңсеңіз қайда орналасқан? Қазақша жауап беріңізші.
Система должна:
- распознать запрос;
- выбрать соответствующий сценарий;
- получить офис из knowledge base;
- ответить на казахском;
- воспроизвести TTS.
16. API
| Метод | Endpoint | Назначение |
|---|---|---|
| GET | /health | Health |
| GET | /ready | Config readiness |
| POST | /api/session | Создать session |
| GET | /api/session/{conversation_id} | Получить conversation |
| POST | /api/chat | Обработать реплику |
| POST | /api/route | Только routing |
| GET | /api/supervisor/sessions | Список conversations |
| GET | /api/supervisor/session/{conversation_id} | Supervisor trace |
| GET | /api/voice/status | Voice config |
| POST | /api/voice/transcribe | STT |
| POST | /api/voice/speech | TTS |
Создание сессии
curl -X POST http://127.0.0.1:8000/api/session \
-H 'Content-Type: application/json' \
-d '{"language":"ru"}'
Сообщение
curl -X POST http://127.0.0.1:8000/api/chat \
-H 'Content-Type: application/json' \
-d '{
"conversation_id":"<conversation_id>",
"turn_id":"demo-1",
"text":"Где находится ваш офис в Алматы?",
"language":"ru"
}'
Ответ содержит, в частности:
text;language;state_version;pending_action;citations;latency.
17. Данные и интеграции
Dataset
golden/L2/case_2/voice_router_dataset
Включает:
- scenarios;
- slots;
- actions;
- knowledge base;
- mock clients;
- policies;
- payments;
- cases;
- evaluation examples;
- sample dialogs.
Knowledge Base
knowledge_base.json
Содержит демонстрационные:
- продукты;
- тарифы;
- офисы;
- клиники;
- справочные сведения.
Mock Backend
mock_backend.json
Используется как начальное состояние.
При первом запуске данные переносятся в SQLite.
SQLite
По умолчанию:
backend/runtime/callai.sqlite
События также сохраняются в JSONL.
18. AI-компонент
| Этап | Вход | Выход |
|---|---|---|
| STT | Аудио + язык | Текст |
| Router | Реплика + история + каталог | Structured JSON |
| Policy | Structured result | Следующий шаг |
| Dispatcher | Action | Backend result |
| Response Composer | Факты | Ответ |
| TTS | Текст + язык | Audio |
LLM Router
Модель:
gpt-6-astra
Router получает:
- каталог;
- историю;
- собранные поля;
- факты;
- новую реплику.
Возвращает структурированное предложение:
- scenario;
- sources;
- citations;
- boundary checks;
- slot updates.
RAG
Векторного RAG нет.
Не используются:
- embeddings;
- vector database;
- reranker.
Используется детерминированный доступ к JSON knowledge base.
Tool calling
LLM API function calling не используется.
Модель возвращает structured result.
Python dispatcher выполняет операции самостоятельно.
19. IP-телефония
Экспериментальный Asterisk AudioSocket adapter
В репозитории реализован отдельный адаптер:
experimental/asterisk/
Архитектура:
Телефон
↓
Asterisk
↓
AudioSocket
↓
Telephony Adapter
↓
STT
↓
CallAI
↓
TTS
↓
AudioSocket
↓
Asterisk
↓
Телефон
Адаптер использует тот же pipeline, что Web Voice:
STT
→ Chat
→ Router
→ Policy
→ Response
→ TTS
Реализованы:
- PCM 8 kHz;
- выделение реплики по паузе;
- последовательная обработка ходов;
- прерывание устаревшего playback;
- изоляция ошибок;
- отдельный Compose;
- конфигурация Asterisk;
- тесты telephony adapter.
Статус
Код адаптера реализован и покрыт тестами.
Однако на момент подготовки README:
- реальный SIP/PSTN звонок не подтверждён;
- SIP account не настроен;
- внешний номер не подключён;
- живой transfer оператору не реализован.
Поэтому IP-телефония считается experimental и не является обязательной частью Web Demo.
20. Выполненные проверки
Routing evaluation
Сохранённый прогон:
20260923T111919_964539Z
Модель:
gpt-6-astra
Результаты:
| Метрика | Результат |
|---|---|
| Primary | 104/104 — 100% |
| Full match | 104/104 — 100% |
| Multi-intent recall | 26/26 — 100% |
| RU | 52/52 |
| KK | 45/45 |
| Mixed | 7/7 |
| Schema/API/system errors | 0 / 0 / 0 |
Средняя latency router:
8.25 s
p95:
13.13 s
Это результат на предоставленном dev-наборе и не является гарантией качества на новых данных.
Real LLM smoke-test
Выполнен реальный:
POST /api/chat
через:
gpt-6-astra
Результат:
HTTP 200
scenario: SC33
LLM calls: 1
retry: 0
История была сохранена.
Tests
После добавления experimental telephony adapter:
262 Python tests
из них:
202 backend
60 telephony experimental
Также:
9 frontend/audio tests
Voice smoke-tests
Выполнены реальные:
STT → Router → TTS
для:
RU
KK
Голос:
marin
Полный клиентский цикл:
RU: 15.83 s
KK: 13.26 s
Это отдельные smoke-тесты.
Эти значения не являются:
- p95;
- production latency;
- latency до начала playback;
- сравнением качества RU/KK.
21. Ограничения
Текущая версия является прототипом.
Ограничения:
- страховые данные демонстрационные;
- реальные банковские системы не подключены;
- реальные страховые backend-системы не подключены;
- production authentication отсутствует;
- разграничение прав доступа отсутствует;
- проверка личности отсутствует;
- полноценный offline AI mode отсутствует;
- Web Voice работает отдельными репликами;
- качество казахской речи требует пилотной проверки;
- длинные разговоры не суммаризируются;
- production telephony не подключена;
- живой transfer оператору не реализован;
- Docker Compose основного проекта запускает только backend;
- SQLite используется локально.
22. Публичное развёртывание
Для хакатонного demo рекомендуется схема:
Browser
↓
Vercel
↓
Next.js
↓
Cloudflare HTTPS
↓
FastAPI
↓
CallAI
Frontend и backend разворачиваются отдельно.
Frontend — Vercel
Frontend находится в:
frontend/
В frontend используется переменная:
BACKEND_URL=
Локально:
BACKEND_URL=http://127.0.0.1:8000
При deployment:
BACKEND_URL=https://<public-backend>
Vercel
-
Подключите GitHub repository.
-
В Vercel выберите Root Directory:
frontend
- Framework:
Next.js
- Добавьте Environment Variable:
BACKEND_URL=https://<public-fastapi-url>
- Выполните Deploy.
После deployment Vercel выдаст:
https://<project>.vercel.app
Backend — Cloudflare Tunnel
Сначала запустите backend.
Можно запустить весь demo:
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\run.ps1 demo
Проверьте:
http://127.0.0.1:8000/health
Во втором терминале:
cloudflared tunnel --url http://127.0.0.1:8000
Cloudflare выдаст:
https://xxxx.trycloudflare.com
Этот URL необходимо указать в Vercel:
BACKEND_URL=https://xxxx.trycloudflare.com
После изменения переменной выполните redeploy frontend.
Deployment architecture
https://project.vercel.app
↓
Next.js
↓
/api/*
↓
https://xxxx.trycloudflare.com
↓
FastAPI :8000
↓
CallAI
API key хранится на backend и не передаётся браузеру.
Проверка deployed demo
Откройте публичный Vercel URL с другого устройства.
Проверьте:
- Web UI;
- создание session;
- текстовый запрос;
- demo-сценарий;
- supervisor;
- RU;
- KK;
- microphone;
- STT;
- TTS.
Тест:
Где находится ваш офис в Алматы?
KK:
Алматыдағы кеңсеңіз қайда орналасқан? Қазақша жауап беріңізші.
Перед питчем
Проверьте:
- backend запущен;
-
/healthотвечает; - Cloudflare Tunnel работает;
- публичный backend отвечает;
-
BACKEND_URLактуален; - Vercel deployment завершён;
- frontend открывается с телефона;
-
/api/chatработает; - supervisor работает;
- microphone работает;
- STT работает;
- TTS работает;
- RU работает;
- KK работает.
Ограничение hackathon deployment
Quick Tunnel является временным.
Если остановить:
cloudflared
публичный backend перестанет быть доступен.
После нового запуска URL может измениться.
В таком случае необходимо:
- получить новый URL;
- изменить
BACKEND_URLв Vercel; - выполнить redeploy.
Для production потребуется постоянный backend hosting и постоянный домен.
23. Развитие и польза для компании
В перспективе CallAI может сократить рутинную нагрузку контакт-центра и помогать клиентам решать страховые вопросы на русском и казахском языках.
Сейчас это прототип с mock-операциями, поэтому бизнес-эффект необходимо подтвердить пилотом.
| Что улучшить | Что это даст |
|---|---|
| Реальные системы полисов | Поиск и изменение полисов |
| Реальные платежи | Проверка оплаты |
| Реальные обращения | Регистрация обращения |
| Identity verification | Безопасные операции |
| RBAC | Контроль доступа |
| Production telephony | Голосовой контакт-центр |
| Transfer оператору | Сохранение контекста |
| Улучшение KK STT | Меньше повторных вопросов |
| Noise robustness | Работа с реальными звонками |
| Снижение latency | Более естественный разговор |
| Управление knowledge base | Актуальность ответов |
| Quality monitoring | Поиск причин ошибок |
Потенциальная польза
Меньше рутинной работы
Типовые обращения может обрабатывать AI.
Быстрее обслуживание
Сбор информации начинается сразу.
Сохранение контекста
Оператор получает историю и собранные сведения.
Контроль качества
Supervisor показывает маршрут и действия.
RU / KK
Один pipeline обслуживает оба языка.
24/7
После production-подготовки AI-канал может работать круглосуточно.
24. Предварительная оценка эффекта
Ниже приведён расчётный пример. Это не фактические результаты Halyk, Saqta Insurance или текущего прототипа.
Предположим:
10 000 обращений / месяц
Среднее время оператора:
6 минут
Исходная нагрузка:
1000 операторских часов / месяц
Сценарии автоматизации
| Доля полностью автоматизированных обращений | Обращений | Потенциально высвобожденные часы |
|---|---|---|
| 20% | 2 000 | 200 |
| 30% | 3 000 | 300 |
| 40% | 4 000 | 400 |
Формула:
обращения
× доля автоматизации
× минуты оператора
÷ 60
Для 30%:
10 000 × 0.30 × 6 / 60
=
300 часов
Это потенциально высвобожденное время, а не автоматически полученная денежная экономия.
Расчёт не учитывает:
- quality control;
- повторные обращения;
- API cost;
- телефонию;
- инфраструктуру;
- сопровождение;
- интеграции;
- работу supervisor.
25. Что измерять на пилоте
Необходимо измерить:
- долю обращений, решённых AI;
- долю transfer оператору;
- время решения;
- время оператора после transfer;
- ожидание клиента;
- median latency;
- p95 latency;
- повторные обращения;
- routing errors;
- operation errors;
- incorrect answers;
- RU STT quality;
- KK STT quality;
- mixed RU/KK quality;
- стоимость AI API;
- стоимость телефонии;
- стоимость infrastructure;
- стоимость успешно решённого обращения;
- customer satisfaction.
Показатели желательно сравнивать с baseline или контрольной группой.
26. Целевые гипотезы пилота
Это целевые ориентиры для будущего пилота, а не результаты текущего прототипа.
| KPI | Предварительная цель |
|---|---|
| Типовые обращения без оператора | 20–40% |
| Снижение времени первичного сбора | 30–50% |
| Определение сценария | ≥90% |
| Передача оператору с контекстом | ≥95% |
| Завершение автоматизируемого сценария | ≥80% |
| Ответ после реплики | <3 сек как целевой production KPI |
Эти значения должны подтверждаться на реальных данных.
27. Что не заявляется
Проект не заявляет без пилота:
- конкретную экономию в тенге;
- конкретный ROI;
- сокращение штата;
- рост продаж;
- процент автоматизации production-трафика;
- production accuracy на неизвестных звонках.
Текущие тесты подтверждают техническую работоспособность на тестовом и dev-наборе, а не экономический результат внедрения.
28. Статус проекта
Готово
- Web UI.
- RU/KK.
- Text pipeline.
- Voice pipeline.
gpt-6-astra.- STT.
- TTS.
- Dataset.
- Mock backend.
- Supervisor.
- SQLite.
- Critical-action confirmation.
- Routing evaluation.
- Automated tests.
- Real LLM smoke-test.
- Real RU voice smoke-test.
- Real KK voice smoke-test.
- Experimental Asterisk adapter.
- Vercel-ready frontend configuration.
Экспериментально
- Asterisk AudioSocket.
- IP telephony.
- Phone audio pipeline.
Не подключено к production
- страховой backend;
- банковский backend;
- CRM;
- production auth;
- real SIP/PSTN;
- operator transfer;
- production deployment infrastructure.
29. Ссылка на demo
После успешного deployment:
Demo: https://<project>.vercel.app
До публикации фактического URL используйте локальный Web Demo:
http://127.0.0.1:3000
30. Кратко для жюри
Halyk CallAI — AI-оператор страхового контакт-центра, который понимает русскую и казахскую речь, определяет страховой сценарий, собирает необходимые данные и выполняет контролируемые действия. В отличие от обычного голосового чат-бота, AI здесь отделён от бизнес-логики: решения проходят валидацию и policy layer, а supervisor позволяет проверить маршрут, источники и выполненные действия. Текущий прототип подтверждён автоматическими тестами, реальным LLM smoke-test и RU/KK voice pipeline. Следующий этап — подключение production-систем и пилот на реальных обращениях для оценки скорости, качества и стоимости обслуживания.
Авторы коммитов
История коммитов
- 2026-09-23 17:58Финальнаяadilusrr-gif
- 2026-09-23 17:55финальнаяadilusrr-gif
- 2026-09-23 17:45feat: add isolated Asterisk experiment and document pilot estimatesaorazkano
- 2026-09-23 17:34fix: bundle default dataset, update README and add Halyk logoaorazkano
- 2026-09-23 17:19checkpoint before asterisk demo integrationaorazkano
- 2026-09-23 17:17fix(voice): spell out Kazakh time rangesaorazkano
- 2026-09-23 17:10voice: switch RU and KK speech voices to marinaorazkano
- 2026-09-23 16:51Voice auditaorazkano
Все коммиты (10)
- 2026-09-23 15:48golden: L2 routing 104-104 recall-26-26 boundary-passaorazkano
- 2026-09-23 14:39docs: add project READMEaorazkano
Структура репозитория (612 файлов)
.env.example .gitignore BUILD_LOG.md Dockerfile Makefile README.md backend/app/__init__.py backend/app/actions/__init__.py backend/app/actions/dispatcher.py backend/app/actions/mock_backend.py backend/app/catalog/__init__.py backend/app/catalog/boundaries.py backend/app/catalog/compiler.py backend/app/catalog/loader.py backend/app/config/__init__.py backend/app/config/settings.py backend/app/kb/__init__.py backend/app/kb/service.py backend/app/main.py backend/app/observability/__init__.py backend/app/observability/tracer.py backend/app/policy/__init__.py backend/app/policy/decisions.py backend/app/policy/engine.py backend/app/policy/rules.py backend/app/response/__init__.py backend/app/response/composer.py backend/app/router/__init__.py backend/app/router/llm.py backend/app/router/prompt.py backend/app/router/schemas.py backend/app/router/telemetry.py backend/app/router/validator.py backend/app/slots/__init__.py backend/app/slots/manager.py backend/app/state/__init__.py backend/app/state/models.py backend/app/state/repository.py backend/app/state/service.py backend/app/voice/__init__.py backend/app/voice/config.py backend/app/voice/interfaces.py backend/app/voice/normalization.py backend/app/voice/pipeline.py backend/app/voice/providers.py backend/app/voice/routes.py backend/tests/conftest.py backend/tests/integration/test_api.py backend/tests/integration/test_conversation.py backend/tests/integration/test_eval_preflight.py backend/tests/integration/test_llm_transport.py backend/tests/integration/test_voice.py backend/tests/integration/test_voice_quality.py backend/tests/unit/test_actions.py backend/tests/unit/test_compiler.py backend/tests/unit/test_contracts.py backend/tests/unit/test_dataset.py backend/tests/unit/test_experiment_gates.py backend/tests/unit/test_golden.py backend/tests/unit/test_latency_profile.py backend/tests/unit/test_policy.py backend/tests/unit/test_report.py backend/tests/unit/test_speech_normalization.py data/compiled_catalog.json docker-compose.yml docs/VOICE_QUALITY.md docs/customer-mobile.png docs/customer.png docs/supervisor.png evaluation/BASELINE_NOTES.md evaluation/CACHE_AUDIT.md evaluation/__init__.py evaluation/b55_report.py evaluation/experiment.py evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/README.kz.md evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/README.md evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/README.ru.md evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/actions.json evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/dev_utterances.json evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/dialogs_sample.json evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/evaluate.py evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/knowledge_base.json evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/mock_backend.json evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/scenarios.json evaluation/experiments/b55-20260923/L0/case_2/voice_router_dataset/slots.json evaluation/experiments/b55-20260923/L0/execution.json evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/__init__.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/catalog/__init__.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/catalog/boundaries.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/catalog/compiler.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/catalog/loader.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/config/__init__.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/config/settings.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/main.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/policy/__init__.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/policy/decisions.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/policy/engine.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/policy/rules.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/router/__init__.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/router/llm.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/router/prompt.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/router/schemas.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/app/router/validator.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/conftest.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/integration/test_api.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/integration/test_eval_preflight.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/integration/test_llm_transport.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/unit/test_compiler.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/unit/test_contracts.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/unit/test_dataset.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/unit/test_policy.py evaluation/experiments/b55-20260923/L0/halyk-callai/backend/tests/unit/test_report.py evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/__init__.py evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/experiment.py evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/recover_report.py evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/report.py evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/20260923T100713_410096Z/baseline.json evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/20260923T100713_410096Z/baseline.md evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/20260923T100713_410096Z/latency_profile.json evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/20260923T100713_410096Z/latency_profile.md evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/20260923T100713_410096Z/metadata.json evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/20260923T100713_410096Z/official_stderr.txt evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/20260923T100713_410096Z/official_stdout.txt evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/20260923T100713_410096Z/predictions.json evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/baseline.json evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/baseline.md evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/boundary_probe_20260923T101507_608639Z/result.json evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/results/last_attempt.json evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/run_boundary_probe.py evaluation/experiments/b55-20260923/L0/halyk-callai/evaluation/run_official.py evaluation/experiments/b55-20260923/L0/halyk-callai/pyproject.toml evaluation/experiments/b55-20260923/L0/halyk-callai/requirements.lock evaluation/experiments/b55-20260923/L0/halyk-callai/scripts/run.ps1 evaluation/experiments/b55-20260923/L0/halyk-callai/scripts/smoke_test.py evaluation/experiments/b55-20260923/L0/halyk-callai/scripts/validate_dataset.py evaluation/experiments/b55-20260923/L0/manifest.json evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/README.kz.md evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/README.md evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/README.ru.md evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/actions.json evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/dev_utterances.json evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/dialogs_sample.json evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/evaluate.py evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/knowledge_base.json evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/mock_backend.json evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/scenarios.json evaluation/experiments/b55-20260923/L1/case_2/voice_router_dataset/slots.json evaluation/experiments/b55-20260923/L1/execution.json evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/__init__.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/catalog/__init__.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/catalog/boundaries.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/catalog/compiler.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/catalog/loader.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/config/__init__.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/config/settings.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/main.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/policy/__init__.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/policy/decisions.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/policy/engine.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/policy/rules.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/router/__init__.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/router/llm.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/router/prompt.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/router/schemas.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/router/telemetry.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/app/router/validator.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/conftest.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/integration/test_api.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/integration/test_eval_preflight.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/integration/test_llm_transport.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/unit/test_compiler.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/unit/test_contracts.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/unit/test_dataset.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/unit/test_latency_profile.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/unit/test_policy.py evaluation/experiments/b55-20260923/L1/halyk-callai/backend/tests/unit/test_report.py evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/__init__.py evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/experiment.py evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/latency_profile.py evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/recover_report.py evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/report.py evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/20260923T101514_156514Z/baseline.json evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/20260923T101514_156514Z/baseline.md evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/20260923T101514_156514Z/latency_profile.json evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/20260923T101514_156514Z/latency_profile.md evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/20260923T101514_156514Z/metadata.json evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/20260923T101514_156514Z/official_stderr.txt evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/20260923T101514_156514Z/official_stdout.txt evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/20260923T101514_156514Z/predictions.json evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/baseline.json evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/baseline.md evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/boundary_probe_20260923T103150_054292Z/result.json evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/results/last_attempt.json evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/run_boundary_probe.py evaluation/experiments/b55-20260923/L1/halyk-callai/evaluation/run_official.py evaluation/experiments/b55-20260923/L1/halyk-callai/pyproject.toml evaluation/experiments/b55-20260923/L1/halyk-callai/requirements.lock evaluation/experiments/b55-20260923/L1/halyk-callai/scripts/run.ps1 evaluation/experiments/b55-20260923/L1/halyk-callai/scripts/smoke_test.py evaluation/experiments/b55-20260923/L1/halyk-callai/scripts/validate_dataset.py evaluation/experiments/b55-20260923/L1/manifest.json evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/README.kz.md evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/README.md evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/README.ru.md evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/actions.json evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/dev_utterances.json evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/dialogs_sample.json evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/evaluate.py evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/knowledge_base.json evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/mock_backend.json evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/scenarios.json evaluation/experiments/b55-20260923/L2/case_2/voice_router_dataset/slots.json evaluation/experiments/b55-20260923/L2/execution.json evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/__init__.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/catalog/__init__.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/catalog/boundaries.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/catalog/compiler.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/catalog/loader.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/config/__init__.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/config/settings.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/main.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/policy/__init__.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/policy/decisions.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/policy/engine.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/policy/rules.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/router/__init__.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/router/llm.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/router/prompt.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/router/schemas.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/router/telemetry.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/app/router/validator.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/conftest.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/integration/test_api.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/integration/test_eval_preflight.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/integration/test_llm_transport.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/unit/test_compiler.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/unit/test_contracts.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/unit/test_dataset.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/unit/test_latency_profile.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/unit/test_policy.py evaluation/experiments/b55-20260923/L2/halyk-callai/backend/tests/unit/test_report.py evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/__init__.py evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/experiment.py evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/latency_profile.py evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/recover_report.py evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/report.py evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/baseline.json evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/baseline.md evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/latency_profile.json evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/latency_profile.md evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/metadata.json evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/official_stderr.txt evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/official_stdout.txt evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/predictions.json evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/prewarm.json evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/baseline.json evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/baseline.md evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/boundary_probe_20260923T103937_429319Z/result.json evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/results/last_attempt.json evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/run_boundary_probe.py evaluation/experiments/b55-20260923/L2/halyk-callai/evaluation/run_official.py evaluation/experiments/b55-20260923/L2/halyk-callai/pyproject.toml evaluation/experiments/b55-20260923/L2/halyk-callai/requirements.lock evaluation/experiments/b55-20260923/L2/halyk-callai/scripts/run.ps1 evaluation/experiments/b55-20260923/L2/halyk-callai/scripts/smoke_test.py evaluation/experiments/b55-20260923/L2/halyk-callai/scripts/validate_dataset.py evaluation/experiments/b55-20260923/L2/manifest.json evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/README.kz.md evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/README.md evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/README.ru.md evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/actions.json evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/dev_utterances.json evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/dialogs_sample.json evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/evaluate.py evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/knowledge_base.json evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/mock_backend.json evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/scenarios.json evaluation/experiments/b55-20260923/L3/case_2/voice_router_dataset/slots.json evaluation/experiments/b55-20260923/L3/execution.json evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/__init__.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/catalog/__init__.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/catalog/boundaries.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/catalog/compiler.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/catalog/loader.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/config/__init__.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/config/settings.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/main.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/policy/__init__.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/policy/decisions.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/policy/engine.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/policy/rules.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/router/__init__.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/router/llm.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/router/prompt.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/router/schemas.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/router/telemetry.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/app/router/validator.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/conftest.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/integration/test_api.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/integration/test_eval_preflight.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/integration/test_llm_transport.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/unit/test_compiler.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/unit/test_contracts.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/unit/test_dataset.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/unit/test_experiment_gates.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/unit/test_latency_profile.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/unit/test_policy.py evaluation/experiments/b55-20260923/L3/halyk-callai/backend/tests/unit/test_report.py evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/__init__.py evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/b55_report.py evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/experiment.py evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/latency_profile.py evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/recover_report.py evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/report.py evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/20260923T103944_898985Z/baseline.json evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/20260923T103944_898985Z/baseline.md evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/20260923T103944_898985Z/metadata.json evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/20260923T103944_898985Z/official_stderr.txt evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/20260923T103944_898985Z/official_stdout.txt evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/20260923T103944_898985Z/predictions.json evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/20260923T103944_898985Z/prewarm.json evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/baseline.json evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/baseline.md evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/boundary_probe_20260923T104457_210842Z/result.json evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/results/last_attempt.json evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/run_boundary_probe.py evaluation/experiments/b55-20260923/L3/halyk-callai/evaluation/run_official.py evaluation/experiments/b55-20260923/L3/halyk-callai/pyproject.toml evaluation/experiments/b55-20260923/L3/halyk-callai/requirements.lock evaluation/experiments/b55-20260923/L3/halyk-callai/scripts/run.ps1 evaluation/experiments/b55-20260923/L3/halyk-callai/scripts/smoke_test.py evaluation/experiments/b55-20260923/L3/halyk-callai/scripts/validate_dataset.py evaluation/experiments/b55-20260923/L3/manifest.json evaluation/experiments/b55-20260923/L4/STOPPED_BY_USER.json evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/README.kz.md evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/README.md evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/README.ru.md evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/actions.json evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/dev_utterances.json evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/dialogs_sample.json evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/evaluate.py evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/knowledge_base.json evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/mock_backend.json evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/scenarios.json evaluation/experiments/b55-20260923/L4/case_2/voice_router_dataset/slots.json evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/__init__.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/catalog/__init__.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/catalog/boundaries.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/catalog/compiler.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/catalog/loader.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/config/__init__.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/config/settings.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/main.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/policy/__init__.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/policy/decisions.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/policy/engine.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/policy/rules.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/router/__init__.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/router/llm.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/router/prompt.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/router/schemas.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/router/telemetry.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/app/router/validator.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/conftest.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/integration/test_api.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/integration/test_eval_preflight.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/integration/test_llm_transport.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/unit/test_compiler.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/unit/test_contracts.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/unit/test_dataset.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/unit/test_experiment_gates.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/unit/test_latency_profile.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/unit/test_policy.py evaluation/experiments/b55-20260923/L4/halyk-callai/backend/tests/unit/test_report.py evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/__init__.py evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/b55_report.py evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/experiment.py evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/latency_profile.py evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/recover_report.py evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/report.py evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/results/20260923T104503_658489Z/metadata.json evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/results/20260923T104503_658489Z/prewarm.json evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/run_boundary_probe.py evaluation/experiments/b55-20260923/L4/halyk-callai/evaluation/run_official.py evaluation/experiments/b55-20260923/L4/halyk-callai/pyproject.toml evaluation/experiments/b55-20260923/L4/halyk-callai/requirements.lock evaluation/experiments/b55-20260923/L4/halyk-callai/scripts/run.ps1 evaluation/experiments/b55-20260923/L4/halyk-callai/scripts/smoke_test.py evaluation/experiments/b55-20260923/L4/halyk-callai/scripts/validate_dataset.py evaluation/experiments/b55-20260923/L4/manifest.json evaluation/golden-verification.json evaluation/integration-final-astra/20260923T111919_964539Z/baseline.json evaluation/integration-final-astra/20260923T111919_964539Z/baseline.md evaluation/integration-final-astra/20260923T111919_964539Z/metadata.json evaluation/integration-final-astra/20260923T111919_964539Z/official_stderr.txt evaluation/integration-final-astra/20260923T111919_964539Z/official_stdout.txt evaluation/integration-final-astra/20260923T111919_964539Z/predictions.json evaluation/integration-final-astra/20260923T111919_964539Z/prewarm.json evaluation/integration-final-astra/baseline.json evaluation/integration-final-astra/baseline.md evaluation/integration-final-astra/last_attempt.json evaluation/integration-final/20260923T111356_273394Z/baseline.json evaluation/integration-final/20260923T111356_273394Z/baseline.md evaluation/integration-final/20260923T111356_273394Z/metadata.json evaluation/integration-final/20260923T111356_273394Z/official_stderr.txt evaluation/integration-final/20260923T111356_273394Z/official_stdout.txt evaluation/integration-final/20260923T111356_273394Z/predictions.json evaluation/integration-final/20260923T111356_273394Z/prewarm.json evaluation/integration-final/baseline.json evaluation/integration-final/baseline.md evaluation/integration-final/last_attempt.json evaluation/latency_profile.py evaluation/product-acceptance-luna-diagnostic/results.json evaluation/product-acceptance-luna-diagnostic/turns.json evaluation/product-acceptance/results.json evaluation/product-acceptance/turns.json evaluation/product-dataset-validation.json evaluation/product-tests.xml evaluation/recover_report.py evaluation/report.py evaluation/results/20260923T092823_112754Z/baseline.json evaluation/results/20260923T092823_112754Z/baseline.md evaluation/results/20260923T092823_112754Z/metadata.json evaluation/results/20260923T093441_722652Z/baseline.json evaluation/results/20260923T093441_722652Z/baseline.md evaluation/results/20260923T093441_722652Z/metadata.json evaluation/results/20260923T093551_540460Z/baseline.json evaluation/results/20260923T093551_540460Z/baseline.md evaluation/results/20260923T093551_540460Z/metadata.json evaluation/results/20260923T094057_604544Z/baseline.json evaluation/results/20260923T094057_604544Z/baseline.md evaluation/results/20260923T094057_604544Z/metadata.json evaluation/results/20260923T094057_604544Z/official_stderr.txt evaluation/results/20260923T094057_604544Z/official_stdout.txt evaluation/results/20260923T094057_604544Z/predictions.json evaluation/results/20260923T095132_960641Z/baseline.json evaluation/results/20260923T095132_960641Z/baseline.md evaluation/results/20260923T095132_960641Z/latency_profile.json evaluation/results/20260923T095132_960641Z/latency_profile.md evaluation/results/20260923T095132_960641Z/metadata.json evaluation/results/20260923T095132_960641Z/official_stderr.txt evaluation/results/20260923T095132_960641Z/official_stdout.txt evaluation/results/20260923T095132_960641Z/predictions.json evaluation/results/b55_report.json evaluation/results/b55_report.md evaluation/results/baseline.json evaluation/results/baseline.md evaluation/results/boundary_probe_20260923T100006_843729Z/result.json evaluation/results/boundary_probe_20260923T112357_236619Z/result.json evaluation/results/dataset_validation.json evaluation/results/last_attempt.json evaluation/results/latency_profile.json evaluation/results/latency_profile.md evaluation/results/live_http_route_smoke.json evaluation/run_boundary_probe.py evaluation/run_official.py evaluation/telephony/before.json evaluation/telephony/entrypoint-checks.json evaluation/telephony/integrity.json evaluation/telephony/tests-final.xml evaluation/telephony/tests-stage1.xml evaluation/telephony/web-smoke/kk-response.mp3 evaluation/telephony/web-smoke/results.json evaluation/telephony/web-smoke/ru-response.mp3 evaluation/voice-probe/kk-input.mp3 evaluation/voice-probe/kk-response.mp3 evaluation/voice-probe/results.json evaluation/voice-probe/ru-input.mp3 evaluation/voice-probe/ru-response.mp3 evaluation/voice-quality-before.json evaluation/voice-quality-integrity.json evaluation/voice-quality-playback.json evaluation/voice-quality-tests.xml evaluation/voice-time-fix/kk-office-marin.mp3 evaluation/voice-time-fix/normalization.json experimental/__init__.py experimental/asterisk/SETUP.md experimental/asterisk/STATUS.md experimental/asterisk/__init__.py experimental/asterisk/__main__.py experimental/asterisk/audio.py experimental/asterisk/client.py experimental/asterisk/config.py experimental/asterisk/deploy/.dockerignore experimental/asterisk/deploy/.gitattributes experimental/asterisk/deploy/Dockerfile experimental/asterisk/deploy/compose.yaml experimental/asterisk/deploy/config/asterisk.conf experimental/asterisk/deploy/config/extensions.conf experimental/asterisk/deploy/config/http.conf experimental/asterisk/deploy/config/logger.conf experimental/asterisk/deploy/config/manager.conf experimental/asterisk/deploy/config/modules.conf experimental/asterisk/deploy/fixtures/.gitkeep experimental/asterisk/deploy/start-asterisk.sh experimental/asterisk/protocol.py experimental/asterisk/run.py experimental/asterisk/tests/test_isolation.py experimental/asterisk/tests/test_pipeline_bridge.py experimental/asterisk/tests/test_protocol_audio.py frontend/app/globals.css frontend/app/layout.tsx frontend/app/page.tsx frontend/app/supervisor/page.tsx frontend/lib/api.ts frontend/lib/playback.mjs frontend/next-env.d.ts frontend/next.config.ts frontend/package-lock.json frontend/package.json frontend/postcss.config.mjs frontend/public/halyk-logo.png frontend/public/voice_samples/index.html frontend/public/voice_samples/kk_01_greeting.mp3 frontend/public/voice_samples/kk_01_mixed.mp3 frontend/public/voice_samples/kk_01_payment.mp3 frontend/public/voice_samples/kk_02_greeting.mp3 frontend/public/voice_samples/kk_02_mixed.mp3 frontend/public/voice_samples/kk_02_payment.mp3 frontend/public/voice_samples/kk_03_greeting.mp3 frontend/public/voice_samples/kk_03_mixed.mp3 frontend/public/voice_samples/kk_03_payment.mp3 frontend/public/voice_samples/manifest.json frontend/public/voice_samples/playback-check.html frontend/public/voice_samples/playback.mjs frontend/public/voice_samples/ru_01_greeting.mp3 frontend/public/voice_samples/ru_01_payment.mp3 frontend/public/voice_samples/ru_02_greeting.mp3 frontend/public/voice_samples/ru_02_payment.mp3 frontend/public/voice_samples/ru_03_greeting.mp3 frontend/public/voice_samples/ru_03_payment.mp3 frontend/scripts/build-playback-probe.mjs frontend/tests/playback.test.mjs frontend/tsconfig.json golden/L2/LOCK.json golden/L2/case_2/voice_router_dataset/README.kz.md golden/L2/case_2/voice_router_dataset/README.md golden/L2/case_2/voice_router_dataset/README.ru.md golden/L2/case_2/voice_router_dataset/actions.json golden/L2/case_2/voice_router_dataset/dev_utterances.json golden/L2/case_2/voice_router_dataset/dialogs_sample.json golden/L2/case_2/voice_router_dataset/evaluate.py golden/L2/case_2/voice_router_dataset/knowledge_base.json golden/L2/case_2/voice_router_dataset/mock_backend.json golden/L2/case_2/voice_router_dataset/scenarios.json golden/L2/case_2/voice_router_dataset/slots.json golden/L2/execution.json golden/L2/halyk-callai/backend/app/__init__.py golden/L2/halyk-callai/backend/app/catalog/__init__.py golden/L2/halyk-callai/backend/app/catalog/boundaries.py golden/L2/halyk-callai/backend/app/catalog/compiler.py golden/L2/halyk-callai/backend/app/catalog/loader.py golden/L2/halyk-callai/backend/app/config/__init__.py golden/L2/halyk-callai/backend/app/config/settings.py golden/L2/halyk-callai/backend/app/main.py golden/L2/halyk-callai/backend/app/policy/__init__.py golden/L2/halyk-callai/backend/app/policy/decisions.py golden/L2/halyk-callai/backend/app/policy/engine.py golden/L2/halyk-callai/backend/app/policy/rules.py golden/L2/halyk-callai/backend/app/router/__init__.py golden/L2/halyk-callai/backend/app/router/llm.py golden/L2/halyk-callai/backend/app/router/prompt.py golden/L2/halyk-callai/backend/app/router/schemas.py golden/L2/halyk-callai/backend/app/router/telemetry.py golden/L2/halyk-callai/backend/app/router/validator.py golden/L2/halyk-callai/backend/tests/conftest.py golden/L2/halyk-callai/backend/tests/integration/test_api.py golden/L2/halyk-callai/backend/tests/integration/test_eval_preflight.py golden/L2/halyk-callai/backend/tests/integration/test_llm_transport.py golden/L2/halyk-callai/backend/tests/unit/test_compiler.py golden/L2/halyk-callai/backend/tests/unit/test_contracts.py golden/L2/halyk-callai/backend/tests/unit/test_dataset.py golden/L2/halyk-callai/backend/tests/unit/test_latency_profile.py golden/L2/halyk-callai/backend/tests/unit/test_policy.py golden/L2/halyk-callai/backend/tests/unit/test_report.py golden/L2/halyk-callai/evaluation/__init__.py golden/L2/halyk-callai/evaluation/experiment.py golden/L2/halyk-callai/evaluation/latency_profile.py golden/L2/halyk-callai/evaluation/recover_report.py golden/L2/halyk-callai/evaluation/report.py golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/baseline.json golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/baseline.md golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/latency_profile.json golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/latency_profile.md golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/metadata.json golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/official_stderr.txt golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/official_stdout.txt golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/predictions.json golden/L2/halyk-callai/evaluation/results/20260923T103158_556163Z/prewarm.json golden/L2/halyk-callai/evaluation/results/baseline.json golden/L2/halyk-callai/evaluation/results/baseline.md golden/L2/halyk-callai/evaluation/results/boundary_probe_20260923T103937_429319Z/result.json golden/L2/halyk-callai/evaluation/results/last_attempt.json golden/L2/halyk-callai/evaluation/run_boundary_probe.py golden/L2/halyk-callai/evaluation/run_official.py golden/L2/halyk-callai/pyproject.toml golden/L2/halyk-callai/requirements.lock golden/L2/halyk-callai/scripts/run.ps1 golden/L2/halyk-callai/scripts/smoke_test.py golden/L2/halyk-callai/scripts/validate_dataset.py golden/L2/manifest.json golden/L2/tests.xml pyproject.toml requirements.lock scripts/compare_voices.py scripts/live_acceptance.py scripts/prewarm_cache.py scripts/run.ps1 scripts/smoke_test.py scripts/validate_dataset.py scripts/voice_comparison.html scripts/voice_probe.py
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.