Мультимодальный ввод в GenerateContent
Изображения и другие типы данных в parts
Изображения
Передайте изображение частью inlineData внутри contents[].parts
| Поле | Тип | Назначение |
|---|---|---|
inlineData.mimeType | string | MIME-тип, например image/png |
inlineData.data | string | Base64 без префикса data URI |
text | string | Вопрос в отдельной части сообщения |
Пример
Подготовьте photo.png, задайте GETAPI_API_KEY и GETAPI_MODEL для модели, которая поддерживает изображения через GenerateContent
import base64
import json
import os
from pathlib import Path
from urllib.parse import quote
from urllib.request import Request, urlopen
encoded = base64.b64encode(Path("photo.png").read_bytes()).decode("ascii")
model = quote(os.environ["GETAPI_MODEL"], safe="")
body = {
"contents": [{
"role": "user",
"parts": [
{"inlineData": {"mimeType": "image/png", "data": encoded}},
{"text": "Опиши изображение"},
],
}]
}
request = Request(
f"https://api.getapi.ru/v1beta/models/{model}:generateContent",
data=json.dumps(body).encode("utf-8"),
headers={
"x-goog-api-key": os.environ["GETAPI_API_KEY"],
"Content-Type": "application/json",
},
)
with urlopen(request, timeout=120) as response:
result = json.load(response)
for candidate in result.get("candidates", []):
for part in candidate.get("content", {}).get("parts", []):
if "text" in part and not part.get("thought"):
print(part["text"])Аудио и видео
Поддержка других MIME-типов определяется моделью и маршрутом. Не отправляйте аудио или видео по аналогии с изображением без проверки доступных способов загрузки
Возможность модели понимать видео не подтверждает наличие Files API или поддержку ссылки на файл, загруженный в другой сервис
Для длинных файлов уточните поддерживаемый метод передачи и ограничения. Base64 увеличивает размер тела запроса
Обработка результата
Текст, причины завершения и метаданные читаются по правилам GenerateContent. Отсутствие текстового кандидата требует отдельной обработки
Другие способы передачи изображений: общий обзор