В мае Anthropic вынесла tool use из beta. К июлю мы получили задачу: построить AI-агента для саппорта B2B-SaaS с 12 тысячами активных команд. Через шесть недель он отвечал на 41% обращений до конца. Делимся архитектурой и тем, что не сработало.
Что мы строили
Не «бот на сайте, который раздражает поп-апом». Полноценный агент в основном канале саппорта (in-app chat + email). Получает запрос, по необходимости ходит в API продукта, поднимает данные клиента, проверяет логи, либо отвечает, либо передаёт человеку с краткой сводкой контекста.
Архитектура
- Claude Sonnet (Haiku оказался слишком слабым на сложных запросах, Opus - переплата).
- Шесть инструментов: search_kb, get_account, get_recent_invoices, get_recent_errors, schedule_callback, escalate_to_human.
- RAG-слой над базой знаний и публичной документацией (около 1800 статей).
- Postgres для логирования каждого диалога и каждого вызова инструмента.
- Eval-набор из 200 размеченных диалогов, прогон при каждом изменении промптов.
Что мы не ожидали (положительно)
Sonnet оказался очень дисциплинированным в выборе инструмента: ложных вызовов get_account, когда вопрос общий, - единицы из тысяч. Это сильно экономит вызовы внутреннего API.
Агент сам по себе хорошо принимает решение «это для человека». При правильном промпте 23% сложных эскалаций он отдаёт на оператора с краткой сводкой - экономит оператору 1–2 минуты на восстановление контекста.
Что не сработало с первого раза
Описания инструментов
Первая итерация описаний была слишком краткой. Модель путала search_kb и get_recent_errors, делала лишние вызовы. После переписывания описаний с примерами в стиле «когда использовать / когда не использовать» - точность вызовов выросла на 18 пунктов.
Промпт без анти-паттернов
Без явных запретов модель регулярно «помогала» советами, которые не входили в её компетенцию (юридические, налоговые). Пришлось добавить явный список «не отвечай на это» с примерами.
Память между сессиями
Изначально каждая новая сессия - чистый контекст. Пользователи злились, что приходится повторять. Решили через короткое резюме предыдущих диалогов, которое подгружается в системный промпт.
Цифры через 6 недель в проде
- 41% обращений закрываются полностью без человека.
- 23% эскалируются, но с подготовленным контекстом - среднее время ответа оператора снизилось на 35%.
- CSAT на ботовых обращениях - 4.2 из 5 (на эскалированных - 4.5, на pure human до внедрения - 4.4).
- Стоимость одного обращения - около 4 центов в LLM + 1 цент в инфраструктуру.