Pydantic AI
用 Python 类型与 Pydantic 校验构建可组合的生成式 AI 应用。
- Star 数
- ★ 21k
- 最近更新
- 今天
- License
- MIT
- 主语言
- Python
- FA 评分
- 65/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- Python 后端团队为银行客服场景构建一线支持 Agent,并把客户 ID 与数据库连接作为
SupportDependencies注入工具。 - 不适合
- 希望零代码、纯图形界面搭建智能体的用户
- 不愿自行提供模型 API Key 或承担按量计费的个人
- 源码审查
- 65/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
Pydantic AI 是 Pydantic 团队提供的 Python 生成式 AI Agent 框架。开发者通过 Agent 定义模型、instructions、依赖类型和输出类型,并以同步 run_sync 或异步 run 执行一次对话。它可将函数注册为模型可调用的工具,并用 RunContext 向动态 instructions 和工具注入运行时依赖。输出可由 Pydantic 模型校验,框架还声明支持流式结构化输出、图、评估、持久化执行、MCP 与 UI 事件流。它适合希望以 Python 类型提示组织生产级 Agent 工作流的团队,但实际模型调用仍需接入所选模型或提供商。
应用先创建 Agent,例如传入 'anthropic:claude-sonnet-4-6' 或 'openai:gpt-5.2'、instructions、deps_type 和 output_type。随后调用 agent.run_sync(prompt) 或 await agent.run(prompt, deps=...),框架把 instructions 与用户提示发送给模型,并持续处理模型产生的工具调用,直到得到最终结果。使用 @agent.instructions 可依据 RunContext[DepsType] 动态生成 instructions;使用 @agent.tool 注册的函数会向模型提供工具描述和参数 schema。工具参数及 output_type 均使用 Pydantic 校验;校验失败时,README 说明会提示模型重试。最终结果从 result.output 读取,可为文本或指定的结构化 Pydantic 输出。
- Python 后端团队为银行客服场景构建一线支持 Agent,并把客户 ID 与数据库连接作为
SupportDependencies注入工具。 - 需要返回固定字段的应用团队用
BaseModel定义风险等级、建议和操作标志,并以output_type校验模型结果。 - 希望让模型查询业务数据的开发者,将异步 Python 函数以
@agent.tool注册,例如读取客户余额。 - 需要按用户、会话或业务上下文调整提示词的团队,用
@agent.instructions和RunContext生成动态 instructions。 - 构建复杂或长时运行工作流的工程团队,评估其图、持久化执行、人工审批和 MCP 集成能力。
如何安装或部署这个 Agent?
提供的材料只说明需要安装 pydantic_ai 包,并链接到安装页面;未提供可复制的安装命令、Python 版本要求、包版本约束或凭据配置步骤。因此无法仅依据现有材料给出准确安装命令。运行示例还需要为所选模型提供商配置其访问凭据,但材料未说明具体环境变量或认证方式。
如何使用这个 Agent?
安装并配置所选模型提供商的凭据后,可按示例创建并运行 Agent:from pydantic_ai import 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?');然后读取 result.output。需要结构化输出时,在 Agent 中传入 Pydantic BaseModel 作为 output_type;需要异步依赖和工具时,使用 await support_agent.run(..., deps=deps),并通过 @support_agent.tool 注册函数。
这个 Agent 有哪些优点和局限?
- 以
Agent[Dependencies, Output]、RunContext和 Python 类型提示组织依赖与返回值,示例明确展示了静态类型检查的使用方式。 - 工具参数和结构化输出使用 Pydantic 校验;材料说明输出校验失败会让模型重试。
- 声明支持 OpenAI、Anthropic、Gemini、DeepSeek、Mistral、Amazon Bedrock、Ollama、LiteLLM 等多种模型或提供商,并允许实现 custom model。
- 可组合 capabilities 覆盖 thinking、web search 和 MCP,并声明可使用 YAML/JSON 定义 Agent。
- 与 Pydantic Logfire 和兼容 OpenTelemetry 的其他可观测性后端集成,用于追踪、评估和成本监控。
- 提供的材料没有给出安装命令、Python 版本、依赖锁定方式或凭据配置,首次接入仍需查明这些运行细节。
- 实际运行依赖所选择的模型或提供商;不同提供商、模型和 capability 的可用性及成本并未在材料中逐项说明。
- 动态 instructions、工具和依赖注入要求应用自行实现数据库连接、业务逻辑及错误处理,框架不会提供这些业务系统。
- 尽管声明支持持久化执行、人工审批、MCP、图和 UI 事件流,材料未给出这些功能的最小配置或完整端到端示例。
- Pydantic 校验失败时会要求模型重试,这可能增加模型调用次数和延迟。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Pydantic AI 当前 | 65 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 21k | 今天 | Python | OpenAI API · Claude API |
| AgentLoom 多智能体工作流编排 | 52 · 缺口较多 | — | ★ 169 | 今天 | Python | OpenAI API |
| Julep — 持久化、可组合的 AI 智能体框架 | 64 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 6.6k | 3 个月前 | Python | — |
| Agently AI 应用运行时 | 63 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 1.7k | 24 天前 | Python | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:README 明确支持人类在环工具审批(human-in-the-loop tool approval),表明用户确认机制存在;pyproject.toml 包含安全驱动的依赖版本下限(如 urllib3>=2.7.0, cryptography>=48.0.1),体现依赖安全考虑;但未发现最小权限原则的明确文档,数据流透明性仅通过可观测性集成间接体现,敏感数据处理和外部影响(如工具调用副作用)缺乏详细说明,回滚机制未提及。扣分原因:最小权限、数据流透明性、敏感数据处理、外部影响、回滚均缺乏直接证据。
证据显示:README 和 pyproject.toml 描述一致,框架定位清晰;依赖管理使用 uv workspace 和约束依赖,但未提供依赖可用性保证(如镜像或锁定文件);失败消息方面,测试配置中 filterwarnings 和错误处理表明有一定关注,但未提供面向用户的失败消息文档。扣分原因:依赖可用性和失败消息缺乏直接证据。
证据显示:README 明确目标受众为生产级应用开发者,场景覆盖广泛(工具、结构化输出、流式、图等);能力边界通过可组合能力(capabilities)和自定义模型接口说明;触发精度方面,工具和指令的注册机制清晰;环境适配支持多种模型和提供商,但未明确部署环境要求。扣分原因:环境适配缺乏具体部署说明。
证据显示:README 结构清晰,包含文档链接、示例、下一步;安装说明指向文档,但未在仓库内提供详细步骤;命名稳定,包名和 CLI 命令明确;示例丰富,包含 Hello World 和工具示例;已知限制未明确列出;许可证为 MIT,清晰;版本化通过动态版本和 changelog 链接,但未提供详细变更日志;维护责任由 Pydantic 团队承担,但未验证。扣分原因:安装说明、已知限制、版本化变更日志、维护责任证据不足。
证据显示:输出可用性通过结构化输出和流式输出保证;边际价值高,提供类型安全、可观测性、评估等独特功能;成本效益方面,开源免费,但未提供性能或资源消耗数据。扣分原因:成本效益缺乏数据支持。
证据显示:README 中的声明(如模型支持、功能)可追溯到文档和代码;跨源佐证方面,README 与 pyproject.toml 一致,但未与其他独立来源交叉验证;事实与推断分离方面,README 明确区分了功能描述和示例,但未明确标注推断。扣分原因:跨源佐证和事实推断分离缺乏明确证据。
- 发布者身份未经验证,应视为未知,不要基于品牌推断安全性。
- 静态审查无法验证实际执行行为,所有评分基于源代码和文档,置信度低。
- 依赖安全虽有版本下限,但未提供锁文件或供应链验证,实际部署时需自行确认。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
v1.107.10 v1.107.10 (2026-11-04)
发布说明摘录
What's Changed 🛡️ Security * [GHSA-m5vj-8mcw-82qx](https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-m5vj-8mcw-82qx) (high): web_fetch_tool and the WebFetch capability's local fallback re-indented a JSON response on the event loop before applying the returned-content limit, so a deeply nested document within the download size limit could expand to hundreds of times its size, using large amounts of memory and delaying other work in the same process. You are affected if an attacker can choose or influence the URLs the tool fetches. Provider-native web fetching is not af …在 GitHub 查看 ↗ -
v2.66.0 v2.66.0 (2026-11-04)
发布说明摘录
<!-- Release notes generated using configuration in .github/release.yml at 7d1d3f0191fd5d500b02e58dee2bf6d7adc1b967 --> What's Changed 🛡️ Security * [GHSA-m5vj-8mcw-82qx](https://github.com/pydantic/pydantic-ai/security/advisories/GHSA-m5vj-8mcw-82qx) (high): web_fetch_tool and the WebFetch capability's local fallback re-indented a JSON response on the event loop before applying the returned-content limit, so a deeply nested document within the download size limit could expand to hundreds of times its size, using large amounts of memory and delaying other work in the same process. …在 GitHub 查看 ↗ -
v2.65.0 v2.65.0 (2026-11-02)
发布说明摘录
<!-- Release notes generated using configuration in .github/release.yml at a56a6d6f138d1e3a9c45a9697ea513bef47a6cea --> What's Changed ⚠️ Compatibility Notes * Protect the gh-aw canonical session capture from agent tools by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/10606 * Add multimodal notes to AskUserAnswer by @dsfaccini in https://github.com/pydantic/pydantic-ai/pull/11664 * Count BrowserUse model calls toward the host run's usage and UsageLimits by @mpfaffenberger in https://github.com/pydantic/pydantic-ai/pull/11860 …在 GitHub 查看 ↗
常见问题
它是否绑定某一家模型提供商?
模型输出如何保证符合业务结构?
BaseModel 作为 output_type 传入 Agent。材料说明结果会被校验;若校验失败,模型会被提示重试。能否让模型调用内部业务函数?
@agent.tool 注册函数,函数参数会成为传给模型的工具 schema;RunContext 可携带应用注入的依赖。