← Все материалы

Гайд

Нейросеть не ответила. Повторить запрос или сменить модель?

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

Обновлено

Серверные модули и окно приложения соединены в рабочую цепочку

Ответ не появился за привычные несколько секунд. Самое простое решение — запустить запрос ещё раз. Но первая задача может всё ещё выполняться, и тогда приложение получит два результата, два расхода и, при неудачной логике, два одинаковых действия.

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

Промпт

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

Сначала определите, что произошло

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

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

Ожидание не всегда является сбоем

В Чатиуме startCompletion возвращает completionId, а результат приходит через onCompletionCompleted или onCompletionFailed. Закрытие вкладки и таймер в браузере не отменяют автоматически задачу на платформе.

Если приложение ещё не получило окончательное событие, называйте состояние честно: «ответ пока не получен». Не записывайте без оснований «модель ничего не сделала». Это особенно важно, если следующий этап меняет данные или отправляет сообщение.

Как устроить повтор

У исходного задания могут быть попытки 1, 2 и 3. Каждая хранит собственный ID, модель, версию исходника и состояние. Пользователь выбирает результат, который будет использован дальше; поздний ответ другой попытки остаётся в истории.

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

Причина Разумный следующий шаг
Неверный вход Исправить данные
Слишком большой материал Сократить или разделить с сохранением смысла
Временное ограничение Подождать и повторить в заданных пределах
Неподдерживаемая возможность Выбрать совместимый маршрут
Неясное состояние Проверить текущую попытку до нового действия

Смена модели требует проверки совместимости

Запасная модель должна принимать нужный тип данных и поддерживать необходимые параметры. Текстовая модель не становится заменой модели с изображениями только потому, что она доступна. Структурированный ответ, инструменты и пределы контекста также проверяются отдельно.

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

Повтор генерации и повтор действия — разные вещи

Получить ещё один черновик обычно допустимо. Вторично отправить одно и то же письмо клиенту — уже другое последствие. Разделяйте генерацию и применение результата: у подтверждённого действия должен быть собственный идентификатор, по которому приложение распознаёт повтор.

В учебном сценарии помощник готовит описание товара. Две попытки генерации могут дать два варианта. Но публикация выбранного варианта должна примениться один раз и к проверенной версии карточки. Поздняя генерация не должна автоматически менять опубликованный текст.

Что измерять после запуска

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

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

Частые вопросы

Можно ли повторять до первого успеха?

Без ограничений это может создать лишние расходы и нагрузку. Лучше задать предел, показать ошибку и дать человеку понятный выбор дальнейшего действия.

При ошибке расходов точно нет?

Не делайте такой вывод только по статусу интерфейса. Учитывайте фактические события расчёта; подробнее — в стоимости генерации.

Где посмотреть короткий пример асинхронного вызова?

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