PDF, audio et sortie structurée avec Gemini
Cette page explique comment transmettre des PDF et des fichiers audio à Gemini, et comment obtenir une sortie structurée. Les ID de modèle et les adresses d’endpoint figurent dans la présentation de la famille Gemini.
PDF et audio
Avec l’API native, transmettez le fichier encodé en base64 via inline_data, avec un mime_type comme application/pdf, audio/wav ou 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"), "Quel est le montant total de cette facture ?"],
)
print(resp.text)Avec l’API compatible OpenAI, les PDF passent par un bloc de contenu file (file_data au format data:application/pdf;base64,...), et l’audio par un bloc de contenu input_audio ({"data": "<base64>", "format": "wav"}).
Sortie structurée
Avec l’API native, définissez responseMimeType et responseSchema dans 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="Une batte et une balle coûtent 1,10 dollar au total, et la batte coûte 1 dollar de plus que la balle. Combien coûte la balle ?",
config=types.GenerateContentConfig(response_mime_type="application/json", response_schema=Price),
)
print(resp.parsed)L’API compatible OpenAI utilise response_format: {"type": "json_schema", ...} ; voir Sortie structurée.
Les autres erreurs sont décrites dans Erreurs courantes.