Whizi отклонил или не смог загрузить файл

Краткий ответ

Whizi ограничивает одно вложение до 10 МБ, а все вложения в одном запросе вместе взятые до 20 МБ, и текст ошибки указывает, какой уровень отклонил файл. Бэкенд принимает до 4 вложений на один запрос, и только в последнем сообщении пользователя, тогда как композер на сайте позволяет подготовить до 6 файлов. Вложения не расходуют кредиты.

Короткий ответ

Whizi ограничивает одно вложение до 10 МБ, а все вложения в одном запросе, вместе взятые, до 20 МБ, и текст ошибки указывает, какой уровень отклонил файл.

Все лимиты в одном месте:

ЛимитЗначениеГде применяется
Одно вложение10 МБЛюбой файл, прикреплённый к сообщению чата
Все вложения в одном запросе20 МБЗапрос целиком
Вложений на один запрос4Проверяется бэкендом, только в последнем сообщении пользователя
Файлов, подготовленных в композере6Композер на сайте
Прямая загрузка изображения8 МБМаршрут загрузки изображений
Загрузок изображений в минуту10На аккаунт, за минуту UTC
Загрузок изображений в день60На аккаунт, за сутки UTC
Закреплённый файл проекта10 МБ, 10 файловНа один проект
Текст в одном сообщении чата100,000 символовВключает текст, извлечённый из ваших файлов

Вложения не расходуют кредиты, поэтому отклонённая загрузка ничего вам не стоит, как и успешная.

Файл слишком большой

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

СообщениеHTTP кодПричина
File {name} exceeds 10MB limit. Please upload a smaller file.нет, всплывающее уведомление на сайтеВы выбрали один файл больше 10 МБ через кнопку прикрепления
One or more files exceed the 10MB size limit. Please upload smaller files.нет, всплывающее уведомление на сайтеВы перетащили файлы, и хотя бы один из них больше 10 МБ
Attachments must be 10 MB or smaller.413 attachment_too_largeБэкенд отклонил файл, проверив сначала заявленную длину, а затем реальные байты
Attachments are limited to 20 MB per prompt.413 attachments_too_largeКаждый файл меньше 10 МБ, но в сумме они превышают 20 МБ

{name} в первых двух сообщениях заменяется на имя вашего файла.

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

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

У изображений, загруженных напрямую, свой, более низкий лимит: Image is too large. Please upload an image under 8 MB. соответствует HTTP 413 upload_too_large. Проверка срабатывает дважды: сначала по заявленному Content-Length, превышающему лимит более чем вдвое, а затем по реальному размеру файла в 8 МиБ, так что неверно указанная длина будет замечена в любом случае. Экспортируйте изображение заново в меньшем размере или с более низким разрешением.

Для закреплённых файлов проекта лимит тоже 10 МБ, со своими сообщениями: {name} is over the 10 MB limit. как всплывающее уведомление на сайте и Project files must be 10 MB or smaller. как HTTP 413 project_file_too_large.

Тип файла не поддерживается

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

СообщениеHTTP кодЧто принимается
Choose an image, PDF, text, Markdown, CSV, or JSON file.415 unsupported_attachment_typeВложения в чате: JPEG, PNG, WebP, GIF, PDF, TXT, Markdown, CSV, JSON
Unsupported image type. Please upload a JPG, PNG, WebP, or GIF.400 unsupported_image_typeМаршрут загрузки изображений: image/jpeg, image/png, image/webp, image/gif
Choose a PDF, Word, Excel, text, Markdown, CSV, or JSON file.415 unsupported_project_file_typeЗакреплённые файлы проекта, из которых изображения намеренно исключены
Unsupported file type. Please upload an image, document (PDF, Word), spreadsheet (Excel), or text-based file.нет, всплывающее уведомление на сайтеКомпозер определяет тип выбранного файла
{name} is not a supported file type.нет, всплывающее уведомление на сайтеВыбранный файл проекта оказался изображением или иным неподдерживаемым типом

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

С GIF ситуация особая: это единственный случай, где два пути расходятся. Композер на сайте сразу отклоняет их с сообщением GIF files are not supported. Please upload a PNG or JPEG image., тогда как маршрут загрузки изображений в бэкенде принимает image/gif. На сайте конвертируйте GIF в кадр PNG или JPEG и загрузите его.

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

Файл не соответствует заявленному формату

После проверки списка типов выполняются ещё две проверки, и у каждой своё сообщение.

The file extension does not match its content type. соответствует HTTP 415, с кодом attachment_extension_mismatch для вложения в чате и project_file_extension_mismatch для файла проекта. Срабатывает, когда расширение в имени файла не совпадает с переданным типом содержимого.

The selected file does not match its declared format. соответствует HTTP 415, с кодом invalid_attachment для вложения в чате и invalid_project_file для файла проекта. Это проверка сигнатуры: считываются первые байты файла и сравниваются с заявленным MIME типом, поэтому файл, который просто переименовали, а не конвертировали, будет пойман именно здесь.

Обычная причина: переименование файла. Смена report.txt на report.pdf не превращает его в PDF, и именно эта проверка это замечает. Откройте файл в его родном приложении и экспортируйте или сохраните в нужном формате, а затем загрузите результат.

Слишком много файлов или слишком много загрузок

Лимиты по количеству тоже дают свои сообщения, и числа в них разные, потому что композер и бэкенд считают разные вещи.

СообщениеHTTP кодПричина
You can only upload up to 6 files per message.нет, всплывающее уведомление на сайтеВыбор или перетаскивание файлов приведёт к превышению 6 файлов, подготовленных в композере
Message {n} may carry up to 4 valid attachments, and only on the final user message.400 invalid_attachmentsБольше 4 вложений в одном запросе, либо вложения в сообщении, которое не является последним от пользователя
Message {n} repeats an attachment.400 invalid_attachmentsОдин и тот же идентификатор вложения встречается дважды в одном сообщении
Projects hold up to 10 files. Remove one first.409 project_file_limit_reachedПопытка добавить 11-й закреплённый файл в проект
This project already holds 10 files. Remove one first.нет, всплывающее уведомление на сайтеПоказывается ещё до начала загрузки, когда список уже заполнен

Лимиты частоты отдельны от лимитов количества. Upload rate limit reached. Please wait a moment before uploading another image. соответствует HTTP 429 upload_rate_limited и срабатывает после более чем 10 загрузок изображений за одну минуту UTC. Ждать нужно минуту.

Daily upload limit reached. Please try again tomorrow. соответствует HTTP 429 upload_daily_limit_reached после 60 загрузок изображений за одни сутки UTC. Сброс происходит в полночь по UTC, а не по вашему местному времени. У загрузок файлов проекта свой потолок, 10 в минуту.

Загрузка прошла успешно, но файл не удалось прочитать

Когда извлечение содержимого из PDF, Word или таблицы завершается ошибкой, сама загрузка проходит успешно, а сбой происходит при чтении содержимого. У каждого формата своё сообщение.

СообщениеЧто обычно означает
Could not read {name}. The PDF may be corrupted or password-protected.Извлечение текста из PDF завершилось ошибкой. Частый случай, PDF защищён паролем
Could not read {name}. Please try re-saving the document.Извлечение из Word завершилось ошибкой
Could not read {name}. The spreadsheet may be corrupted.Извлечение из таблицы завершилось ошибкой
Could not read {name}. Older .xls files are not supported. Please re-save the file as .xlsx and upload it again.Устаревший бинарный файл Excel. Сообщение и есть решение
Could not read {name}.Извлечение обычного текста завершилось ошибкой
No readable text found in this file, so the model cannot see it.Закреплённый файл проекта, извлечение из которого не дало вообще ничего

Для PDF, защищённого паролем, снимите пароль в вашей программе для чтения PDF и загрузите разблокированную копию. Для старого .xls откройте его и сохраните как .xlsx. Отсканированный PDF, из которого ничего не извлекается, разобран в статье чат с PDF.

Файл также может быть успешно прочитан, а затем обрезан. Одно сообщение чата ограничено 100,000 символами, и извлечённый из файла текст учитывается в этом лимите. Когда извлечённый текст не помещается, вы увидите Your upload was too large, so only the first part of it was sent. Ask about a smaller section for full coverage., а само сообщение в месте обрезки содержит маркер [Attachment truncated: the upload was larger than one message can carry, so the content past this point was not included.]. Модель получает текст только до этого маркера и ничего после него, поэтому ответ, который выглядит полным, может быть основан на неполном документе.

Если всё сообщение целиком отклоняется, а не обрезается, бэкенд возвращает HTTP 400 message_too_long с текстом This message is {count} characters, over the 100,000 character limit. Attach a shorter file, or ask about one section at a time., где {count}: фактическое число символов в вашем сообщении.

Загрузка не удалась без очевидной причины

Несколько сообщений означают, что загрузка вообще не завершилась, а не то что была отклонена по существу.

СообщениеЧто означаетЧто делать
Failed to retrieve session token.Не удалось получить токен сессии до вызова загрузкиОбновите страницу и войдите снова, затем повторите попытку
Failed to upload image: {statusText}Ответ на загрузку изображения вернулся не OK, с добавленным статусным текстом сервераПовторите попытку. Если повторяется, статусный текст нужен поддержке
Image URL not returned by the server.Загрузка прошла успешно, но в ответе не было URL изображенияПовторите загрузку
Could not upload your attachments.Шаг загрузки завершился ошибкой в режиме сравнения бок о бокПовторите попытку или отправьте тот же запрос в обычном чате
Could not upload {name}.Загрузка файла проекта завершилась ошибкой без собственного сообщенияПовторите попытку
Invalid request и No file uploadedHTTP 400 invalid_upload и no_file_uploaded. Запрос не был multipart/form-data, данные формы не удалось разобрать, либо тело запроса не содержало поле файлаПовторите загрузку
Media could not be stored.Запись в хранилище не вернула объектПовторите один раз. Если сохраняется, обратитесь в поддержку
Stored media metadata was invalid.Не удалось прочитать обратно сохранённую запись медиаПовторите один раз. Если сохраняется, обратитесь в поддержку
Something went wrong. Please retry.HTTP 500. Любая необработанная ошибка бэкендаПовторите один раз, затем обратитесь в поддержку

Другая группа сообщений означает, что файл пропал, а не то что не смог загрузиться. One or more attachments could not be found. соответствует HTTP 404 attachment_not_found и возвращается, когда идентификатор вложения не указывает на сохранённый медиафайл, принадлежащий вам. Media not found. соответствует HTTP 404 media_not_found, а Media has expired. соответствует HTTP 404 media_expired и возвращается, когда сохранённый объект вышел за пределы срока хранения, который составляет до 30 дней. Старая переписка может по-прежнему хранить ссылку на файл, которого больше нет, поэтому загрузите его заново. Формулировки о хранении данных приведены в статье данные и конфиденциальность.

Чек-лист
  • Одно вложение ограничено 10 МБ, весь запрос ограничен 20 МБ
  • Композер подготавливает до 6 файлов; бэкенд принимает до 4 вложений на один запрос
  • Прямая загрузка изображений ограничена 8 МБ, 10 в минуту и 60 в сутки UTC
  • Переименование файла не конвертирует его: это ловит проверка сигнатуры
  • При перетаскивании неподдерживаемый тип файла проходит без сообщений, кнопка прикрепления сообщает об этом
  • Композер на сайте отклоняет GIF, поэтому конвертируйте в PNG или JPEG
  • Старые файлы .xls нужно пересохранить как .xlsx
  • PDF, защищённый паролем, нужно разблокировать, прежде чем его можно будет прочитать
  • Извлечённый из файла текст учитывается в лимите сообщения на 100,000 символов
  • Вложения не расходуют кредиты, поэтому неудачная загрузка ничего не стоит

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

Что означает "Attachments must be 10 MB or smaller."?

Прикреплённый вами файл превышает лимит в 10 МБ на файл, и бэкенд отклонил его с HTTP 413 и кодом attachment_too_large. Это сообщение относится только к лимиту на один файл. Четыре файла, каждый из которых меньше 10 МБ, но в сумме превышающие 20 МБ, вернут другое сообщение, "Attachments are limited to 20 MB per prompt.", с кодом attachments_too_large. Пятое вложение в том же запросе вернёт "Message {n} may carry up to 4 valid attachments, and only on the final user message." с кодом invalid_attachments.

Почему "The file extension does not match its content type." появляется на файле, который прекрасно открывается?

Проверка расширения выполняется раньше проверки сигнатуры, поэтому файл, у которого расширение не совпадает с заявленным типом содержимого, отклоняется с этим сообщением и даже не доходит до сравнения магических байтов, которое возвращает "The selected file does not match its declared format." Коды различаются в зависимости от пути загрузки: вложение в чате возвращает attachment_extension_mismatch и invalid_attachment, файл проекта возвращает project_file_extension_mismatch и invalid_project_file, так что код в сетевом трейсе покажет, какой путь загрузки отклонил файл.

Я перетащил файл в чат, и ничего не произошло, без всякой ошибки. Почему?

Наиболее вероятная причина: неподдерживаемый тип файла, а путь перетаскивания намеренно ничего об этом не сообщает. Перетащенный файл также никогда не появляется в списке подготовленных файлов, так что убирать нечего и на экране нет ничего, что объясняло бы молчание. Не каждое перетаскивание молчаливо: перетаскивание, которое привело бы к превышению 6 подготовленных файлов, всё же вызывает уведомление, "You can only upload up to 6 files per message.", на том же пути, где неподдерживаемый тип не вызывает ничего.

Как обойти "Upload rate limit reached. Please wait a moment before uploading another image."?

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

Мой PDF загрузился, но модель говорит, что не видит содержимого. Что пошло не так?

Загрузка прошла успешно, а вот шаг извлечения содержимого не удался. PDF, защищённый паролем или повреждённый, вызывает уведомление "Could not read {name}. The PDF may be corrupted or password-protected." PDF, закреплённый в проекте, извлечение из которого ничего не дало, вместо этого показывает "No readable text found in this file, so the model cannot see it." рядом с файлом в проекте. Для первого случая снимите пароль и загрузите файл заново. Второй случай, скан без текстового слоя, разобран на странице про чат с PDF.

Меняет ли переход на другой тариф что-то в загрузке файлов?

Меняет то, каким моделям вы можете отправить файл. Вложения не расходуют кредиты ни на одном тарифе, так что сама загрузка никогда не ограничивается вашим тарифом. Starter даёт доступ к четырём идентификаторам моделей, Pro добавляет к ним ещё 37, а для любой другой модели в каталоге нужен Powerhouse.