Автоматизация клиентского сервиса в медицине требует баланса между точностью и скоростью. Рассказываем, как для фармацевтической компании «Буарон» был разработан ИИ-помощник на базе Yandex Cloud Agent с использованием PHP и WordPress.
«Буарон» — мировой лидер в производстве гомеопатических препаратов, который в России представляет 130 монопрепаратов и 10 комплексных лекарств. На сайте компании ежегодно поступает более 300 000 запросов, что создаёт высокую нагрузку на поддержку. Пользователи часто не могут найти нужную информацию, а часть обращений теряется или требует ручной обработки.
Целью проекта стало автоматизировать обработку запросов, снизить нагрузку на специалистов и минимизировать пропущенные обращения. Для этого была выбрана платформа Yandex Cloud Agent — решение с поддержкой RAG (Retrieval-Augmented Generation) «из коробки».
Почему YandexGPT, а не OpenAI
Выбор YandexGPT обусловлен тремя ключевыми факторами. Во-первых, соблюдение закона 152-ФЗ: все данные, включая медицинские, должны храниться на серверах в России. Во-вторых, финансовая прозрачность — оплата в рублях по российскому счёту. В-третьих, высокая локализация: YandexGPT Pro лучше понимает русский язык и медицинский контекст.
Архитектура: PHP и WordPress вместо Python
Вместо Python и микросервисов была выбрана привычная стековая связка — WordPress и PHP 8. Встраивать отдельный Python-сервис ради одного эндпоинта было бы избыточно с точки зрения DevOps и поддержки.
Решение построено по следующей схеме:
- Frontend — ванильный JavaScript. Для отображения ответов используется библиотека marked.js, так как модель генерирует ответы в формате Markdown. Это позволяет корректно рендерить списки, заголовки и выделения.
- Backend — плагин для WordPress. Класс YandexAssistants.php выступает прокси для API, считает токены и ведёт логи.
- Yandex Cloud — агент с подключённой базой знаний через Search Index.
- CRM-интеграция — при необходимости бот предлагает оставить контактные данные для связи с менеджером.
Пять ключевых нюансов YandexGPT
1. RAG — это не автомат, а инструмент
Yandex использует FileSearchTool, но модель решает, использовать ли его. В медицине это опасно: бот может «выдумать» дозировку, опираясь на общие знания.
Чтобы избежать галлюцинаций, в системный промпт было добавлено строгое указание: «Ты ОБЯЗАН использовать инструмент поиска. Вся медицинская информация находится там. ОБРАЩАЙСЯ в поиск ВСЕГДА». Это заставило модель строго придерживаться базы знаний.
Если информация отсутствует в базе, бот не отвечает. Это требует постоянного обновления контента, но гарантирует безопасность.
2. Проблема чанкинга и мусора
Yandex разбивает файлы на чанки по 500–600 токенов без возможности настройки. Важный текст может быть разрезан, а в ответ попасть меню сайта или политика конфиденциальности.
Решение: препроцессор export_rag_split.php очищает HTML, а тексты дополнительно оптимизируются через Gemini — для лучшего попадания в чанки и дублирования ключевых терминов.
3. Контекст диалога через Linked List
Yandex использует механизм связанных списков, а не единый ID диалога. Чтобы сохранять контекст, пришлось вручную сохранять previous_response_id. Это позволяет продолжать беседу даже после перезагрузки страницы.
4. Агрессивные контент-фильтры
На проде бот начал блокировать безобидные вопросы с ответом «Я не могу ответить на этот вопрос» (причина: content_filter). Фильтры срабатывали на любые упоминания лекарств и дозировок.
Решение: позиционирование бота как «справочника», а не источника медицинских рекомендаций. При срабатывании фильтра — создание нового диалога, так как повтор запроса с previous_response_id не всегда помогал.
5. Лень вызывать внешние функции
Бот игнорировал вызов API для поиска гомеопатических центров. Пришлось жёстко прописать в промпте: при запросах «где купить» — обязательно использовать инструмент find_homeopathic_centers.
Бизнес-результаты
Внедрение бота дало ощутимые результаты:
- 70% запросов обрабатываются автоматически.
- Количество необработанных обращений сократилось вдвое.
- Ежемесячно закрывается более 500 глубоких обращений.
Заказчик экономит на лицензиях SaaS-платформ (от 5000 руб/мес). Оплата идёт напрямую Яндексу — по факту использования токенов. При текущей нагрузке расходы составляют всего несколько тысяч рублей в месяц.
Для защиты бюджета реализован ChatRateLimiter на PHP с хранением данных в MySQL. Система блокирует IP после 5 запросов в минуту, предотвращая аномальную нагрузку.
Планы на будущее
Сейчас точность ответов — 85–90%. Работа ведётся над улучшениями:
- Стриминг ответов через SSE — чтобы текст появлялся по мере генерации, а не после полной обработки (сейчас 2–6 секунд).
- Автоматизация обновления базы знаний — через Management API и Cron для синхронизации контента.
- Умный Rate Limiter — вместо блокировки по IP будет использоваться браузерный fingerprinting, чтобы не блокировать пользователей из одного офиса.
Создать RAG-бота на WordPress в 2026 году реально. Python и оркестраторы не обязательны. Главное — качественная подготовка данных, работа с промптами и готовность решать неочевидные технические проблемы.