Файлы и картинки в chat/completions: вложения в публичном API
Обновлено: 22 августа 2026 г.
В чат-эндпоинт публичного API Genosai — POST /v1/chat/completions — добавлена полноценная работа с вложениями. Теперь текстовым моделям можно передавать не только текст, но и картинки, PDF, документы Word и файлы данных — прямо в одном запросе, в привычном OpenAI-формате.
Что нового
- Картинки работают с любыми ссылками. Раньше запрос с
image_urlмог падать с ошибкой 500/503: провайдер не мог скачать внешнюю ссылку и не принимал base64. Теперь каждая картинка автоматически перекладывается в хранилище Genosai и уходит модели гарантированно доступной ссылкой. Работают и публичные https-ссылки, иdata:-URI с base64. - Файлы в запросе. Новая часть контента
{"type": "file", "file": {"filename", "file_data" | "file_url"}}— как в OpenAI API. Поддерживаются:- PDF — текст извлекается на сервере и передаётся модели;
- DOCX (Word) — извлечение текста, включая таблицы и абзацы;
- текстовые форматы — txt, md, csv, tsv, json, xml, yaml, html;
- картинки-файлы (jpeg/png/webp/gif/bmp) — обрабатываются как обычные
image_urlдля vision-моделей.
- Честные ошибки. Ошибки провайдера больше не маскируются под
500 internal_error: если картинка недоступна или файл не поддерживается, придёт понятный400с кодом (image_unreachable,unsupported_file_type,file_too_large,file_no_text) и описанием, что поправить.
Пример: вопрос по PDF
from openai import OpenAI
import base64
client = OpenAI(base_url="https://api.genosai.io/v1", api_key="sdk_live_...")
pdf_b64 = base64.b64encode(open("contract.pdf", "rb").read()).decode()
r = client.chat.completions.create(
model="claude-sonnet-5",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Какая сумма и срок в договоре?"},
{"type": "file", "file": {
"filename": "contract.pdf",
"file_data": f"data:application/pdf;base64,{pdf_b64}",
}},
],
}],
)
print(r.choices[0].message.content)
Лимиты
| Параметр | Лимит |
|---|---|
| Картинок в запросе | до 10 |
| Файловых вложений в запросе | до 10 |
| Размер одного вложения | 25 МБ |
| Извлечённый текст одного файла | до 300 000 символов |
Сканированные PDF без текстового слоя отклоняются с кодом file_no_text — такие документы отправляйте постранично картинками в vision-модель. Какие модели поддерживают зрение — в GET /v1/models, поле text[].supports.vision.
Полная документация — на странице Public API.