Gemini Images
Генерация картинок через модели Gemini для картинок и чат.
Скачать инструкцию для агента .mdМодели Gemini для картинок работают как чат-модели, которые умеют возвращать картинки. Для генерации и редактирования используйте /v1/chat/completions, а не /v1/images/generations и не /v1/images/edits. Поддерживаются google/gemini-3.1-flash-image-preview и google/gemini-3-pro-image; используйте точный id модели из каталога или /v1/models.
Запрос
curl https://api.aigate.shop/v1/chat/completions \ -H "Authorization: Bearer sk-your-api-key" \ -H "Content-Type: application/json" \ -d '{ "model": "google/gemini-3.1-flash-image-preview", "messages": [ { "role": "user", "content": "Generate an image of a small yellow banana-shaped robot on a white desk, studio lighting" } ], "modalities": ["image", "text"] }'Настройки картинки
Для соотношения сторон и размера передавайте image_config на верхнем уровне запроса. aspect_ratio задает соотношение сторон, image_size задает размер/качество, например 1K, 2K или 4K, если выбранная модель это поддерживает.
{ "model": "google/gemini-3-pro-image", "messages": [ { "role": "user", "content": "Generate a sharp futuristic product render of a matte black AI gateway device on a white desk, studio lighting" } ], "modalities": ["image", "text"], "image_config": { "aspect_ratio": "16:9", "image_size": "2K" }}Ответ
{ "id": "gate-1779703910", "object": "chat.completion", "created": 1779703910, "model": "google/gemini-3.1-flash-image-preview", "choices": [ { "index": 0, "message": { "role": "assistant", "content": null, "images": [ { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." } } ] }, "finish_reason": "stop" } ]}Редактирование картинки
Для редактирования передайте исходную картинку как image_url внутри messages. Текст в том же сообщении должен описывать, что изменить. Модель возвращает новую картинку в base64 внутри data URL.
curl https://api.aigate.shop/v1/chat/completions \ -H "Authorization: Bearer sk-your-api-key" \ -H "Content-Type: application/json" \ -d '{ "model": "google/gemini-3.1-flash-image-preview", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Edit this image: add a small orange cat sitting on the table. Keep the original lighting and style. Return the edited image." }, { "type": "image_url", "image_url": { "url": "https://picsum.photos/seed/aigate-edit-test/800/600" } } ] } ], "modalities": ["image", "text"] }'{ "id": "gate-1779703910", "object": "chat.completion", "created": 1779703910, "model": "google/gemini-3.1-flash-image-preview", "choices": [ { "index": 0, "message": { "role": "assistant", "content": null, "images": [ { "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." } } ] }, "finish_reason": "stop" } ]}Где брать картинку
choices[0].message.images[0].image_url.urlПоля запроса
| Поле | Обяз. | Что значит |
|---|---|---|
| model | yes | Точный id модели из каталога. |
| messages | yes | Промпт лежит в сообщении пользователя. |
| messages.content[].image_url | edits/input image | Исходная картинка для редактирования или картинка на входе. |
| modalities | yes | ["image", "text"] |
| image_config | no | Настройки картинки для Gemini: aspect_ratio (например 1:1 или 16:9) и image_size (например 1K, 2K или 4K, если поддерживается моделью). |
Сохранить data URL
import { writeFileSync } from "node:fs";const url = response.choices[0].message.images[0].image_url.url;if (url.startsWith("data:image/")) { const [, base64] = url.split(","); writeFileSync("gemini-image.png", Buffer.from(base64, "base64"));}SillyImages
Для расширения SillyImages в SillyTavern выберите тип API Gemini. В поле endpoint укажите базовый адрес без /v1: https://api.aigate.shop. Расширение само отправляет генерацию на /v1beta/models/{model}:generateContent и список моделей на /v1/models.
API type: Gemini-compatibleEndpoint URL: https://api.aigate.shopAPI key: sk-your-api-keyModel: google/gemini-3-pro-imageAspect ratio: 16:9Image size: 2KСовместимый маршрут принимает Google-формат contents/generationConfig и возвращает candidates/content/parts/inlineData, чтобы расширение сразу увидело картинку.
curl https://api.aigate.shop/v1beta/models/google/gemini-3-pro-image:generateContent \ -H "Authorization: Bearer sk-your-api-key" \ -H "Content-Type: application/json" \ -d '{ "contents": [ { "role": "user", "parts": [ { "text": "Generate a cinematic 16:9 image of a tiny banana-shaped robot in a rainy neon street" } ] } ], "generationConfig": { "responseModalities": ["TEXT", "IMAGE"], "imageConfig": { "aspectRatio": "16:9", "imageSize": "2K" } } }'{ "candidates": [ { "content": { "role": "model", "parts": [ { "inlineData": { "mimeType": "image/png", "data": "iVBORw0KGgoAAAANSUhEUgAA..." } } ] }, "finishReason": "STOP", "index": 0 } ], "usageMetadata": { "promptTokenCount": 18, "candidatesTokenCount": 1290, "totalTokenCount": 1308 }}Частые ошибки
- Не отправляйте модели Gemini для картинок в /v1/images/generations или /v1/images/edits.
- Не забывайте modalities: ["image", "text"].
- Для размера и соотношения сторон используйте image_config на верхнем уровне запроса.
- Не читайте только message.content.
- Проверяйте точный id модели в /v1/models или каталоге.