Gemini PDF, 오디오와 구조화된 출력
이 페이지에서는 Gemini에 PDF와 오디오를 전달하는 방법과 구조화된 출력을 받는 방법을 설명합니다. 모델 ID와 엔드포인트 주소는 Gemini 시리즈 개요를 참고하십시오.
PDF와 오디오
네이티브 API는 inline_data로 base64 인코딩된 파일을 전달하며, mime_type은 application/pdf, audio/wav, audio/mp3 등입니다.
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.io/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에서는 generationConfig에 responseMimeType과 responseSchema를 설정합니다.
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.io/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", ...}를 사용합니다. 작성법은 구조화된 출력을 참고하십시오.
기타 오류는 자주 발생하는 오류를 참고하십시오.
마지막 업데이트