Pydantic for LLM 2026:让任何模型输出可靠的结构化JSON

📘 教程 2026-08-02 约 5 分钟阅读

LLM返回的JSON时好时坏,代码在坏数据上崩溃。Pydantic把模型输出变成经过校验的类型化数据。

💡 你将学到

LLM返回的JSON时好时坏,代码在坏数据上崩溃。Pydantic把模型输出变成经过校验的类型化数据。

📜 目录

Pydantic for LLMs 2026:从任何模型保证结构化JSON输出(28k Stars)

Pydantic:原始LLM输出与代码之间的验证层

Pydantic(28,438个GitHub stars,MIT许可证)是一个使用类型提示进行数据验证的Python库。随着LLM结构化输出的兴起,它已成为解析和验证模型响应的事实标准——每个主要的LLM框架(LangChain、OpenAI SDK集成、instructor)都构建在其之上。核心理念:声明输出应该是什么样子,然后获得保证有效的对象或清晰的错误。

取代正则表达式解析的模式

from pydantic import BaseModel, Field

class Order(BaseModel):
    order_id: str = Field(pattern=r"ORD-\d{6}")
    items: list[str]
    total: float

# Parse LLM output directly
order = Order.model_validate_json(llm_json)

如果模型返回缺失字段、错误类型或无效格式,你会得到一个验证错误——而不是下游的静默崩溃。这一单一属性消除了LLM应用中最不稳定的失败模式。

为什么它与LLM配合得如此之好

  1. 模式即提示。 许多SDK(instructor、OpenAI结构化输出)将你的Pydantic模型序列化为JSON Schema并传递给模型——模型确切地看到要生成什么,提供商可以强制执行。
  2. 嵌套验证。 复杂结构(一个订单包含多个行项目,每个项目有自己的规则)递归验证。
  3. 失败时重试。 标准循环:尝试解析,遇到ValidationError时用错误信息重新询问模型——大多数模型在第二次尝试时修正输出。
  4. 序列化。 输出是普通的Python对象,你可以存储、记录或发送到任何地方。

生产循环

for attempt in range(3):
    try:
        return Order.model_validate_json(call_llm(schema=Order.model_json_schema()))
    except ValidationError as e:
        messages.append(f"Your output was invalid: {e}. Fix it.")

这种带错误信息的重试循环是从LLM获取结构化数据的唯一最可靠模式——它适用于OpenAI、Anthropic、Gemini以及本地模型。

FAQ

Pydantic是免费的吗? 是的——MIT许可证;它是现存安装量最大的Python包之一。

它能与任何LLM一起使用吗? 是的——验证是与模型无关的;提供商强制执行的模式是额外的好处。

Pydantic v1还是v2? 使用v2——更快(Rust核心)且是现代标准。

它能处理非常大的输出吗? 可以,但对于巨大输出,建议使用流式处理+增量验证。

相关文章

❓ 常见问题

Is Pydantic free?

Yes - MIT-licensed; it is one of the most-installed Python packages in existence.

Does it work with any LLM?

Yes - the validation is model-agnostic; provider-enforced schemas are a bonus.

Pydantic v1 or v2?

Use v2 - faster (Rust core) and the modern standard.

Can it handle very large outputs?

Yes, but for huge outputs prefer streaming + incremental validation.

相关文章
2026-07-16
AI Agent操作数据库:说人话查数据,自动翻译成SQL
2026-08-12
向量化数据库2026:它是什么、怎么工作、何时需要
2026-08-01
NPU跑本地LLM:骁龙X、酷睿Ultra实测

本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。

💬 评论 (0)

暂无评论,来说两句吧~

登录后评论