PDF, audio y salida estructurada en Gemini
Esta página explica cómo enviar PDF y audio a Gemini y cómo obtener salida estructurada. Los IDs de modelo y las URL de los endpoints están en el resumen de la familia Gemini.
PDF y audio
El endpoint nativo recibe los archivos codificados en base64 mediante inline_data, con mime_type igual a application/pdf, audio/wav, audio/mp3, etc.:
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"), "¿Cuál es el importe total de esta factura?"],
)
print(resp.text)En el endpoint compatible con OpenAI, el PDF se envía con un bloque de contenido file (file_data igual a data:application/pdf;base64,...) y el audio con un bloque de contenido input_audio ({"data": "<base64>", "format": "wav"}).
Salida estructurada
En el endpoint nativo, configure responseMimeType y responseSchema en 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="Un bate y una pelota cuestan 1,10 dólares en total. El bate cuesta 1 dólar más que la pelota. ¿Cuánto cuesta la pelota?",
config=types.GenerateContentConfig(response_mime_type="application/json", response_schema=Price),
)
print(resp.parsed)El endpoint compatible con OpenAI usa response_format: {"type": "json_schema", ...}; consulte el formato en Salida estructurada.
Otros errores: Errores habituales.