Короткий ответ
Сообщение Whizi не отправляется по одной из пяти причин: ещё генерируется другой ответ, вы отправили один и тот же текст дважды, вы превысили лимит запросов в минуту или в час, само сообщение не прошло проверку или истёк токен вашей сессии. Whizi называет причину в тексте ошибки, поэтому увиденная строка определяет решение.
| Что вы видите | Код | Почему | Что делать |
|---|---|---|---|
Generation already in progress. Please stop it or wait for it to finish. | 409 | На вашем аккаунте уже выполняется другой ответ | Остановите его или подождите |
Duplicate message ignored. Please wait for the current response to finish. | 409 | Такой же текст (и изображение) уже недавно отправлялись в этот чат | Дождитесь уже выполняющегося ответа |
Too many requests. Please wait and try again. | 429 | Запрос отклонён окном ограничения в минуту | Подождите, затем отправьте снова |
Hourly message limit reached. Please try again later. | 429 | Запрос отклонён часовым потолком чата | Подождите, затем отправьте снова |
A non-empty message is required. | 400 | Сообщение отсутствует или состоит только из пробелов | Введите текст |
This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time. | 400 | Одно сообщение превысило 100 000 символов | Разбейте его или спрашивайте по одному разделу за раз |
The model is temporarily rate-limited. Please retry shortly. | 429 | Провайдер модели ответил на подключение кодом 429 | Повторите попытку или смените модель |
Failed to send message. | нет, всплывающее уведомление сайта | Отправка не удалась, а бэкенд не передал сообщение | Проверьте соединение и отправьте снова |
Something went wrong. Please retry. | 500 | Любая необработанная ошибка на бэкенде | Отправьте снова, при повторении сообщите об этом |
Invalid or expired session token. | 401 | Проверка токена не прошла | Обновите страницу и войдите заново |
Отклонения по лимиту частоты отменяются, поэтому отклонённый запрос никогда не списывает сообщение с вашего лимита.
Ничего не происходит при нажатии Enter
Если Enter вообще ничего не делает, значит ещё генерируется ответ. Поле ввода намеренно игнорирует Enter, пока ответ формируется, так что это не пропущенное нажатие. Shift и Enter по прежнему вставляют перенос строки.
Whizi выполняет одну генерацию на аккаунт одновременно, что обеспечивается пользовательской блокировкой, поэтому два устройства никогда не могут генерировать одновременно для одного аккаунта. Вторая попытка отклоняется с текстом Generation already in progress. Please stop it or wait for it to finish., HTTP 409, код generation_in_progress. Та же строка возвращается, когда координатор генерации сообщает о конфликте в момент подключения.
Отправка одинакового текста дважды возвращает Duplicate message ignored. Please wait for the current response to finish., HTTP 409, код duplicate_message. Это срабатывает, когда такой же текст сообщения (и изображение) уже недавно отправлялись в этот разговор, что и происходит при двойном клике или нетерпеливом повторном Enter.
Решение в обоих случаях одинаковое: остановите выполняющийся ответ или дождитесь его завершения. Остановка обрабатывается на сервере. Координатор отменяет чтение у провайдера, сохраняет весь пришедший текст, снимает блокировку и возвращает недоставленный ход. Если блокировка каким то образом остаётся висеть, она восстанавливается сама: блокировку можно перехватить, как только её владелец признан осиротевшим или зависшим, а просроченные блокировки удаляются по расписанию.
Если после остановки образуется пропуск, в пузыре ассистента появляется Generation stopped., это текст, который сохраняется, когда генерация остановлена и частичный текст не был захвачен. Generation stopped, but it could not be saved. означает, что остановка прошла успешно, но сохранить частичный ответ не удалось.
Сообщение отклоняется ещё до того, как его увидит модель
Это отклонения проверки HTTP 400, возникающие до того, как что либо доходит до модели. Наверх ничего не отправлялось.
| Сообщение | Код | Условие |
|---|---|---|
A non-empty message is required. | empty_message | content отсутствует или состоит только из пробелов |
A model is required. | invalid_model | model отсутствует или пусто |
That model is not available for text chat. | unsupported_model | Идентификатор модели не соответствует текстовой модели в каталоге |
This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time. | message_too_long | Одно сообщение превысило 100 000 символов |
That system prompt is missing or over the 32,000 character limit. | invalid_system_prompt | Системный промпт отсутствует или превышает 32 000 символов |
That image reference is not valid. | invalid_image_url | Ссылка на изображение не является строкой либо длиннее 2048 символов |
This conversation has {count} messages, over the 100 message limit. | too_many_messages | Маршрут чата приложения отклонил историю, содержащую более 100 сообщений в одном запросе |
Лимит в 100 000 символов учитывает всё сообщение целиком, включая текст, извлечённый из вложения. О том, что делает Whizi, когда извлечённый текст вложения не помещается в бюджет сообщения, читайте в статье сбой загрузки файла.
Лимиты частоты, и одно отклонение, которое не про скорость
Обе строки лимита частоты 429 приведены в таблице выше, и обе несут код rate_limit_reached. Отклонённый запрос отменяется, поэтому 429 никогда не списывает сообщение с вашего лимита: дождитесь окончания окна и отправьте снова. Цифры окон и лимиты тарифов за ними описаны в статьях лимиты частоты и закончились кредиты.
Одно отклонение из того же семейства вообще не про скорость: Account sharing limit reached. Please use your own Whizi account., HTTP 403, код account_sharing_limit, срабатывает, когда за последние 24 часа на одном аккаунте замечено более 3 разных ключей устройства или сессии. Ожидание в минуту его не снимает.
Ответ начинается, а затем останавливается или так и не отображается
Как только соединение открыто, сбой может исходить либо от провайдера модели, либо от механизма, передающего поток. Строки различаются в зависимости от того, где произошёл сбой.
| Сообщение | Откуда оно берётся |
|---|---|
The model is temporarily rate-limited. Please retry shortly. | HTTP 429 provider_rate_limited, когда провайдер отвечает на подключение кодом 429 |
The model provider rejected the request. | Используется, когда тело ошибки провайдера не удаётся разобрать или оно разбирается в пустое сообщение |
The model provider returned an empty stream. | HTTP 502, вышестоящий сервис ответил OK, но без тела |
The model provider returned an error. | Событие ошибки внутри потока, когда провайдер присылает кадр ошибки без собственного сообщения |
The model stream was interrupted. | Событие ошибки внутри потока для любого другого сбоя посреди потока |
Generation failed mid-stream. | Генерация завершилась сбоем после того, как байты уже были отправлены |
Generation failed to start. | Внутренний резервный текст при сбое запуска координатора, который не несёт собственного сообщения |
The generation stream is unavailable. | Возникает, когда координатор не может вернуть поток для подключения |
Generation aborted before it started. | Возникает как AbortError, когда клиент отключается до завершения подключения к вышестоящему сервису |
Something went wrong. Please retry. | HTTP 500 internal_error, тело для любой необработанной ошибки бэкенда |
Sorry, there was an error generating the response. | Записывается в пузырь ассистента, когда поток завершается без итогового сообщения и без накопленного содержимого |
Любой сбой вышестоящего сервиса, кроме 429, это HTTP 502 provider_error с сообщением провайдера, обрезанным до 300 символов. На пути посреди потока внутриполосного события ошибки нет: соединение просто обрывается.
Одна из этих строк это скорее запись, чем сообщение. Generation aborted before it started. возникает как AbortError, когда клиент отключается до завершения подключения к вышестоящему сервису, и маршрут отвечает на этот случай кодом HTTP 408 с пустым телом, так что строка это то, что записывает сервер, а не то, что печатает браузер. В сетевой трассировке пустой 408 на маршруте generate означает, что запрос исчез до того, как была достигнута какая либо модель.
Под всем этим лежит общий обработчик: всё, что бэкенд не распознаёт, заканчивается как HTTP 500 internal_error с телом Something went wrong. Please retry. HTTP 500 не указывает причину. Отправьте снова один раз, а если повторится, обратитесь в поддержку.
Что делать: отправьте снова, а если повторится, переключитесь на другую модель в том же разговоре. Эти ошибки возникают выше по цепочке от Whizi, а не в вашем аккаунте или настройках.
Одно, что делать не обязательно, это держать вкладку открытой. Генерация выполняется в Durable Object на разговор, поэтому закрытие вкладки посреди потока не убивает ответ, и он всё равно сохраняется. Заново открытая вкладка или второе устройство могут подключиться к уже выполняющейся генерации. The generation stream is unavailable. возникает, когда координатор не может вернуть поток для подключения. Перезагрузите разговор и прочитайте всё, что было сохранено, вместо того чтобы ждать поток.
В режиме сравнения бок о бок строки для каждой стороны снова другие: The model did not respond. Please try again., когда ответ generate не OK и не содержит читаемой ошибки, Could not start a comparison chat., когда не удаётся создать базовый чат, и Something went wrong. в качестве последнего варианта. Последний вариант это краткая форма, без следующего за ней предложения о повторе, по чему её можно отличить от тела Something went wrong. Please retry. при ошибке 500.
У вас истекла сессия
Сбои авторизации выглядят как сбои отправки, потому что проявляются в момент отправки. Authentication required. это HTTP 401 unauthorized, срабатывает, когда запрос не несёт токен доступа. Invalid or expired session token. это тот же статус и код, когда проверка токена не прошла по любой причине: истёкший токен, неверная подпись, неверный издатель.
На стороне сайта вместо этого может появиться Failed to retrieve session token., которое сайт выбрасывает всякий раз, когда запрос токена возвращает пустоту перед вызовом списка чатов, загрузки чата, удаления, переименования или загрузки файла. У режима сравнения своя формулировка: Your session expired. Please refresh and try again.
Решение это обновление страницы, а затем повторный вход, если обновление не восстанавливает сессию. На аккаунте ничего не теряется, и сообщение не было отправлено.
Это не сбой, это лимит
Отказ по лимиту и отказ по тарифу не являются сбоями отправки. Запрос сформирован правильно, и Whizi отклонил его намеренно, так что в поле ввода исправлять нечего: отказы по лимиту описаны в статье закончились кредиты, а модель, показанная как заблокированная, описана в статье устранение неполадок.
Промпт, отклонённый проверкой содержимого, тоже не является сбоем отправки. Проверка выполняется до резервирования какой либо квоты и до вызова провайдера, поэтому отклонённый промпт не стоит ничего из лимита, а отказ приходит как HTTP 400 с причиной, показанной в чате.
Вместо этого не удаётся редактирование отправленного сообщения
Редактирование промпта и повторная отправка это способ заново выполнить ход, поскольку у Whizi нет кнопки повторной генерации. У этого пути есть свои два сбоя.
That message is no longer part of this conversation. Reload and try again. это HTTP 404 replace_anchor_not_found, возвращается, когда редактирование указывает идентификатор сообщения, которого больше нет в разговоре. Перезагрузите разговор. У клиента есть идентификатор сообщения, которого у сервера уже нет.
Conversation not found. это HTTP 404 not_found, возвращается, когда идентификатор разговора не существует или не принадлежит вызывающему. Это же появляется на маршруте generate, а также на маршрутах чтения, удаления, переименования, добавления сообщения, переключения версии и общего доступа.
- Бездействие Enter означает, что ещё генерируется ответ, а не пропущенное нажатие
- Одна генерация выполняется на аккаунт одновременно, на всех ваших устройствах
- Повторная отправка игнорируется намеренно, с кодом 409 и сообщением об этом
- У чата есть лимит в минуту и в час, который не снимает ни один тариф
- Запрос, отклонённый по лимиту частоты, не стоит ничего из вашего лимита
- Одно сообщение ограничено 100 000 символами
- Ошибки провайдера исправляются повторной отправкой или сменой модели, а не настройками
- Закрытие вкладки посреди ответа не убивает ответ
- Ошибки авторизации исправляются обновлением страницы и повторным входом
Частые вопросы
Что означает "Generation already in progress. Please stop it or wait for it to finish."?
Остановите выполняющийся ответ или дождитесь его завершения, затем отправьте снова. Отказ это HTTP 409 с кодом generation_in_progress, он также появляется, когда генерация выполняется с другого устройства на том же аккаунте. Остановка обрабатывается на сервере: частичный ответ сохраняется, блокировка снимается, недоставленный ход возвращается.
Мой ответ остановился на середине. С меня списали лимит?
Сбой посреди потока обрывает соединение без внутриполосного события ошибки, а весь текст, пришедший до обрыва, сохраняется. Если вы сами останавливаете генерацию, сервер отменяет чтение у провайдера, сохраняет частичный ответ и возвращает недоставленный ход. При повторяющемся сбое провайдера переключитесь на другую модель в том же разговоре, поскольку ошибка возникает выше по цепочке от Whizi. Если вы получаете HTTP 500 с текстом "Something went wrong. Please retry.", это общее тело для необработанной ошибки бэкенда, а не проблема модели, так что отправьте снова один раз и сообщите об этом, если повторится.
Отменяет ли закрытие вкладки мой ответ?
Нет, за исключением одного узкого окна в самом начале. Если клиент отключается до завершения подключения к вышестоящему сервису, сервер записывает "Generation aborted before it started." и отвечает кодом HTTP 408 с пустым телом, поэтому такой запрос выглядит так, будто вообще ничего не вернул. После этого момента ответ переживает клиента, потому что генерация выполняется в Durable Object на разговор и ответ всё равно сохраняется. "The generation stream is unavailable." возникает, когда координатор не может вернуть поток для подключения, а перезагрузка разговора показывает всё, что было сохранено.
Whizi говорит, что моё сообщение превышает лимит в 100 000 символов. Что теперь?
Одно сообщение ограничено 100 000 символами, и отказ это HTTP 400, код message_too_long. Подсчёт охватывает всё сообщение целиком, включая текст, извлечённый из вложения. Спрашивайте по одному разделу за раз или прикрепите файл покороче. Когда извлечённый текст вложения не помещается в бюджет сообщения, Whizi обрезает его вместо отказа и предупреждает, что была отправлена только первая часть.