Краткий ответ
- «Умеет видеть изображения» и «умеет создавать изображения» — это две разные возможности. Почти каждая современная чат-модель умеет читать изображения (обычно именно это означает «мультимодальная»), но не умеет генерировать изображения — для этого существует отдельный класс специализированных моделей генерации изображений.
- Только семейство моделей Gemini для работы с изображениями действительно возвращает текст и изображение из одного эндпоинта —
gemini-3-pro-image(Nano Banana Pro),gemini-3.1-flash-image(Nano Banana 2) и другие модели этого семейства чередуют текстовые и графические части в одном ответе. - Всё остальное — это оркестрация: чат-модель и отдельный эндпоинт генерации изображений (Images API), работающие вместе. Встроенный инструмент
image_generationOpenAI Responses не рекомендуется использовать в APIYI — его можно тарифицировать только по фиксированной ставке за вызов, что не является разумной моделью ценообразования, а его стабильность не гарантируется.
Сначала отделите входящие изображения от исходящих
Большая часть путаницы связана со словом «multimodal» — в контексте API по умолчанию оно относится к стороне входных данных, то есть «вы можете подать модели изображение», а не «модель может создать изображение для вас». Эти два сценария используют разные пулы моделей, разные эндпоинты и разную тарификацию:Четыре способа получить изображение
A. Автономный эндпоинт изображений — выбирайте его почти всегда
A. Автономный эндпоинт изображений — выбирайте его почти всегда
data[0].url; семейство GPT-Image возвращает data[0].b64_json.
Этот способ вообще не возвращает диалоговый текст — это не эндпоинт чата.Полная таблица моделей: Модели для генерации изображений и видео.
Отличия эндпоинтов, тайм-аутов и форматов вывода для отдельных моделей:
Примечания и рекомендации по Image API.B. Семейство моделей изображений Gemini — единственное, которое изначально возвращает текст и изображение вместе
B. Семейство моделей изображений Gemini — единственное, которое изначально возвращает текст и изображение вместе
gemini-3-pro-image, gemini-3.1-flash-image и другие модели) использует встроенный эндпоинт Gemini,
а candidates[0].content.parts представляет собой гетерогенный массив: он может содержать только часть с изображением или
чередовать текстовые части с частями изображений. Именно это семейство действительно позволяет получить и текст, и изображение за один вызов.Важно заранее учесть один нюанс: ни количество частей, ни их порядок не гарантируются. При тестировании наблюдались три варианта:parts[0] или parts[1] периодически будут приводить к ошибке. Правильный подход — отфильтровать элементы по наличию поля
и взять последний inlineData (для сложных промптов модель возвращает несколько изображений, и последнее
из них является финальной версией):C. Встроенный инструмент image_generation в Responses — не рекомендуется на APIYI
C. Встроенный инструмент image_generation в Responses — не рекомендуется на APIYI
POST /v1/responses с помощью gpt-5.5 и подключает встроенный инструмент изображений:image_generation_call в массиве output ответа вместе с обычным текстовым выводом.
По своей структуре это ближе всего к «чат-модели, которая рисует» на стороне OpenAI — но APIYI не рекомендует этот способ.D. Эндпоинт чата для модели изображений — выглядит как диалоговый, но остаётся моделью изображений
D. Эндпоинт чата для модели изображений — выглядит как диалоговый, но остаётся моделью изображений
gpt-image-2-all и gpt-image-2-vip можно вызывать через /v1/chat/completions, при этом изображение встраивается
в виде ссылки Markdown внутри choices[0].message.content.Это выглядит как «один эндпоинт чата, который и разговаривает, и рисует», но это не чат-модель, способная рисовать —
фактически это всё ещё модель изображений, обёрнутая в схему чата, без общих диалоговых возможностей.
Кроме того, она использует только image_url в последнем сообщении user в качестве исходного изображения; изображения
в истории сообщений ассистента игнорируются.Этот способ больше не рекомендуется — для новых интеграций используйте способ A.Создание продукта «chat and draw»: рекомендуемая схема
Что большинству агентов и продуктов на самом деле нужно, — это не один волшебный эндпоинт, а четкая цепочка оркестрации:Пусть chat-модель определяет намерение
gpt-5.5, claude-opus-5, gemini-3-pro и так далее), чтобы обработать ввод пользователя
и определить, является ли этот ход диалогом или запросом на генерацию изображений. При необходимости можно вернуть
структурированный флаг.Пусть chat-модель сформирует prompt для генерации изображений
Вызовите эндпоинт для генерации изображений
/v1/images/generations маршрута A. Возьмите возвращенный url или b64_json и сохраните его в вашем
собственном object storage.Верните изображение обратно в диалог
Как проверить, принимает ли модель изображения
1. Проверьте страницу с подробностями модели
/models/<model-name> и посмотрите на строку Модальности ввода в таблице характеристик вверху — если
там указано «image», модель поддерживает работу с изображениями. Это самый быстрый способ проверки.2. Если сомневаетесь, протестируйте
3. Распознайте строку ошибки
Model do not support image input
(грамматика у них такая, это не опечатка). Когда вы видите эту строку, модель не принимает изображения — переключитесь на другую модель.Пять распространённых заблуждений
1. Мультимодальная модель может генерировать изображения
1. Мультимодальная модель может генерировать изображения
gpt-5.5 может прочитать отправленный вами
макет дизайна, но не может самостоятельно вывести изображение — чтобы получить его, необходимо отдельное обращение к эндпоинту
изображений (маршрут A); встроенный инструмент изображений Responses (маршрут C) не рекомендуется в APIYI.2. Модель изображений можно использовать как чат-модель
2. Модель изображений можно использовать как чат-модель
gpt-image-2 за чат-ботом
поддержки. Даже варианты -all / -vip, которые принимают эндпоинт чата (маршрут D), в основе всё равно остаются моделями изображений.3. Добавление TEXT в responseModalities гарантирует наличие текстовой части
3. Добавление TEXT в responseModalities гарантирует наличие текстовой части
responseModalities: ["TEXT", "IMAGE"] не гарантирует наличие текстовой
части в ответе; модель может вернуть только изображение. Однако обратное направление полезно: явное объявление
["IMAGE"] уменьшает количество лишних текстовых частей.4. Переключение между parts[0] и parts[1] исправляет извлечение повреждённых изображений
4. Переключение между parts[0] и parts[1] исправляет извлечение повреждённых изображений
[0]
или [1], поэтому независимо от выбранного варианта некоторые запросы не найдут его. Изменение индекса лишь меняет набор
запросов, завершающихся ошибкой. Стабильным является только фильтр по наличию поля.5. Передача эталонного изображения в /v1/images/generations выполняет редактирование
5. Передача эталонного изображения в /v1/images/generations выполняет редактирование
image / image_url /
images в эндпоинт генерации возвращает 200 с обычным изображением, но эталонное изображение незаметно
отбрасывается, а тарификация выполняется как обычно — в результате вы получаете обычный результат преобразования
текста в изображение.Редактирование изображений должно выполняться через /v1/images/edits (для Grok Imagine дополнительно требуется
multipart/form-data — отправка JSON возвращает жёсткую ошибку 400).