Почему AI-бот может ответить дважды: что проверить до запуска

В нашем собственном продукте повтор после сбоя охватывал запрос к модели, сохранение ответа и отправку уведомления. Ошибка на последнем шаге могла запустить всё заново. Риск нашли на ревью до релиза.

Кирилл Школенко, основатель ИОАНН

6 мин чтения

Повтор захватил весь шаг

Пользователь присылает текст. Модель готовит ответ, система сохраняет его и уведомляет человека. Если ответа от модели нет за 15 секунд или провайдер возвращает ошибку, код делает ещё одну попытку. На обычной проверке модель отвечала за две-три секунды, поэтому повтор не срабатывал.

Коллега заметил, что повтор срабатывает на любую ошибку внутри шага. Допустим, ответ уже сохранён и уведомление дошло до человека, но сервис уведомлений вернул ошибку. Система запускает шаг заново, получает другой ответ модели и снова пишет пользователю. Так одно сообщение может получить два ответа.

Это сценарий ошибки, обнаруженный при ревью. До пользователей он не дошёл. Повторный вызов также добавил бы расход на модель, но экономию от исправления мы не измеряли.

Что изменили

Повтор ограничили запросом к модели. Сохранение ответа и отправка уведомления больше в него не входят.

Ответ привязали к исходному сообщению. База не принимает второй ответ на то же сообщение. Это правило нужно и тогда, когда первая попытка ответила поздно, уже после начала второй.

Уведомление отправляется по уже сохранённому ответу. Если отправка не удалась, повторяем только её. Для повторной доставки не нужно снова обращаться к модели.

Что показала проверка перед релизом

Мы задерживали ответ модели дольше 15 секунд и намеренно ломали отправку уведомлений. В описанной проверке на каждое сообщение приходились один сохранённый ответ и одно уведомление.

Один автоматический повтор оставили. В описанном сценарии человек мог ждать ответа около 30 секунд. Данных о том, что людям удобнее - ждать повтор или сразу получать сообщение о неудаче, - у нас пока нет.

Проверка искусственными сбоями подтверждает поведение в этих условиях. Она не показывает частоту ошибок в работе с пользователями и не гарантирует единственное уведомление при любом сбое доставки.

Таблица для приёмки своей AI-функции

Следующие строки - предлагаемые проверки для вашего проекта. Мы не утверждаем, что все они выполнены в нашем эпизоде. До разработки согласуйте ожидаемое поведение и запишите результат каждой проверки.

Проверки задержек и сбоев
УсловиеОжидаемое поведениеЧто зафиксировать
Модель отвечает позже установленного срокаПоздний ответ не создаёт второй результат для того же сообщенияЧисло вызовов, сохранённых ответов и время ожидания
Провайдер возвращает ошибкуПовтор ограничен согласованным числом попыток; после отказа пользователь видит понятный статусПопытки, итоговый статус и расходы
Ответ сохранён, уведомление не отправленоПовтор доставки использует сохранённый ответ и не вызывает модель зановоСохранённый результат, вызовы модели и отправки
Уведомление доставлено, подтверждение доставки потеряноПроверена защита от дублей; ограничения канала явно описаныЧто увидел получатель и как система решила повторять отправку
Система повторно принимает сообщение с тем же идентификаторомДля того же идентификатора не появляется второй сохранённый ответИдентификатор сообщения и число результатов
Ответ модели получен, сохранение не удалосьСистема не сообщает об успехе до сохранения; порядок восстановления согласованСостояние записи и необходимость нового вызова модели
Все разрешённые попытки исчерпаныПользователь может понять, что произошло, и безопасно продолжитьСообщение в интерфейсе, возможность повторить и общий расход

Как включить проверки в первый релиз

Выберите один законченный сценарий. Опишите, что пользователь отправляет, где хранится результат и как он узнаёт об успехе или ошибке. Для каждого шага укажите, какие действия допустимо повторять.

Проверку сбоев проводите отдельно от проверки содержания ответа. Хороший текст модели не показывает, что запись сохранилась или действие выполнилось один раз. На приёмке нужны оба результата.

Для оценки расходов считайте все попытки, необходимые для завершения действия. Точные пределы ожидания, число повторов и допустимую стоимость согласуйте для своего сценария. Наши 15 секунд не являются универсальной настройкой.

Коротко

Повторять можно только те действия, для которых описано поведение при повторе.
Сбой после получения ответа проверяйте отдельно: сохранение и уведомление могут завершиться по-разному.
Зафиксируйте результат проверки и её условия. Проверка перед релизом не заменяет наблюдение после запуска.

Вопросы

Достаточно ли повторять только запрос к модели?

Это сужает границу повтора. Отдельно нужны правила сохранения результата и доставки уведомления. Если подтверждение доставки потеряно, повторная отправка может создать дубль; поведение зависит от используемого канала.

Нужно ли всегда ждать 15 секунд?

Нет. Это значение из конкретного эпизода. Для вашего сценария срок зависит от задержки модели, ожиданий пользователя и допустимого числа попыток.

Как понять, что исправление работает?

Воспроизведите согласованные сбои, сопоставьте вызовы, сохранённые результаты и сообщения пользователю. Запишите наблюдаемое поведение. После запуска отдельно проверяйте ошибки и расходы в реальном потоке.

Источник эпизода

Читать дальше

OpenAI Agent Builder закрывается: как перенести агента и ничего не сломать

OpenAI отключает Agent Builder 30 ноября 2026 года. Официальных путей два: Agents SDK, если агент живёт в вашем приложении, и ChatGPT Workspace Agents, если он нужен сотрудникам внутри ChatGPT. Экспорт в код есть, но граф процесса он не переносит. Поэтому миграция - это прежде всего проверка: собрать примеры реальных запросов до отключения и прогнать их на новой версии.

ИИ-агенты для бизнеса: какие задачи им поручать

ИИ-агенты для бизнеса полезны там, где нужно разбирать текст, выбирать следующий шаг и работать в нескольких системах. Начните с одного процесса: определите результат, разрешённые действия и способ проверки. Ниже - сценарии и таблица, с которыми можно отобрать задачу для пилота.

Сколько стоит ИИ-агент для бизнеса

Цена ИИ-агента складывается из разработки и расходов на работающий процесс. Тариф модели покрывает лишь часть затрат: остаются интеграции, повторные попытки, сопровождение и ручная проверка. Чтобы сравнить предложения, сначала определите результат, за который готовы платить.

Внедрение ИИ в бизнес: с чего начать пилот

Первый пилот должен ответить на конкретный вопрос: помогает ли система завершать выбранную задачу при допустимых расходах и ошибках? До разработки зафиксируйте исходный процесс и условия приёмки. Это даст основание для решения о запуске, доработке или остановке.

Есть AI-прототип? Обсудим один сценарий и условия его приёмки.