当前位置: 首页 > article >正文

PydanticAI应用实战

PydanticAI 是一个 Python Agent 框架,旨在简化使用生成式 AI 构建生产级应用程序的过程。 它由 Pydantic 团队构建,该团队也开发了 Pydantic —— 一个在许多 Python LLM 生态系统中广泛使用的验证库。PydanticAI 的目标是为生成式 AI 应用开发带来类似 FastAPI 的体验,它基于 Pydantic 构建,并提供了强大的功能。

PydanticAI 的突出特点

  • Pydantic 团队构建: 由 Pydantic 核心团队开发,这意味着它拥有高质量的构建和维护。
  • 模型无关性: 支持 OpenAI、Anthropic、Gemini、Ollama、Groq 和 Mistral 等多种模型,并且易于扩展以支持其他模型。
  • Pydantic Logfire 集成: 无缝集成 Pydantic Logfire,可实时调试、性能监控和跟踪 LLM 应用的行为。
  • 类型安全: 旨在最大程度地提高类型检查的有效性,确保代码的可靠性。
  • Python 优先的设计: 利用 Python 的控制流程和代理组合来构建 AI 项目,易于应用标准的 Python 最佳实践。
  • 结构化响应: 使用 Pydantic 验证和结构化模型输出,确保响应的一致性。
  • 依赖注入系统: 提供可选的依赖注入系统,可将数据和服务传递给代理的系统提示、工具和结果验证器,便于测试和迭代开发。
  • 流式响应: 提供流式处理 LLM 输出的能力,实现即时验证,确保结果快速准确。
  • 图支持: Pydantic Graph 提供了一种强大的方式来使用类型提示定义图,这在复杂应用中非常有用,可以避免代码变得混乱。

安装 PydanticAI

你可以使用下面的脚本来安装PydanticAI:

pip install 'pydantic-ai[logfire]'

PydanticAI的简单应用

在下面的python脚本是我在jupyter notebook中写的,因此我在代码的开头会使用nest_asyncio 库的apply()方法,它的主要作用是 在已经运行的 asyncio 事件循环中允许嵌套地运行新的 asyncio 事件循环。接下来我们会定义一个LLM,这里我们会使用当前最火的deepseekV3模型,当然你也可以使用其他的国内模型,比如Kimi,GLM,QWEN等模型。

import nest_asyncio
nest_asyncio.apply()

from pydantic_ai import Agent
from pydantic_ai.models.openai import OpenAIModel

#DeepSeekv3
deepseek_model = OpenAIModel(
    'deepseek-chat',
    api_key='sk-xxxxxxxxx',
    base_url='https://api.deepseek.com',
    
)

# ##KIMI
# kimi_model = OpenAIModel(
#     'moonshot-v1-8k',
#     api_key='sk-xxxxxxxxxx',
#     base_url='https://api.moonshot.cn/v1',
    
# )

agent = Agent(model = deepseek_model)

result1 = agent.run_sync('你好')
print(result1.data)

这里我们看到与使用原生openai的框架相比使用 PydanticAI框架来调用LLM时,它的代码更为简洁,这也是我喜欢它的原因之一。

基本的结构化输出

结构化输出是PydanticAI的核心基础功能,它可以让LLM按照指定的格式输出用户想要的信息。比如我们想要让LLM从用户给定的信息中提取姓名,性别,出生日期,职业等信息,那么我们只要简单的定义一个 class就可以实现:

from pydantic import BaseModel
from pydantic_ai import Agent

#定义 class
class MyModel(BaseModel):
    name: str # 姓名
    gender: str # 性别
    birth: str # 出生日期
    Occupation: str # 职业

#DeepSeekv3
deepseek_model = OpenAIModel(
    'deepseek-chat',
    api_key='sk-XXXXXXXX',
    base_url='https://api.deepseek.com',
    
)

#定义agent
agent = Agent(deepseek_model,
              result_type=MyModel,
              )

#查看agent
agent

上面我们定义了一个agent, 它会调用deepseek-chat模型,接下来我们来实际执行这个agent, 让它从一堆文本信息中提取我们想要的姓名,性别,出生日期,职业等信息。

content="""
唐太宗李世民(598年1月28日—649年7月10日),唐朝第二任皇帝、第一任宰相。
唐高祖李渊次子,母亲太穆皇后窦氏,为中国历史上著名的政治家、军事家、民族共主,开创了奠定唐朝立国基础的“贞观之治”,
因此成为唐代乃至中国历史上最享负盛名的皇帝之一,亦是为后世争相效仿的明君典范之一。
在灭亡东突厥汗国之后,被九姓铁勒、西域诸国国王、吐火罗叶护尊称为“天可汗”,成为首位天可汗。
"""

result = agent.run_sync(content)
print(result.data)

上面我们让agent输出了用户信息中的所有姓名,性别,出生日期,职业等信息 ,除此之外我们还可以要求agent输出指定的信息:

print(result.data.name)
print(result.data.gender)
print(result.data.birth)
print(result.data.Occupation)


http://www.kler.cn/a/523971.html

相关文章:

  • 高级同步工具解析
  • Git进阶之旅:Git 配置信息 Config
  • 架构技能(六):软件设计(下)
  • 【教学类-89-01】20250127新年篇01—— 蛇年红包(WORD模版)
  • WSL 安装cuDNN
  • 如何在Spring Boot项目中高效集成Spring Security
  • aerodrome交易所读合约分析
  • 模板泛化类如何卸载释放内存
  • 【反悔堆】【hard】力扣871. 最低加油次数
  • 最近遇到的一些 Android 小问题
  • 省级数字经济发展水平数据(2011-2022年)-社科数据
  • goframe 多语言国际化解决方案
  • 使用numpy自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预
  • 16届蓝桥杯寒假刷题营】第2期DAY5IOI赛
  • Direct2D 极速教程(1) —— 画图形
  • Linux 学习笔记__Day3
  • 零刻SER7接口及配置跑分
  • AI 浪潮席卷中国年,开启科技新春新纪元
  • 创作三载·福启新章2025
  • 解决 -bash rz:command not found
  • [权限提升] 操作系统权限介绍
  • 二叉树-堆(补充)
  • 动态规划DP 数字三角型模型 最低通行费用(题目详解+C++代码完整实现)
  • vue中onclick如何调用methods中的方法
  • Zookeeper(32) Zookeeper的版本号(version)是什么?
  • 【BUUCTF】[羊城杯 2020]Blackcat1