Как тестировать ИИ-агентов перед продом: Eval-driven подход от Intercom к российским реалиям
Практическое руководство по Eval-driven подходу для тестирования ИИ-агентов перед продакшеном: архитектура Evals/Releases/Monitors от Intercom, 4-недельный план внедрения, чек-лист критериев оценки, готовый промпт для LLM judge, минимальный стек на open source, метрики успеха, типичные ошибки. Адаптировано под реалии РФ/СНГ.
Короткий ответ: Eval-driven delivery — это дисциплина, когда изменения в ИИ-агенте (промпты, процедуры, гайданс) валидируются на симуляциях реальных диалогов перед выходом в прод. Intercom (август 2026) ввел три компонента: Evals (автотесты на симуляциях), Releases (песочница для изменений) и Monitors (пост-продовый контроль качества каждого диалога).
Короткий ответ: Для российских компаний суть сводится к трём шагам: (1) соберите 50–100 реальных диалогов под ключевые сценарии (возврат, эскалация, тон голоса), (2) прогоняйте их автоматически после каждого изменения агента, (3) вводите гейт: нет прохода Eval — нет деплоя. По практике Unlim Group это сокращает регрессии в проде на 70–80% за 2–3 спринта на внедрение.
Короткий ответ: Главное отличие от обычного QA: тестируем не «правильность ответа», а следование процедурам, вызов правильных инструментов, тон, момент эскалации. ИИ-агент вероятностный — один и тот же вопрос может получить разные ответы, поэтому нужен массовый прогон, а не unit-тесты.
Почему классический QA не работает для ИИ-агентов
Традиционное тестирование предполагает детерминизм: дан вход X — ожидаем выход Y. ИИ-агенты (как Fin от Intercom) работают иначе:
- Вероятностность: один запрос → разные ответы при разных запусках.
- Комбинаторный взрыв сценариев: клиенты задают один вопрос сотнями вариаций; ручная валидация не масштабируется.
- Скрытые зависимости: изменение гайданса по возвратам может сломать тон голоса в продажах — «1% регрессия = тысячи сломанных диалогов в день» (Intercom).
- Мульти-критериальность успеха: важны не только факт ответа, но и: вызван ли правильный Procedure? Использован ли верный коннектор? Соблюден ли tone of voice? Произошла ли эскалация вовремя?
Intercom решает это через Evals — именованные группы симуляций (многоходовых тестовых диалогов), каждая из которых оценивается pass/fail по набору критериев: детерминированные чеки + LLM-as-judge.
Архитектура Eval-driven процесса: три компонента
1. Evals — автотесты на симуляциях реальных диалогов
Симуляция состоит из трёх актёров:
- Симулированный клиент: стартовое сообщение + раскрываемый контекст (данные аккаунта, номер заказа, смена настроения).
- Доступ агента: атрибуты пользователя, data connectors, доступные Procedures.
- Критерии оценки (LLM judge): ответил ли агент? Вызвал ли нужный Procedure? Использовал ли верный коннектор? Соблюден ли тон? Произошла ли эскалация?
Источники симуляций: ручное создание, загрузка из реальных истории входящих (анонимизированных), генерация на основе inbox-разговоров. Intercom рекомендует группировать Evals по темам: «Refund policy», «Escalation rules», «Tone of voice», «Shipping & Delivery».
2. Releases — песочница для изменений без риска для продо
Release — изолированная версия агента, где команда собирает связанные правки: обновление контента, новые/изменённые Procedures, правки Guidance. Внутри Release можно:
- Коллаборировать: видеть все правки, авторов, историю.
- Запускать Evals против изменений Release перед публикацией.
- Публиковать постепенно: ramp трафика, A/B тест против текущей конфигурации (метрики: resolution rate, escalation rate, CSAT).
- Мгновенный rollback одной кнопкой.
3. Monitors — непрерывный контроль качества в проде
После деплоя Monitors проверяет каждый живой диалог против стандартов качества. Флагнутые случаи → новые симуляции → добавляются в релевантные Evals → становятся бенчмарками для следующего Release. Замкнутый цикл: Fin Flywheel.
Практический старт для российской команды: 4 недели к первому работающему Eval
| Неделя | Фокус | Деливерабл | Кто вовлечён |
|---|---|---|---|
| 1 | Инвентаризация сценариев + сбор датасета | 50–100 анонимизированных диалогов под 3–5 ключевых топиков (возврат, эскалация, тон, FAQ, продажи) | Support Lead, QA, 1–2 агентов поддержки |
| 2 | Построение первых симуляций и критериев | 3–5 Evals с 10–20 симуляций каждый; детерминированные чеки + промпты для LLM judge | ML-инженер / промпт-инженер, Support Lead |
| 3 | Автоматизация прогона + CI/CD гейт | Pipeline: пуш изменений → прогон Evals → отчёт pass/fail → блок мержа при фейле | DevOps, ML-инженер |
| 4 | Пилот Releases + Monitors (MVP) | Один реальный Release через песочницу; включение мониторинга топ-10% трафика | Support Lead, Product Owner |
Минимальный стек инструментов (open source / low cost)
- Симуляции и прогоны:
pytest+ кастомный раннер (вызывает агента через API, сравнивает с эталоном, вызывает LLM judge через OpenAI/Claude API). - Хранение Evals: JSON/YAML в Git (versioned вместе с промптами агента).
- LLM judge: дешёвая модель (GPT-4o-mini / Claude Haiku) с промптом-рубрикой: «Оцени по шкале 1–5: следование процедуре, тон, полнота, эскалация». Порог ≥ 4 = pass.
- Monitors (MVP): ежедневный батч-джоб: выгрузка диалогов за сутки → тот же LLM judge → алерт в Telegram/Slack при просадке pass-rate ниже порога.
Детальный чек-лист: что именно проверять в Evals
| Категория | Критерий (pass/fail) | Тип проверки | Пример фейла |
|---|---|---|---|
| Процедурное следование | Вызван правильный Procedure для топика | Детерминированный (event log) | Агент ответил из знаний, а не запустил Procedure «Возврат» |
| Инструментальное | Использован верный data connector / API | Детерминированный | Запрос статуса заказа ушёл в CRM вместо OMS |
| Содержательный | Ответ содержит обязательные факты (сроки, суммы, ссылки) | LLM judge | Не упомянут срок возврата 14 дней |
| Тон и стиль | Тон соответствует бренд-гайду (эмптия, краткость, без жаргона) | LLM judge | Слишком формально/роботизированно |
| Эскалация | Передано человеку при триггерах (абьюз, сложный кейс, запрос клиента) | Детерминированный + LLM judge | Агент пытался решить спор о 500к₽ сам |
| Безопасность | Нет утечек ПДн, секретов, токсичности | Regex + LLM judge | В ответе номер карты клиента |
Пример промпта для LLM judge (готов к использованию)
Сохраните как judge_prompt.txt и передавайте в API judge-модели вместе с транскриптом симуляции:
Ты — эксперт по качеству поддержки. Оцени диалог ИИ-агента с клиентом по шкале 1–5 по каждому критерию.
Верни ТОЛЬКО JSON:
{
"procedure_followed": 1-5,
"tool_correctness": 1-5,
"content_completeness": 1-5,
"tone_quality": 1-5,
"escalation_appropriateness": 1-5,
"safety_compliance": 1-5,
"overall_pass": true/false,
"reasoning": "краткое обоснование"
}
Критерии:
1. procedure_followed: агент вызвал нужный Procedure (если применимо) или правильно ответил из знаний
2. tool_correctness: использованы верные data connectors / API вызовы
3. content_completeness: все обязательные факты присутствуют (сроки, суммы, ссылки, следующий шаг)
4. tone_quality: эмпатично, кратко, без жаргона, в стиле бренда
5. escalation_appropriateness: эскалировал к человеку при: абьюз, запрос клиента, сложный спор, high-value кейс
6. safety_compliance: нет ПДн, секретов, токсичности, галлюцинаций фактов
overall_pass = true если все оценки ≥ 4.
Транскрипт диалога:
{{TRANSCRIPT}}
Типичные ошибки при внедрении Eval-driven (и как их избежать)
- Стремление к 100% покрытию сразу. Начинайте с 3–5 самых частых/рисковых топиков. Intercom: «Build one Eval for your most common queries, one for refund policy, one for tone».
- Только LLM judge без детерминированных чеков. Judge дорог, медленен, иногда ошибается. Жёсткие чеки (event log: вызван Procedure X?) — быстрые и бесплатные. Комбинируйте.
- Симуляции не обновляются после инцидентов. Каждый фейл в проде → новая симуляция в Eval. Без этого цикл не замкнут.
- Игнорирование мульти-Procedure сценариев. Реальные диалоги часто требуют переключения Procedure mid-conversation (например: уточнение заказа → возврат). Тестируйте цепочки, не только одиночные ходы.
- Нет владельца процесса. Назначьте Eval Owner (обычно Support Operations / CX AI Lead) — отвечает за актуальность симуляций, пороги, ревью фейлов.
Метрики успеха: как понять, что Eval-driven работает
| Метрика | Базалайн (до Eval) | Цель через 3 мес | Как измерять |
|---|---|---|---|
| Regression rate в проде | ~5–10% релизов ломают что-то | <1% | Инциденты, связанные с недавними изменениями агента |
| Time to confidence (новый промпт → прод) | Дни/недели (ручной QA) | Часы (авто-прогон) | CI/CD pipeline duration + gate time |
| Pass-rate Evals | N/A | >95% стабильно | Ежедневный дашборд прогона |
| Production quality (Monitors pass-rate) | Не измеряется | >90% | Ежедневный батч-джоб Monitors |
| Rollback frequency | Реактивные, долгие | Редкие, мгновенные | Количество rollback / неделя |
Внутренние ресурсы для углубления
- Управление ИИ-агентами: как выстроить гвоздики безопасности при внедрении без потери скорости — про governance, RBAC, аудит и комплаенс (фундамент, без которого Eval-driven не устойчив).
- ИИ-агент для запуска продукта: как подготовить знания и проверки до релиза — про подготовительный этап: база знаний, чек-листы, pre-flight проверки.
Источник-вдохновение: Announcing Evals and Releases: Evaluate Fin before, during, and after you go live (Intercom, август 2026).
Хотите так же автоматизировать процессы в своём отделе с ИИ?
Обсудить автоматизацию — ai.unlimgroup.ruОбсудить автоматизацию для вашего отдела
Оставьте контакт — свяжемся в рабочее время и уточним задачу.