PDF, аудио и структурированный вывод в Gemini
На этой странице описано, как передавать в Gemini PDF и аудио и как получать структурированный вывод. ID моделей и адреса API см. в обзоре семейства Gemini.
PDF и аудио
В нативном API файлы в кодировке base64 передаются через inline_data, а mime_type указывается как application/pdf, audio/wav, audio/mp3 и т. п.:
import os
from google import genai
from google.genai import types
client = genai.Client(
api_key=os.environ["OFOX_API_KEY"],
http_options={"api_version": "v1beta", "base_url": "https://api.ofox.ai/gemini"},
)
pdf = open("invoice.pdf", "rb").read()
resp = client.models.generate_content(
model="google/gemini-3.5-flash",
contents=[types.Part.from_bytes(data=pdf, mime_type="application/pdf"), "Какова общая сумма в этом счёте?"],
)
print(resp.text)В OpenAI-совместимом API PDF передаётся в блоке содержимого file (file_data имеет вид data:application/pdf;base64,...), а аудио — в блоке содержимого input_audio ({"data": "<base64>", "format": "wav"}).
Структурированный вывод
В нативном API задайте responseMimeType и responseSchema в generationConfig:
import os
from google import genai
from google.genai import types
from pydantic import BaseModel
class Price(BaseModel):
price: float
currency: str
client = genai.Client(
api_key=os.environ["OFOX_API_KEY"],
http_options={"api_version": "v1beta", "base_url": "https://api.ofox.ai/gemini"},
)
resp = client.models.generate_content(
model="google/gemini-3.5-flash",
contents="Ракетка и мяч вместе стоят 1,10 доллара, ракетка на 1 доллар дороже мяча. Сколько стоит мяч?",
config=types.GenerateContentConfig(response_mime_type="application/json", response_schema=Price),
)
print(resp.parsed)В OpenAI-совместимом API используется response_format: {"type": "json_schema", ...} — подробнее см. в разделе Структурированный вывод.
Другие ошибки см. в разделе Типичные ошибки.