结构化 JSON 格式强制输出(JSON Mode / Structured Outputs)实战
大模型输出格式总是乱飞导致代码解析报错?教你利用 response_mime_type 与 response_schema 强制约束 100% 严谨的 JSON 数据结构。
一、以往 Prompt 约束的脆弱性
在提示词里哪怕写上一百遍请务必返回合法的 JSON,大模型依然偶尔会在前后附带多余的代码块反引号(```json)或啰嗦的解释,导致后端程序 json.loads 崩溃。
二、强制 Schema 严格对齐代码
import typing_extensions as typing
class Recipe(typing.TypedDict):
recipe_name: str
ingredients: list[str]
model = genai.GenerativeModel(
"gemini-1.5-flash",
generation_config={
"response_mime_type": "application/json",
"response_schema": Recipe
}
)
response = model.generate_content("教我做一道经典的西红柿炒鸡蛋")
print(response.text)
配置后,模型在底层解码时会被强制限制在语法状态机中,输出百分之百是能够被机器直接无缝解析的纯净 JSON!