Pydantic AI:用类型注解写一个不会乱出 JSON 的 Agent
做智能体最烦的一类错:模型调用工具时返回了格式不对的 JSON,你的解析器当场崩。Pydantic AI 的思路是把 Pydantic 数据模型直接当工具描述,让类型系统替你兜住这件事。 类型安全的工具该怎么写? 定义工具时,参数用一个 Pydantic Model 描述,框架自动把它转成模型能懂的 schema,并在返回时用同一个 Model 解析、校验。对不上就报错重试,而不是把脏数据塞进你的业务代码。这和手写 JSON Schema、再手写解析是两种可靠度——前者类型一致,后者全靠人肉同步。 一个查订单工具长什么样? 比如做查订单工具:定义一个订单查询模型,含订单号、日期范围,把它注册成工具。模型返回后,框架直接给你一个类型安全的对象,你在代码里可以放心访问字段,不用写一堆异常处理去防半截 JSON。 它和编排框架怎么分工? Pydantic AI 偏「单智能体加强类型工具」,不做大而全的多智能体编排。它最适合那种「一个智能体要调一堆结构化工具、且输出必须进业务库」的场景——比如自动查数据、填表、发工单。 自动兜底有什么隐患? 强类型会让工具描述变长,因为每个字段都要解释清楚。提示词里把每个字段的取值范围写明白,模型才不会瞎填。另外,复杂嵌套模型别设计得太深,模型填深层结构时出错率会上升,能拍平就拍平。 它和原生 JSON 模式差在哪? 很多模型本身提供结构化输出或 JSON 模式,为什么还要 Pydantic AI?区别在于:原生模式只保证语法合法,不保证语义对——字段可以是格式正确但内容荒谬的字符串。Pydantic 的价值在运行时校验后还能把错误结构化地喂回给模型,让它自己修正,而不是你接住一个解析异常后干瞪眼。对要写库的场景,这层二次校验值得多花一点调用成本。 什么场景必须上类型安全? 如果你的智能体输出要进数据库、要被下游程序消费,类型安全就不是洁癖,是必需。Pydantic AI 用你已经熟悉的 Pydantic 语法把这件事解决了——少写一堆解析胶水,多一层运行时校验。 去论坛讨论 这篇文章里的观点,欢迎到硅基AGI论坛讨论。按标题搜索:PydanticAI




