AAYMA
RU
Войти

Halyk CallAI

AI-оператор страхового контакт-центра на RU/KK: принимает текст и голос, маршрутизирует обращение в один из 40 страховых сценариев, собирает поля…

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

О проекте

Команда: 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.md

Halyk CallAI

AI-оператор страхового контакт-центра на русском и казахском языках.

Halyk CallAI принимает текстовые и голосовые обращения, определяет страховой сценарий, собирает необходимые данные, выполняет контролируемые демонстрационные операции и сохраняет полный контекст диалога. Супервизор может проверить выбранный маршрут, источники, состояние диалога и выполненные действия.


1. О проекте

Клиент страховой компании может описать проблему обычными словами:

«Деньги списались, а полис не пришёл»

или:

«Хочу поменять email в полисе»

Ассистент должен не просто сгенерировать ответ, а:

  1. понять, какой страховой сценарий соответствует обращению;
  2. отличить похожие ситуации;
  3. извлечь необходимые данные;
  4. запросить недостающую информацию;
  5. проверить бизнес-правила;
  6. при необходимости запросить подтверждение;
  7. выполнить допустимое действие;
  8. сохранить результат и историю разговора.

Проект предназначен для двух основных ролей:

  • Клиент контакт-центра — получает ответ, уточнение или результат операции.
  • Супервизор — видит, как система обработала обращение, какие источники использовала и какие действия выполнила.

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
    ↓
Пользователь

Пошагово:

  1. Клиент вводит текст или записывает голосовую реплику.

  2. Если используется голос, аудио отправляется в STT.

  3. Распознанный текст поступает в /api/chat.

  4. Backend загружает:

    • историю;
    • текущую тему;
    • собранные поля;
    • результаты предыдущих действий.
  5. LLM предлагает:

    • сценарий;
    • извлечённые данные;
    • источники;
    • основания выбора.
  6. Валидатор проверяет структуру результата.

  7. Policy определяет допустимый следующий шаг.

  8. Система:

    • отвечает;
    • задаёт уточнение;
    • собирает поле;
    • предлагает операцию;
    • выполняет mock-action.
  9. Для защищённых операций требуется подтверждение.

  10. Ответ сохраняется в SQLite.

  11. При голосовом взаимодействии ответ передаётся в TTS.

  12. Супервизор получает журнал обработки.


5. Почему это не просто чат-бот

Halyk CallAI не передаёт LLM полный контроль над бизнес-операциями.

Архитектура разделяет:

AI interpretation
        ↓
Validation
        ↓
Business Policy
        ↓
Python Dispatcher
        ↓
Operation

LLM предлагает структурированное решение, но сам не выполняет операции.

Перед выполнением система отдельно проверяет:

  • идентификатор сценария;
  • структуру ответа;
  • обязательные поля;
  • источники;
  • состояние диалога;
  • необходимость подтверждения;
  • допустимость операции.

Такой подход позволяет использовать AI для понимания естественного языка, сохраняя контролируемое выполнение бизнес-действий.


6. Инструкция по использованию

Текстовый разговор

  1. Откройте:
http://127.0.0.1:3000
  1. Выберите RU или KK.

  2. Нажмите:

Новый разговор
  1. Введите сообщение:
Где находится ваш офис в Алматы?
  1. Отправьте сообщение.

  2. Если системе требуется дополнительная информация — ответьте следующим сообщением.

  3. Если появилась операция, требующая подтверждения, проверьте данные и нажмите:

Подтвердить
  1. Для просмотра технической трассировки откройте:
Пульт супервизора

Голосовой разговор

  1. Убедитесь, что интерфейс показывает:
Голос настроен
  1. Выберите RU или KK.

  2. Нажмите кнопку микрофона.

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

  4. Произнесите вопрос.

  5. Нажмите ■, чтобы закончить запись.

  6. Аудио будет отправлено на распознавание.

  7. Распознанный текст появится в чате.

  8. AI обработает обращение.

  9. Ответ будет озвучен.

Повторное нажатие микрофона может прервать текущее воспроизведение.

Web Voice работает отдельными законченными репликами, а не как непрерывный телефонный full-duplex разговор.


7. Технологический стек

КомпонентТехнологияНазначение
FrontendNext.js 15Web UI
UIReact 19Клиентский интерфейс
Язык frontendTypeScriptFrontend
СтилиTailwind CSS 4UI
BackendFastAPIAPI
Язык backendPython 3.12+Логика
ValidationPydanticКонтракты
ASGIUvicornЗапуск API
HTTPHTTPXAI API
LLMgpt-6-astraМаршрутизация и составление части ответов
LLM APIPOST /responsesInference
STTwhisper-1Распознавание речи
STT API/audio/transcriptionsVoice → text
TTSgpt-4o-mini-ttsСинтез речи
TTS API/audio/speechText → audio
ГолосаmarinRU / KK
DBSQLite (для пилота)Диалоги и состояние
DataJSON / JSONLDataset и события
Browser AudioMediaRecorder / MediaSourceГолосовой интерфейс
TelephonyAsterisk AudioSocket adapterЭкспериментальная IP-телефония
TestpytestBackend
TestNode.js test runnerFrontend/audio
ContainersDocker ComposeBackend / экспериментальная телефония
Deploy frontendVercelПубличный Web UI
Demo backend exposureCloudflare 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

  • порты:

    • 3000
    • 8000

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_KEYAI APIДа
OPENAI_BASE_URLСовместимый endpointНет
CALLAI_MODELLLMПо умолчанию gpt-6-astra
CALLAI_DATASET_PATHOverride datasetНет
CALLAI_DATABASESQLite pathНет
CALLAI_TIMEOUT_SECONDSLLM timeoutНет
CALLAI_VOICE_ENABLEDVoiceНет
CALLAI_VOICE_API_KEYОтдельный voice keyНет
CALLAI_VOICE_BASE_URLVoice API endpointНет
CALLAI_STT_MODELSTT modelНет
TTS_PROVIDERTTS providerНет
TTS_MODELTTS modelНет
TTS_VOICE_RURU voiceНет
TTS_VOICE_KKKK voiceНет
TTS_SPEEDTTS speedНет
TELEPHONY_ENABLEDExperimental telephonyНет

Телефония

По умолчанию:

TELEPHONY_ENABLED=false

Телефонный адаптер запускается отдельно и не является обязательной зависимостью Web Demo.


12. Быстрый запуск

Из корня:

powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\run.ps1 demo

Скрипт:

  1. создаёт .venv;
  2. устанавливает Python dependencies;
  3. выполняет npm ci, если требуется;
  4. собирает frontend;
  5. запускает FastAPI;
  6. запускает Next.js.

После запуска:

URLНазначение
http://127.0.0.1:3000Web UI
http://127.0.0.1:3000/supervisorSupervisor
http://127.0.0.1:8000/docsOpenAPI
http://127.0.0.1:8000/healthHealth
http://127.0.0.1:8000/readyReadiness

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 и произнесите:

Алматыдағы кеңсеңіз қайда орналасқан? Қазақша жауап беріңізші.

Система должна:

  1. распознать запрос;
  2. выбрать соответствующий сценарий;
  3. получить офис из knowledge base;
  4. ответить на казахском;
  5. воспроизвести TTS.

16. API

МетодEndpointНазначение
GET/healthHealth
GET/readyConfig 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/statusVoice config
POST/api/voice/transcribeSTT
POST/api/voice/speechTTS

Создание сессии

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
PolicyStructured resultСледующий шаг
DispatcherActionBackend 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

Результаты:

МетрикаРезультат
Primary104/104 — 100%
Full match104/104 — 100%
Multi-intent recall26/26 — 100%
RU52/52
KK45/45
Mixed7/7
Schema/API/system errors0 / 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

  1. Подключите GitHub repository.

  2. В Vercel выберите Root Directory:

frontend
  1. Framework:
Next.js
  1. Добавьте Environment Variable:
BACKEND_URL=https://<public-fastapi-url>
  1. Выполните 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 может измениться.

В таком случае необходимо:

  1. получить новый URL;
  2. изменить BACKEND_URL в Vercel;
  3. выполнить 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 000200
30%3 000300
40%4 000400

Формула:

обращения
× доля автоматизации
× минуты оператора
÷ 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-систем и пилот на реальных обращениях для оценки скорости, качества и стоимости обслуживания.

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

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

adilusrr-gif 10

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

  • 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 комментариев

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

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