PydanticAI
免费
PydanticAI 由 Pydantic 团队推出,提供类型驱动的 Agent 开发体验,适合需要可靠性与可测试性的 Python 团队。
PydanticAI
核心参数与统计
| 参数 | 说明 |
|---|---|
| 官方定位 | GenAI Agent Framework, the Pydantic way |
| 架构特征 | 强类型、依赖注入、可组合 Capabilities、图式编排(Agent Graph) |
| 模型兼容 | OpenAI、Anthropic、Gemini、DeepSeek、Grok、Cohere、Mistral、Perplexity、Bedrock、Ollama、Groq、OpenRouter、Together AI、Fireworks AI、Cerebras、Hugging Face 等 30+ 模型提供商 |
| 可观测支持 | Pydantic Logfire(原生集成)、OpenTelemetry 兼容后端 |
| 协议扩展 | MCP(Model Context Protocol)、A2A、可组合 Capabilities |
| GitHub Stars | 18.6k |
| Forks | 2.4k |
| 贡献者 | 547+ |
| 最新版本 | v2.13.0(2026-07-17) |
| 总发布数 | 286 个 Release |
| 开源许可 | MIT |
| 安装方式 | pip install pydantic-ai 或 pydantic-ai-slim 按需选装 |
一句话简评:PydanticAI 不是最快的 Agent 框架,但它是"类型安全 + 可观测 + 可测试"三角最完整的 Python Agent 框架,适合有工程纪律的团队。
宣传核验:官方强调"把 FastAPI 的体验带到 GenAI 开发"。PydanticAI 确实复用了 Pydantic 的类型校验生态,让 Agent 的输入、工具和输出全部进入类型约束体系。但收益高度依赖团队的工程规范——没有类型注解习惯、缺乏测试覆盖的团队,短期内感受不到类型系统带来的价值,反而会觉得模板代码偏重。
PydanticAI 的用户与市场认可
生态背书:Pydantic 库在 Python 生态中处于基础设施地位——OpenAI SDK、Anthropic SDK、Google ADK、LangChain、LlamaIndex、AutoGPT、Transformers、CrewAI、Instructor 等主流框架的校验层均基于 Pydantic。PydanticAI 由同一团队维护,天然继承了这一信任基础。
社区热度:GitHub 18.6k Stars、2.4k Forks、547+ 贡献者286 个 Release,迭代极为活跃。社区生态已出现第三方 Capability 包(如 pydantic-ai-todo、pydantic-ai-shields、subagents-pydantic-ai、pydantic-ai-backend 等),覆盖任务管理、安全防护、子Agent 编排、文件操作等场景。
开发者认可:在 Python 开发者群体中,PydanticAI 被评价为"最适合生产级 Agent 的框架"。其类型系统带来的 IDE 自动补全、静态检查与重构安全,让中大型团队能够将 Agent 开发纳入标准软件工程流程。
边界提醒:对偏脚本化、快速原型导向的团队,PydanticAI 的初始上手成本高于 LangChain 或直接调用 API 的方案。框架的价值在项目规模扩大、多人协作后逐步显现。
PydanticAI 的成本优势
C 端 / 个人开发者
| 维度 | 成本 |
|---|---|
| 框架授权 | 开源免费(MIT 许可),无授权费用 |
| 本地运行 | 仅需 Python 3.10+ 有境,无额外基础设施 |
| 测试成本 | 内置 TestModel 可离线运行,无需 LLM API Key 即可验证 Agent 逻辑 |
| 免费入门 | 完整文档 + 官方示例包(pydantic-ai-examples) |
API / 开发者
| 维度 | 成本 |
|---|---|
| 模型调用费 | 取决于所选模型提供商(OpenAI、Anthropic 等),框架本身无额外加价 |
| 观测成本 | Logfire 提供免费额度;自建 OTel 后端按量付费 |
| 运维成本 | 无强制绑定服务,可纯本地部署 |
企业 / 团队
| 维度 | 成本 |
|---|---|
| 框架授权 | 无(MIT 许可,可商用) |
| 隐性工程投入 | 类型系统建设、测试覆盖、回归评测体系搭建 |
| 治理成本 | 通过 Capabilities 的 before_tool_execute 钩子实现人机审批(Human-in-the-Loop),降低误操作风险 |
| 可观测投入 | Logfire/OTel 提供调用链追踪,减少问题定位时间 |
成本结构总结:PydanticAI 的成本主体不是授权费,而是工程治理投入。对于已有类型规范和测试文化的团队,采用成本极低;对于从零建设的团队,需预留 2-4 周的类型体系搭建与测试框架适配时间。
PydanticAI 的主要功能
-
Type-safe Agent:Agent 的输入参数、工具函数、输出结果全部纳入 Pydantic 类型约束。模型返回数据后即时校验,校验失败自动触发重试(reflection),确保输出结构始终符合预期。
-
依赖注入机制:通过
RunContext和deps_type泛型参数,将数据库连接、权限上下文、外部服务等注入到指令(instructions)和工具函数中。无需全局变量或复杂初始化,所有依赖在类型层面即可追溯。 -
可组合 Capabilities 系统:Capability 是框架的核心扩展单元,可同时打包指令、工具、模型设置、生命周期钩子。内置 20+ 官方 Capability(Thinking、WebSearch、WebFetch、ImageGeneration、MCP、ToolSearch、Hooks、SelectModel 等),支持按需延迟加载(
defer_loading=True),避免未使用的工具定义占用上下文窗口。 -
MCP 原生集成:通过
MCPCapability 直接挂载 MCP 服务器,默认本地运行(保护凭证),可选native=True启用模型提供商的原生 MCP 支持。一个 Capability 即可完成 MCP 工具的发现、挂载与调用。 -
可观测与追踪:与 Pydantic Logfire 深度集成,一键开启完整调用链追踪——包括模型请求、工具调用、数据库查询Token 用量、耗时分布。支持任何 OTel 兼容后端。
-
耐用执行(Durable Execution):支持 Temporal、DBOS、Prefect 等耐用执行引擎,Agent 可在进程重启API 故障、网络中断后恢复执行进度,适用于长时间运行的工作流。
-
流式结构化输出:边生成边校验的结构化输出流,无需等待完整响应即可获得已通过类型校验的部分数据。
-
Agent Graph(图式编排):通过类型注解定义 Agent 运行图(UserPromptNode → ModelRequestNode → CallToolsNode),支持在节点间插入自定义逻辑(日志、限流、安全检查)。
-
延迟工具加载(Tool Search):支持按关键字/BM25 检索工具定义,模型只需在需要时才拉取特定工具 Schema,降低首次请求 Token 消耗。
隐藏联动(专家视点)
类型约束 + Capability 延迟加载 + 可观测三者联动后,Agent 开发可从"提示词实验室模式"升级为"标准软件工程流程":类型系统确保接口契约、延迟加载控制 Token 成本、可观测提供调试与审计依据。这意味着多人协作下的不可预期回归大幅减少,Agent 行为可复现、可测试、可审计。
PydanticAI 的模型与版本演进
PydanticAI 迭代速度极快,自发布以来已累计 286 个 Release。以下为主要版本脉络:
主线发布
| 版本 | 日期 | 关键变化 |
|---|---|---|
| v2.13.0 | 2026-07-17 | 最新稳定版,持续优化 Capabilities 系统与 MCP 集成 |
| v2.0 | ~2026-04 | 重大重构,引入 Agent Graph、Capabilities 体系、耐用执行支持 |
| v1.x | ~2025 Q4 | 早期版本,建立类型安全 Agent 核心与 Logfire 集成 |
| 初始公开版 | 未公开 | 早期原型阶段 |
版本节奏特点:
- 周级发布:修复与功能迭代快速,平均每周 2-3 个 Release。
- 向后兼容:官方对 API 稳定性有明确承诺,但 Capabilities 体系的
AbstractCapability接口在 v2.x 系列中有新增方法(如get_wrapper_toolset、prepare_tools),自定义 Capability 子类需关注基类变更。 - MCP 协议跟进:随 MCP 规范演进持续更新客户端实现,建议生产有境固定
pydantic-ai大版本并配合 Logfire 监控回归。
生产建议:
- 使用
pydantic-ai-slim按需安装,避免冗余依赖。 - 固定
pydantic-ai>=2.13,<3大版本,通过 CI 回归套件验证升级兼容性。 - 关注 GitHub Release Notes 中的
Breaking Changes标签。
PydanticAI 的技术优势
为什么"类型安全"能提升稳定性
PydanticAI 的核心技术决策是将 Pydantic 类型校验内建到 Agent 的每一层交互中。其因果链为:
类型注解 → 自动生成 JSON Schema → 模型按 Schema 输出 → Pydantic 即时校验 → 校验失败自动重试
这意味着输出结构错误不会传播到下游逻辑,而是在 Agent 内部被捕获并修复。与传统的"模型输出 → 人工解析 → 异常处理"模式相比,错误前移了至少两个有节。
Capabilities 机制的设计优势
Capabilities 不是简单的工具注册表,而是一个"可组合行为单元"系统:
- 配置合并:多个 Capability 的指令自动拼接,模型设置按优先级叠加。
- Hook 中间件链:
before_*按注册顺序执行,after_*逆序执行,wrap_*形成洋葱圈中间件——与 Starlette/Django 的中间件模式一致。 - 延迟加载:
defer_loading=True将整个 Capability 折叠为单行目录项,模型通过load_capability工具按需激活,避免未使用的工具和指令占用上下文。跨会话持久化时,加载状态通过消息历史重建,无需重新发现。
与传统 Agent 框架的对比
| 维度 | PydanticAI | LangChain | CrewAI | 直接调用 API |
|---|---|---|---|---|
| 类型安全 | 原生内置,全链路校验 | 依赖外部 Pydantic | 有限 | 无 |
| 可观测 | Logfire/OTel 深度集成 | LangSmith(第三方) | 有限 | 无 |
| 可测试性 | 内置 TestModel,离线可测 | 需模拟 | 需模拟 | 需模拟 |
| Capability 体系 | 原生 + 延迟加载 | 无 | 无 | 无 |
| MCP 支持 | 原生 Capability | 通过集成 | 有限 | 无 |
| 学习曲线 | 中等(需类型系统基础) | 较低 | 较低 | 最低 |
| 多人协作收益 | 高(类型契约) | 中 | 中 | 低 |
| 项目规模适配 | 中大型项目 | 小型到中型 | 中型 | 小型 |
工程踩坑指南(基于 PydanticAI 的 Agent/MCP 框架特性)
1. Token 消耗与上下文膨胀控制
- 问题:Capability 列表过长或工具定义过多时,首次请求的 Token 消耗可能飙升到 10K+。
- 解法:使用
defer_loading=True将不常用的 Capability 延迟加载;对工具数量超过 30 的场景启用 ToolSearch(strategy='keywords'或'bm25'),让模型按需发现工具而非全量加载。 - 监控:通过 Logfire 观察
all_messages()中每个请求的 Token 数,设定告警阈值。
2. 类型错误导致的运行时异常
- 问题:
Agent[SupportDependencies, SupportOutput]泛型参数不匹配时,静态检查可以捕获,但RunContext中动态注入的依赖如果类型定义不一致,仍可能在运行时抛出ValidationError。 - 解法:对所有工具函数的参数使用 Pydantic 模型或
dataclass而非dict;在 CI 中启用mypy或pyright的严格模式检查泛型参数一致性。 - 最佳实践:
deps_type使用dataclass而非TypedDict,以获得更好的 IDE 补全和重构支持。
3. MCP 服务器的凭证与安全治理
- 问题:MCP 服务器携带数据库凭证API Key 等敏感信息,直接暴露给模型提供商存在泄密风险。
- 解法:默认使用 PydanticAI 的本地 MCP 运行模式(凭证留在本地进程);如使用
native=True,确保 MCP 服务器仅暴露必要工具,且通过before_tool_execute钩子对不可逆操作(删除、支付、发布)设置确认点。 - 审计:在 Logfire 中记录每次 MCP 工具调用的参数与结果,建立异常行为告警。
4. 跨模型迁移的兼容性风险
- 问题:同一套 Agent 在 OpenAI 上运行正常,切换到 Anthropic 或 Gemini 后可能因模型对工具 Schema 的解析差异而表现不同。
- 解法:利用 PydanticAI 的
test模型(TestModel)在 CI 中执行结构化输出校验测试;使用IncludeToolReturnSchemasCapability 确保工具返回类型 Schema 被正确传递给模型。 - 验收指标:跨模型回归测试通过率 ≥ 95%,工具调用准确率波动 ≤ 5%。
如何使用 PydanticAI
快速安装
# 完整安装(含 OpenAI、Anthropic、Google 模型 + Logfire + MCP + Web UI)
pip install pydantic-ai
# 按需精简安装
pip install pydantic-ai-slim[openai,logfire]
最小 Agent 示例
from pydantic_ai import Agent
# 定义 Agent,指定模型和指令
agent = Agent(
'anthropic:claude-sonnet-4-6',
instructions='Be concise, reply with one sentence.',
)
# 同步运行
result = agent.run_sync('Where does "hello world" come from、')
print(result.output)
# 输出: The first known use of "hello, world" was in a 1974 textbook about the C programming language.
带工具和结构化输出的银行客服示例
from dataclasses import dataclass
from pydantic import BaseModel, Field
from pydantic_ai import Agent, RunContext
@dataclass
class SupportDeps:
customer_id: int
db: DatabaseConn # 假设已定义
class SupportOutput(BaseModel):
support_advice: str = Field(description='Advice returned to the customer')
block_card: bool = Field(description="Whether to block the customer's card")
risk: int = Field(description='Risk level of query', ge=0, le=10)
support_agent = Agent(
'openai:gpt-5.2',
deps_type=SupportDeps,
output_type=SupportOutput,
instructions='You are a support agent in our bank.',
)
@support_agent.tool
async def customer_balance(
ctx: RunContext[SupportDeps], include_pending: bool
) -> float:
# Returns the customer's current account balance.
return await ctx.deps.db.customer_balance(
id=ctx.deps.customer_id,
include_pending=include_pending,
)
result = await support_agent.run(
'What is my balance、',
deps=SupportDeps(customer_id=123, db=DatabaseConn()),
)
print(result.output)
集成 MCP 服务器
from pydantic_ai import Agent
from pydantic_ai.capabilities import MCP
agent = Agent(
'openai:gpt-5.2',
capabilities=[
# 默认本地运行,保护凭证
MCP(url='https://mcp.example.com/api'),
# 可选原生 MCP 支持
MCP(url='https://mcp.example.com/other', native=True),
],
)
延迟加载 Capability 示例
from pydantic_ai import Agent
from pydantic_ai.capabilities import Capability
# 定义延迟加载的退款工作流
refunds = Capability(
id='refunds',
description='Use for refund eligibility and refund status.',
instructions='Always confirm the order ID before issuing a refund.',
defer_loading=True,
)
@refunds.tool_plain
def refund_status(order_id: str) -> str:
# Look up the refund status for an order.
return f'Order {order_id}: refund issued on 2026-05-01.'
agent = Agent(
'openai-responses:gpt-5.4',
instructions='You are a customer support assistant.',
capabilities=[refunds],
)
# 首次请求只暴露目录条目,模型通过 load_capability 按需激活退款工作流
典型落地步骤
- 试点阶段(1-2 周):从 1 个 Agent + 2-3 个工具切入,定义输入输出类型,接入 Logfire 观测。
- 扩展阶段(2-4 周):添加更多工具和 Capability,引入
TestModel编写回归测试套件。 - 生产阶段(持续):启用耐用执行(Temporal/DBOS),部署人机审批钩子,建立跨模型回归门禁。
推荐验收指标:类型错误拦截率 ≥ 99%、线上工具调用故障率 ≤ 1%、回归测试通过率 ≥ 95%、问题定位时长缩短 60%+。
PydanticAI 的产品定价
| 层别 | 计费维度 | 费用 |
|---|---|---|
| 框架 | MIT 开源许可 | 免费 |
| 本地测试 | TestModel(无需 API Key) | 免费 |
| Logfire 观测 | 免费额度 + 按量付费 | 有免费层,超额按量计费 |
| 模型调用 | 按 Token 计费(取决于提供商) | 框架无加价 |
| MCP 服务器 | 自建或第三方 | 取决于基础设施 |
| 耐用执行(Temporal) | 自托管或 Temporal Cloud | 取决于部署方式 |
| 企业治理 | 类型系统 + 测试 + CI 建设 | 一次性工程投入 |
免费模式真相:框架本身 MIT 免费,但生产运行的核心成本是模型调用费和观测基础设施。Logfire 提供免费额度适合小团队起步,大规模使用需按量付费。MCP 服务器如果自建,需额外考虑服务器托管成本。
采购建议:PoC 阶段零成本(MIT + TestModel + Logfire 免费额度);生产阶段预算主要分配给模型调用和观测。对于合规敏感行业,建议采购前确认 Logfire 的数据驻留政策与 SOC2 认证状态。
PydanticAI 的应用场景
-
企业级客服 Agent:银行、保险、电商的智能客服系统,需要结构化输出(工单、风险评分、操作指令)+ 人机审批(敏感操作确认)。核验重点:输出校验通过率、审批钩子延迟。
-
代码审查与自动化运维:利用 PydanticAI 的 ToolSearch 和 Capability 系统,构建可审查代码库、执行运维操作的 Agent。核验重点:工具调用准确率、误操作拦截率。
-
多模型路由与 A/B 测试:通过
SelectModelCapability 实现按任务复杂度路由到不同模型(简单问答用低成本模型,复杂推理用旗舰模型),降低整体 API 成本。核验重点:路由准确率、单次任务成本对比。 -
数据管道与 ETL 增强:Agent 从非结构化数据(PDF、图片 OCR)提取结构化信息,通过 Pydantic 模型校验后写入数据库。核验重点:字段提取准确率、异常重试成功率。
-
合规与审计工作流:利用耐用执行和完整调用链追踪,构建可审计的合规检查 Agent。所有模型请求、工具调用、审批操作均可回放。核验重点:审计完整性、耐用执行恢复成功率。
-
自动化测试与评测:使用
pydantic_evals子包对 Agent 行为进行系统化评测,配合 Logfire 监控生产表现。核验重点:评测覆盖率、生产-评测一致性。
不适配场景:需要极低延迟(<500ms)的实时对话系统(类型校验和重试机制会增加延迟);纯实验性、一次性脚本(PydanticAI 的类型约束带来不必要的复杂度);非 Python 技术栈团队。
PydanticAI 的适用人群
-
中大型 Python 研发团队:已有类型注解和单元测试文化,希望把 Agent 开发纳入标准软件工程流程(代码 review、CI/CD、回归测试)。PydanticAI 的类型系统和可测试性直接匹配其工程规范。
-
AI 应用架构师 / 技术负责人:需要评估多模型兼容性、可观测性、治理能力的技术选型者。PydanticAI 的 Capability 体系和耐用执行特性适合构建长期维护的 Agent 基础设施。
-
对 MCP 生态有需求的开发者:需要将 Agent 与外部 MCP 服务器(数据库、文件系统、第三方 API)集成的团队。PydanticAI 的
MCPCapability 提供了最简洁的 MCP 挂载方式。 -
注重可观测性的运维 / SRE 团队:需要完整追踪 Agent 调用链以快速定位问题的运维角色。Logfire/OTel 集成提供了从模型请求到数据库查询的全链路可观测性。
劝退人群:
- 只追求 30 分钟出 Demo 的个人开发者——LangChain 或直接 API 调用更直接。
- 非 Python 技术栈团队——框架强绑定 Python 生态。
- 极低延迟场景(实时语音对话、高频交易)——类型校验和重试机制会引入毫秒级延迟。
- 无工程规范意识的团队——缺少类型注解和测试的习惯,框架收益无法体现。
总结与展望
PydanticAI 的长期价值在于"确定性 Agent 开发"——将类型安全、可观测、可测试三个维度整合到统一的 Capability 体系中,让 Agent 开发从"提示词实验"进化为"软件工程"。对于具备工程纪律的中大型 Python 团队,这套组合的复利效应明显:项目规模越大、参与人数越多,类型系统带来的收益越突出。
当前限制与不确定项:
- Capability 体系的
AbstractCapability接口仍在演进中,v2.x 系列新增了get_wrapper_toolset、prepare_tools等方法,自定义 Capability 需关注基类变更。 - 耐用执行对动态 Capability(运行时构建的 Toolset)支持有限,官方在 #5253 中跟踪。
- 延迟工具加载(Tool Search)在非原生支持模型上的缓存前缀稳定性不如 OpenAI/Anthropic 原生方案。
- 企业级特性(RBAC、数据驻留、合规认证)依赖 Logfire 平台能力,框架本身不提供。
采购与采用风险评估:
- 试点策略:选择 1 个非关键业务线,用 PydanticAI 重构现有 Agent,与旧方案并行运行 2-4 周,对比开发效率、运行时稳定性、问题定位时长三项指标。
- 扩展条件:试点阶段类型错误拦截率 ≥ 99%、回归测试通过率 ≥ 95% 后可扩展至核心业务。
- 企业级核验:采购 Logfire 企业版前需确认数据驻留支持地区SOC2/GDPR 合规认证SLA 条款;MCP 服务器自建场景需评估凭证管理方案。
- 退出成本:框架本身 MIT 开源,无供应商锁定风险;但自定义 Capability 的业务逻辑迁移至其他框架时需重新实现。
相关工具:GitHub Copilot、
Cursor
版本信息
- 首次公开发布 :早期版本信息未完整公开,建议以官方更新日志为准。
- PydanticAI 0.2 :持续优化稳定性与开发者体验,具体能力以官方实时发布为准。
用户评价