Ниже три раздела. История проекта рассказывает, как ассистент вырос из чата на сайте в линию, которая отвечает сама, с цифрами по каждому месяцу. Страница о WhatsApp описывает, как линия устроена сейчас и как я построил бы её на официальном API. Техническое приложение написано для инженеров: из чего состоит бот и почему он устроен именно так.
AI-ассистент линии поддержки
Бот, который отвечает клиентам магазина с доставкой в WhatsApp и на сайте: первым в 77% разговоров, медиана ожидания 29 секунд, 22 проверки на каждый ответ модели.
Название магазина, домен, страна, город и ассортимент скрыты. Цифры сняты 19 октября 2026 года из журнала бота, базы шлюза мессенджера, истории git и данных платформы магазина.
Что внутри
- 29 января 2026 года — первый коммит и чат на сайте; 31 июля бот подключился к линии WhatsApp и семь недель только готовил черновики людям.
- 21 сентября первый ответ ушёл клиенту без человека; классы ответов открывались 15 волнами за 10 дней, каждая со своим флагом и замером до и после.
- С 5 по 19 октября бот ответил первым в 77% разговоров, медиана ожидания 29 секунд, а 41% разговоров прошли без человека.
- Без ответа остаются 3% разговоров; летом, когда отвечали только люди, таких было 16–18%.
- Все 879 сообщений бота ушли в ответ клиенту, самое позднее через 52 минуты после его сообщения.
- Сторож проверяет каждый ответ модели на 22 вида ошибок: найдена ошибка — одна переделка, потом заготовленная строка или человек.
- Каждое правило подсказки объяснено одной из 134 карточек; владелец магазина и диспетчер поставили 169 вердиктов, а тест не даёт поменять правило без карточки.
- С 28 сентября бот передаёт вопросы водителю и диспетчерам, 82 вопроса клиентов за три недели; с 30 сентября меняет заказ после «да» клиента.
- 426 коммитов, 207 автоматических выкатов, 3 928 тестов без доступа к сети, прогон набора 21 секунда.
- Отдельная страница о WhatsApp: как линия работает через свой шлюз и что изменил бы официальный WhatsApp Business Platform, с расчётом окна 24 часа по журналу.
Стек
- Python 3.12, FastAPI
- asyncpg, PostgreSQL 16
- Redis: рубильники, лимиты, идемпотентность
- OpenAI GPT-5.2: ответы, фото, сводки памяти
- OpenAI text-embedding-3-small, NumPy
- Whisper: голосовые сообщения
- Строгая JSON-схема ответа модели
- WebSocket, iframe, JavaScript без фреймворка
- WhatsApp: свой шлюз мессенджера
- Telegram: лента операторов
- Подписанные запросы между сервисами
- Docker Compose
- GitHub Actions, GitHub Container Registry
- nginx
- pytest
- gitleaks
- Claude Code
Читать подробно
- 01 · ~16 мин
Бизнес-логика
Как ассистент линии поддержки магазина вырос из чата на сайте: черновики для людей, ответы волнами с замером, вопросы водителю и изменения заказа.
Читать →
- 02 · ~14 мин
WhatsApp и официальный API
Как линия работает в WhatsApp через свой шлюз и как её построить на WhatsApp Business Platform: окно 24 часа, шаблоны, люди.
Читать →
- 03 · ~17 мин
Технический стек
Для инженеров: путь сообщения от шлюза до исхода, подписанные стыки, сторож ответа модели, волны с рубильниками, память и решения с ценой каждого.
Читать →