大模型最让人头疼的问题之一就是输出格式不稳定。你让它返回JSON,它可能加一段解释文字。Structured Output解决这个问题。
JSON模式
OpenAI的response_format参数强制模型输出合法JSON,严格按定义的schema生成。
本地模型支持
Ollama和vLLM通过format参数指定JSON schema,或通过grammar参数指定BNF语法约束。
Pydantic集成
用Pydantic定义输出schema,模型输出直接解析为类型安全的Python对象:
from pydantic import BaseModel
from typing import List
class ReviewAnalysis(BaseModel):
sentiment: str
aspects: List[dict]
analysis = ReviewAnalysis.model_validate_json(model_output)
应用场景
数据提取:从非结构化文本提取结构化字段。表单填充:根据用户描述自动填写表单。API集成:输出格式直接匹配下游API入参。
Structured Output让大模型从"聊天工具"变成"可靠的代码组件"——输出格式可预期、可解析、可集成。