pydantic-ai

GitHub
16.2k 1.9k 简单 1 次阅读 今天MIT语言模型开发框架Agent
AI 解读 由 AI 自动生成,仅供参考

pydantic-ai 是一个专为生成式 AI 打造的 Python 智能体框架,旨在帮助开发者快速、自信地构建生产级应用与工作流。它由 Pydantic 核心团队开发,将 FastAPI 那种优雅、高效的开发体验引入到了 AI 领域,解决了现有框架在类型安全、调试便利性及生产可靠性上的不足。

该工具特别适合希望构建高质量 AI 应用的 Python 开发者。其核心亮点在于“原生类型安全”,利用 Pydantic 强大的数据验证能力,将大量潜在的运行时错误提前至编码阶段发现,让 IDE 能提供更精准的自动补全与检查,带来类似 Rust“编译即正确”的安心感。同时,pydantic-ai 具有极强的模型兼容性,支持 OpenAI、Anthropic、Gemini 等主流大模型及各类云服务商,并允许轻松自定义模型接入。此外,它还深度集成了可观测性平台 Pydantic Logfire,提供实时的链路追踪、行为监控与成本分析,让复杂的 AI 交互过程透明可控。如果你正在寻找一个既严谨又灵活的方案来落地 AI 智能体,pydantic-ai 值得尝试。

使用场景

某电商公司的后端团队正在开发一个智能客服 Agent,需要自动解析用户复杂的退货请求并提取结构化数据(如订单号、退货原因、商品状态),以便直接写入数据库。

没有 pydantic-ai 时

  • 类型安全缺失:开发者需手动编写大量正则或解析逻辑来清洗 LLM 返回的 JSON,运行时经常因字段缺失或格式错误导致程序崩溃。
  • 调试黑盒化:当 Agent 做出错误决策时,缺乏内置的追踪机制,难以复现是提示词问题还是模型幻觉,排查耗时极长。
  • 供应商锁定风险:代码深度耦合特定厂商(如 OpenAI)的 SDK,若想切换至国产模型或本地部署的 Ollama,几乎需要重写整个交互层。
  • 测试评估困难:缺乏系统化的评估工具,无法在上线前批量验证 Agent 对不同退货场景的处理准确率,只能靠人工抽检。

使用 pydantic-ai 后

  • 编译期纠错:利用 Pydantic 模型定义期望输出,IDE 即可提供自动补全和静态类型检查,将大部分数据结构错误拦截在编码阶段。
  • 无缝可观测性:原生集成 Pydantic Logfire,自动记录每次调用的完整轨迹、Token 消耗及延迟,支持实时调试与性能监控。
  • 模型无关架构:通过统一接口轻松切换底层模型,从 Gemini 切换到 DeepSeek 仅需修改一行配置,业务逻辑无需任何变动。
  • 系统化评估:内置强大的 Evals 框架,可自动化运行数百个测试用例,量化评估 Agent 在各类边缘案例下的表现,确保上线质量。

pydantic-ai 将生成式 AI 开发从“手工拼凑”提升为“工程化构建”,让团队能像开发传统 Web 服务一样自信地交付生产级 AI 应用。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes该工具是一个代理框架,本身不包含模型权重,主要依赖外部 API(如 OpenAI、Anthropic 等)或本地服务(如 Ollama)。因此对本地 GPU 和内存无特殊硬性要求,具体取决于所选用的模型后端。需配置相应模型的 API Key 或本地服务地址。
python3.8+
pydantic
httpx
eval-type-backport
pydantic-ai hero image

快速开始

GenAI 代理框架,以 Pydantic 的方式构建

CI 覆盖率 PyPI 版本 许可证 加入 Slack

文档: ai.pydantic.dev


Pydantic AI 是一个 Python 代理框架,旨在帮助您快速、自信且轻松地使用生成式 AI 构建生产级应用和工作流。

FastAPI 通过创新且人体工学的设计,彻底改变了 Web 开发,其基础是 Pydantic 验证以及现代 Python 特性,如类型提示。

然而,尽管几乎每个 Python 代理框架和 LLM 库都使用了 Pydantic 验证,但当我们开始在 Pydantic Logfire 中使用 LLM 时,却找不到任何能给我们带来同样感觉的东西。

我们构建 Pydantic AI 的目标很简单:将 FastAPI 的那种开发体验带到 GenAI 应用和代理开发中。

为什么选择 Pydantic AI

  1. 由 Pydantic 团队打造: Pydantic 验证 是 OpenAI SDK、Google ADK、Anthropic SDK、LangChain、LlamaIndex、AutoGPT、Transformers、CrewAI、Instructor 等众多工具的验证层。既然可以直接使用源头技术,为何还要使用衍生品呢? :smiley:

  2. 模型无关: 支持几乎所有 模型 和提供商:OpenAI、Anthropic、Gemini、DeepSeek、Grok、Cohere、Mistral 和 Perplexity;Azure AI Foundry、Amazon Bedrock、Google Vertex AI、Ollama、LiteLLM、Groq、OpenRouter、Together AI、Fireworks AI、Cerebras、Hugging Face、GitHub、Heroku、Vercel、Nebius、OVHcloud、Alibaba Cloud、SambaNova 和 Outlines。如果您喜欢的模型或提供商未列出,也可以轻松实现 自定义模型

  3. 无缝可观测性: 与我们的通用 OpenTelemetry 可观测平台 Pydantic Logfire 紧密 集成,可实现实时调试、基于评估的性能监控,以及行为、追踪和成本跟踪。如果您已有支持 OTel 的可观测性平台,也可以 使用该平台

  4. 完全类型安全: 设计旨在为您的 IDE 或 AI 编码助手提供尽可能多的上下文信息,以实现自动补全和 类型检查,从而将大量错误从运行时转移到编写时,带来类似 Rust 的“如果能编译,就一定有效”的开发体验。

  5. 强大的评估功能: 使您能够系统地测试和 评估 所构建代理系统的性能和准确性,并在 Pydantic Logfire 中持续监控其表现。

  6. 设计上高度可扩展: 您可以从可组合的 能力 中构建代理,这些能力将工具、钩子、指令和模型设置打包成可重用单元。使用内置的能力进行 网页搜索思考MCP,也可以自行构建,或安装 第三方能力包。整个代理的定义都可以用 YAML/JSON 来完成——无需编写代码。

  7. MCP、A2A 和 UI: 集成了 模型上下文协议Agent2Agent 以及多种 UI 事件流 标准,使您的代理能够访问外部工具和数据,与其他代理互操作,并构建基于流式事件通信的交互式应用。

  8. 人工介入工具审批: 可以轻松标记某些工具调用需要 审批 后才能继续执行,具体取决于工具调用参数、对话历史或用户偏好。

  9. 持久化执行: 使您能够构建 持久化代理,即使在临时性的 API 故障、应用程序错误或重启情况下也能保留进度,并以生产级可靠性处理长时间运行、异步以及涉及人工干预的工作流。

  10. 流式输出: 提供持续 流式 输出结构化结果的能力,同时进行即时验证,确保实时访问生成的数据。

  11. 图支持: 提供了一种强大的方式,利用类型提示来定义 ,适用于标准控制流程容易演变成“意大利面代码”的复杂应用中。

不过说真的,再长的列表也不如亲自 试一试 来得有说服力!看看它带给您的感受吧!

Hello World 示例

以下是 Pydantic AI 的一个极简示例:

from pydantic_ai import Agent

# 定义一个非常简单的代理,包括要使用的模型;您也可以在运行代理时指定模型。
agent = Agent(
    'anthropic:claude-sonnet-4-6',
    # 使用代理的关键字参数注册静态指令。
    # 对于更复杂的动态生成指令,请参阅下面的示例。
    instructions='言简意赅,只回复一句话。',
)

# 同步运行代理,与大语言模型进行对话。
result = agent.run_sync('“hello world”是从哪里来的?')
print(result.output)
"""
“hello, world”最早见于1974年一本关于C语言的教科书。
"""

(此示例已完整,可在安装了 pydantic_ai 包的情况下直接运行。)

交互过程将非常简短:Pydantic AI 会将指令和用户提示发送给大语言模型,模型则会返回一段文本响应。

目前这还显得不够有趣,但我们可以通过添加工具动态指令结构化输出,或可组合的能力,来构建更强大的智能体。

以下是同一个智能体,但增加了思考网络搜索能力:

from pydantic_ai import Agent
from pydantic_ai.capabilities import Thinking, WebSearch

agent = Agent(
    'anthropic:claude-sonnet-4-6',
    instructions='请简洁回答,只用一句话。',
    capabilities=[Thinking(), WebSearch()],
)

result = agent.run_sync('今年发现的最大陨石质量是多少?')
print(result.output)

工具与依赖注入示例

以下是一个使用 Pydantic AI 构建银行客服代理的简洁示例:

(更详细的文档示例请参见 文档)

from dataclasses import dataclass

from pydantic import BaseModel, Field
from pydantic_ai import Agent, RunContext

from bank_database import DatabaseConn


# SupportDependencies 用于将运行时所需的数据、连接和逻辑传递给模型,以便在执行指令和工具函数时使用。
# 依赖注入提供了一种类型安全的方式来自定义智能体的行为。
@dataclass
class SupportDependencies:
    customer_id: int
    db: DatabaseConn


# 此 Pydantic 模型定义了智能体返回的输出结构。
class SupportOutput(BaseModel):
    support_advice: str = Field(description='返回给客户的建议')
    block_card: bool = Field(description="是否需要冻结客户的银行卡")
    risk: int = Field(description='查询的风险等级', ge=0, le=10)


# 此智能体将作为银行的一线客服代理。
# 智能体对接受的依赖类型和返回的输出类型都是通用的。
# 在本例中,客服智能体的类型为 `Agent[SupportDependencies, SupportOutput]`。
support_agent = Agent(
    'openai:gpt-5.2',
    deps_type=SupportDependencies,
    # 智能体的响应将被保证为 SupportOutput 类型,
    # 如果验证失败,智能体会被提示重新尝试。
    output_type=SupportOutput,
    instructions=(
        '您是我们银行的客服代表,请为客户提供支持,并评估其咨询的风险等级。'
    ),
)


# 动态指令可以利用依赖注入功能。
# 依赖项通过 `RunContext` 参数传递,该参数以上述 `deps_type` 为泛型。
# 如果这里的类型注解有误,静态类型检查器会捕获它。
@support_agent.instructions
async def add_customer_name(ctx: RunContext[SupportDependencies]) -> str:
    customer_name = await ctx.deps.db.customer_name(id=ctx.deps.customer_id)
    return f"客户的姓名是 {customer_name!r}"


# 使用 `tool` 装饰器可以注册一些函数,这些函数可以在大语言模型响应用户请求时被调用。
# 再次强调,依赖项通过 `RunContext` 传递,其他参数则会成为传递给大语言模型的工具接口。
# Pydantic 用于验证这些参数,如果出现错误,会反馈给大语言模型以便其重试。
@support_agent.tool
async def customer_balance(
        ctx: RunContext[SupportDependencies], include_pending: bool
) -> float:
    """返回客户的当前账户余额。"""
    # 工具的文档字符串也会作为工具描述传递给大语言模型。
    # 参数描述会从文档字符串中提取,并添加到发送给大语言模型的参数模式中。
    balance = await ctx.deps.db.customer_balance(
        id=ctx.deps.customer_id,
        include_pending=include_pending,
    )
    return balance


...  # 在实际应用中,您还可以添加更多工具和更长的系统提示


async def main():
    deps = SupportDependencies(customer_id=123, db=DatabaseConn())
    # 异步运行智能体,与大语言模型进行对话,直到获得最终响应。
    # 即使在这个相对简单的场景中,智能体也会在调用工具获取结果的过程中与大语言模型多次交互。
    result = await support_agent.run('我的余额是多少?', deps=deps)
    # `result.output` 将使用 Pydantic 进行验证,以确保其符合 `SupportOutput` 类型。由于智能体是通用的,
    # 它的类型也将被标注为 `SupportOutput`,从而有助于静态类型检查。
    print(result.output)
    """
    support_advice='您好,约翰,您当前账户的余额(包括未结算交易)为123.45美元。' block_card=False risk=1
    """

    result = await support_agent.run('我刚刚丢了卡!', deps=deps)
    print(result.output)
    """
    support_advice="很抱歉听到这个消息,约翰。我们已暂时冻结您的卡片,以防止未经授权的交易。" block_card=True risk=8
    """

下一步

要亲自体验 Pydantic AI,请先安装,然后按照示例中的说明操作。

阅读文档以了解更多关于使用 Pydantic AI 构建应用程序的信息。

查阅API 参考以理解 Pydantic AI 的接口。

如果您有任何问题,欢迎加入 Slack 或在 GitHub 上提交问题。

版本历史

v1.78.02026/04/08
v1.77.02026/04/03
v1.76.02026/04/02
v1.75.02026/04/01
v1.74.02026/03/31
v1.73.02026/03/27
v1.72.02026/03/26
v1.71.02026/03/24
v1.70.02026/03/18
v1.69.02026/03/17
v1.68.02026/03/13
v1.67.02026/03/06
v1.66.02026/03/05
v1.65.02026/03/03
v1.64.02026/03/02
v1.63.02026/02/23
v1.62.02026/02/19
v1.61.02026/02/18
v1.60.02026/02/17
v1.59.02026/02/14

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|4天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|4天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

148.6k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|昨天
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|3天前
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|3天前
语言模型图像Agent