# Gemini PDF、音频输入与结构化输出:inline_data、responseSchema Source: https://ofox.ai/zh/docs/develop/models/gemini/multimodal 本页说明如何向 Gemini 传入 PDF 与音频,以及如何获取结构化输出。模型 ID 与接口地址见 [Gemini 系列概览](https://ofox.ai/zh/docs/develop/models/gemini)。 ## PDF 与音频 原生接口通过 `inline_data` 传入 base64 编码的文件,`mime_type` 为 `application/pdf`、`audio/wav`、`audio/mp3` 等: ```python filename="gemini_pdf.py" 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 兼容接口中,PDF 使用 `file` 内容块(`file_data` 为 `data:application/pdf;base64,...`),音频使用 `input_audio` 内容块(`{"data": "", "format": "wav"}`)。 ## 结构化输出 原生接口在 `generationConfig` 中设置 `responseMimeType` 与 `responseSchema`: ```python filename="gemini_json_schema.py" 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 兼容接口使用 `response_format: {"type": "json_schema", ...}`,写法见[结构化输出](https://ofox.ai/zh/docs/develop/guides/structured-output)。 其他报错见[常见报错](https://ofox.ai/zh/docs/develop/models/gemini#errors)。