Pydantic AI 是什么?「Python 怎么玩 AI」就该这么玩——类型安全到骨子里的 Agent 框架
导语
聊 Agent 框架,大家张口就是 LangChain、CrewAI、AutoGen。今天换个主角:Pydantic AI——GitHub 上 19.9K 星的 Python AI SDK,官方口号一句话:How Python does AI(Python 就该这么玩 AI)。它背后是写 Python 的人几乎都用过的 Pydantic 库(另一个 28.7K 星项目)原班人马。这篇讲清楚:它跟那些「大而全」的框架差在哪、怎么上手、适合谁。
它是什么:把「类型」刻进 Agent 里
跟靠「粘合一堆工具」的思路不同,Pydantic AI 的核心卖点是类型安全端到端(typed end to end):模型输出不是自由文本,而是强类型、有校验的数据结构。对搞过后端的人来说,这味儿太熟了——写接口从来都要看着类型写代码,凭什么 Agent 的输出就能是野的?
几个实在的点:
- 换模型只改一个字符串:OpenAI、Anthropic、Gemini、通义、本地模型……全都是一行
'provider:model'的事,同一套 Agent 代码哪里都能跑; - 同一份 Agent,到处开花:能跑在 Web 前端后面、能跑在终端里(
to_cli_sync()直接变命令行工具)、能接实时语音通话、能丢进持久后台队列长期执行; - 一个箱子全给齐:不光是对话 Agent,图片生成、Embeddings 向量都在同一个包里,不用再拼七拼八;
- 重型任务有 Harness:Pydantic AI Harness 给长时运行、多子 Agent、记忆管理、甚至完整「编码 Agent」挂上即用,复杂协作不用自己从零造轮子。
一句话:它走的是「工程化、可依赖」的路线,天生就是给正经写代码的人准备的。而且它和 Pydantic 开源库一脉相承——你项目里可能已经在用它做数据校验了,加个 Agent 基本无缝衔接。
上手:三行代码做「类型化输出」
安装一句话:
uv add pydantic-ai
建一个带工具和输出类型的 Agent,最典型的场景是结构化数据抽取——喂一段乱七八糟的文本,吐回一个干净的 Pydantic 模型:
from pydantic import BaseModel
from pydantic_ai import Agent
class Address(BaseModel):
city: str
street: str
zip_code: int
agent = Agent("openai:gpt-5.5", output_type=Address, system_prompt="从文本里抽取地址")
result = agent.run_sync("数码罗记住在北京朝阳区 100021")
print(result.output) # 一个校验过的 Address 对象
只要你接过 Pydantic 模型,这套逻辑几乎是零学习成本——以前你写的类型,现在直接变成 Agent 的「输出契约」。
实话:香,但别指望它是万能钥匙
先夸:类型安全这条是真的能救命的,生产环境最怕 Agent 输出字段漂移,它从根上掐断了;换模型零改动、跑在终端/网页/语音/队列四处通吃,这些对开发者都很实在;因为脱胎于 Pydantic,文档和代码手感业内顶级。
再泼冷水:一是定位很”正统”——它面向的是写代码的开发者,不是拖拽玩家,业务人员想可视化编排请左转 Dify、Flowise;二是野心很全(语音、生图、排队、Harness 全都要),如果你只需要其中一小块,会有「杀鸡用牛刀」的体感;三是生态和社区体量目前远不如 LangChain,遇到偏门坑,能搜到的中文资料还不多。
结论:如果你是个认真用 Python 做 Agent 的工程型选手,看重输出可控、换模型灵活,Pydantic AI 值得一试;想要现成可视化编排的,把这篇省下的时间花在横向对比上更值——我在 godsun.pro 和 ai.godsun.pro 整理过主流 Agent 平台怎么选,可作参考。
by 数码罗记 · godsun.pro