Skip to main content
Модели с поддержкой vision принимают изображения вместе с текстом в одном запросе. Им можно дать картинку и попросить описать её, распознать текст (OCR), разобрать скриншот интерфейса, схему или график, прочитать таблицу с фото. Запрос отправляется на тот же адрес, что и в обычном чате: https://www.ruapi.ai/v1/chat/completions. Меняется только поле content: вместо строки в него передаётся массив частей — текстовые блоки {"type": "text"} и блоки с картинкой {"type": "image_url"}.
Берите модель, которая умеет vision: Claude (Sonnet / Opus), GPT, Gemini и GLM (GLM-5V-Turbo) принимают изображения. DeepSeek работает только с текстом — см. Модели DeepSeek.

Картинка по публичной ссылке

Самый простой случай — изображение уже лежит в интернете по прямому URL.
Python (OpenAI SDK)
Ссылка должна открываться напрямую, без авторизации: изображение скачивается во время обработки запроса. Если скачать его не удалось (ссылка устарела, файл удалён), запрос обычно завершается ошибкой 400, причина указана в error.message. Проверьте ссылку или передайте картинку в base64, как показано ниже.

Локальный файл через base64

Если картинки нет в открытом доступе (скриншот, фото с диска), её кодируют в base64 и передают как data URI вида data:image/jpeg;base64,....
Python (OpenAI SDK)
Для PNG поменяйте префикс на data:image/png;base64,, для WebP — data:image/webp;base64,. MIME-тип должен совпадать с реальным форматом файла.

Подводные камни

Картинка считается как входные токены, и чем выше разрешение, тем дороже запрос. Если детали не нужны — уменьшите изображение перед отправкой (например, до 1024–1568 px по длинной стороне).
Строка base64 примерно на треть больше самого файла и целиком уходит в тело запроса. Для тяжёлых картинок надёжнее публичная ссылка, чем многомегабайтный data URI — иначе можно упереться в лимит размера запроса.
Обычно это jpeg, png, webp и gif. Экзотические форматы (HEIC, TIFF, SVG) лучше заранее перекодировать в один из перечисленных.

Что дальше