Картинки в запросе
Передача картинки модели ссылкой или файлом в кодировке base64, допустимые форматы и размеры, стоимость изображения во входе.
Передайте ссылку на картинку
Картинка идёт частью image_url в содержимом сообщения user, рядом с текстом. Содержимое тогда записывается массивом.
{
"model": "gpt-6-luna",
"messages": [{
"role": "user",
"content": [
{"type": "text", "text": "Что изображено на картинке?"},
{"type": "image_url", "image_url": {"url": "https://example.com/photo.png", "detail": "low"}}
]
}],
"max_tokens": 300
}
Ссылка должна быть открытой, потому что картинку скачивает вендор модели, а epicai её не загружает. Если вендор не смог получить файл, придёт 400 invalid_image. Необязательное поле detail принимает low, high и auto и передаётся вендору как есть. В одном сообщении допускается несколько частей с картинками.
Передайте файл с диска
- Прочитайте файл и закодируйте его в base64.
- Составьте строку
data:image/png;base64,…. Допустимые типы —png,jpeg,jpg,gifиwebp. - Поставьте эту строку в поле
urlвместо ссылки.
import base64
import os
from openai import OpenAI
client = OpenAI(
base_url="https://epicai.ru/v1",
api_key=os.environ["EPICAI_API_KEY"],
)
with open("photo.png", "rb") as f:
encoded = base64.b64encode(f.read()).decode("ascii")
reply = client.chat.completions.create(
model="gpt-6-luna",
messages=[{
"role": "user",
"content": [
{"type": "text", "text": "Что изображено на картинке?"},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{encoded}"}},
],
}],
max_tokens=300,
)
print(reply.choices[0].message.content)
Выберите модель, которая видит картинки
Картинки принимают модели с признаком capabilities.vision в списке. Остальные отвечают 400 unsupported_content с текстом «Модель не принимает изображения», причём вендору запрос в этом случае не уходит и токены не списываются. Части сообщения других видов (аудио, файлы) тоже дают 400 unsupported_content. Картинки в ответе текстовой модели не появляются: изображения создают отдельные модели через задачи с картинками.
Размер и стоимость
Предел по размеру относится ко всему телу запроса и составляет 12 МБ. Base64 раздувает файл примерно на треть, так что картинка до 9 МБ в запрос поместится, а больше нет, и тогда придёт 413 request_too_large. У вендоров есть и собственные ограничения на размер и число картинок, их отказы приходят как 400 invalid_image.
Стоимость картинки входит в токены входа, число которых сообщает вендор. Перед запросом epicai резервирует под каждую картинку по 2000 токенов модели, а после ответа снимает резерв и списывает сумму по фактическому usage.
Не нашли ответ?
Посмотрите частые вопросы или напишите в поддержку.