Интервью: как инженеры строят AI для гемблинга
Мы поговорили с техническим директором диалоговой платформы, которая обслуживает ведущие бренды казино. Разбираем стек технологий, задержки сети и способы изоляции данных без лишней теории.
О выборе стека: Go против Python
— Почему вы не пишите всю платформу на Питоне? Все же делают AI на Питоне.
— Питон ложится под нагрузкой сокетов. Когда у тебя вечером финал Лиги Чемпионов, прилетает 50 000 одновременных WebSocket-соединений. Мы держим сетевой транспорт и шлюзы на Go. Он потребляет копейки памяти и не тормозит на Garbage Collection. Python работает только глубоко под капотом — крутит векторный поиск и держит пайплайны обработки NLU в Докере.
— А сами модели как крутите?
— На железе. Мы берем NVIDIA H100 и разворачиваем квантованные Llama-3 или Mistral через vLLM. Это дает нам 80 токенов в секунду на поток. Вектора складываем в Qdrant, он написан на Rust, ищет контекст за 12 миллисекунд.
| Слой архитектуры | Выбор команды | Почему не альтернатива |
|---|---|---|
| API Gateway & Сокеты | Go (Golang) + gRPC | Node.js валится по памяти при 50k коннектах |
| Векторная база | Qdrant | PostgreSQL + pgvector слишком медленный |
| Инференс LLM | vLLM (PagedAttention) | HuggingFace TGI проигрывает в батчинге |
| Стейт сессий | Redis Cluster | Memcached не умеет в нужные структуры данных |
— Вы упомянули Qdrant. Как решаете проблему обновления правил? Если казино меняет бонусные условия, как быстро обновится база?
— Мгновенно через Webhook. Как только контент-менеджер нажимает «Сохранить» в CMS, срабатывает триггер. Специальный воркер берет новый текст, бьет его на чанки по 512 токенов, прогоняет через модель эмбеддингов (мы используем BGE-m3 для мультиязычности) и отправляет Upsert-запрос в Qdrant. Старые вектора удаляются. Весь процесс занимает секунды. Если игрок спросит про бонус через минуту после обновления на сайте, он получит актуальный ответ.
— Что происходит, когда модель не знает ответа? Как избежать галлюцинаций?
— Мы жестко настроили Threshold (порог отсечения) при векторном поиске. Если косинусное расстояние между вопросом и найденным куском документа ниже 0.82, система считает, что ответа в базе нет. В этот момент мы запрещаем LLM фантазировать. Срабатывает скрипт Fallback: бот извиняется и переводит диалог на свободного оператора саппорта, передавая ему краткую саммаризацию проблемы.
Борьба за миллисекунды: как уложиться в 800 мс
— Если бот думает дольше 2 секунд, игрок закрывает чат. Как вы ускоряете ответы?
— Спекулятивным кэшированием. Мы не ждем, пока игрок допишет фразу. Пока он тайпит, мы прогреваем контекст сессии в оперативной памяти. Запускаем параллельные запросы в ядро казино за балансом и в Qdrant за правилами. К моменту, когда пользователь жмет Enter, данные для RAG уже лежат в кэше. Мы режем задержку почти вдвое.
GDPR и утечки: почему OpenAI под запретом
— Юристы операторов дают добро на отправку диалогов в API OpenAI?
— Ни в коем случае. Любой крупный бренд работает в Air-Gapped режиме. Все крутится на собственных серверах в защищенном контуре без интернета. Никаких внешних API. Если данные европейского VIP-игрока утекут в публичное облако, штрафы убьют бизнес.
— Вы тестировали open-source модели меньшего размера для экономии ресурсов?
— Да, мы пробовали гонять Llama-3-8B вместо 70B-версии. Для простых задач, вроде проверки статуса верификации (KYC), маленькая модель справляется идеально и потребляет в 4 раза меньше VRAM. Мы построили роутер запросов: примитивные вопросы улетают в быстрый кластер с 8B моделями, а аналитические запросы про игровые стратегии маршрутизируются на тяжелые 70B модели. Это экономит нам десятки тысяч долларов на серверах ежемесячно.
Будущее автономных агентов
— Куда движется индустрия? Что будет через 3 года?
— Мы убьем классические сайты. Чат-бот превратится в автономного брокера. Вы пишете: «Закинь сотню на депозит и собери стол в покер с друзьями». Агент сам делает транзакцию, отправляет инвайты и открывает лобби. Грань между интерфейсом и саппортом исчезнет.
Безопасность интеграции
При проектировании высоконагруженных диалоговых сервисов для iGaming критически важно разделять stateless-слой инференса языковых моделей и stateful-слой сессионной памяти: кэширование контекста в распределенном Redis позволяет масштабировать вычислительные узлы без риска потери нити разговора.