PydanticAI应用实战

  • 👉👉👉承接各类AI相关应用开发项目(包括但不限于大模型微调、RAG、AI智能体、NLP、机器学习算法、运筹优化算法、数据分析EDA等) !!!
  • 👉👉👉 有意愿请私信!!!

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
### Pydantic AI 文档概述 Pydantic 是一个用于数据验证和设置管理的 Python 库,利用 Python 类型提示来实现快速、可读的数据解析。对于涉及人工智能应用程序开发而言,Pydantic 提供了一种简洁而强大的方式来定义模型结构及其属性。 #### 定义AI模型 通过继承 `BaseModel` 类可以轻松创建新的数据模型[^1]: ```python from pydantic import BaseModel, Field class AIDataModel(BaseModel): input_data: str = Field(..., description="Input data for the model", example="Sample Input") output_result: float = Field(0.0, description="Output result from the model after processing.") ``` 此段代码展示了如何构建一个简单的AI输入输出模型,其中包含了必要的字段以及它们各自的描述信息。 #### 数据校验与转换 当实例化上述类时,Pydantic 自动执行严格的类型检查并尝试将传入值转换为目标类型。如果提供了不符合预期类型的参数,则会抛出错误通知开发者存在问题: ```python try: ai_model_instance = AIDataModel(input_data=123) # 这里应该是一个字符串而不是整数 except ValueError as e: print(f"Error occurred during validation: {e}") ``` 这种特性极大地提高了应用程序的安全性和可靠性,在处理来自不同源的数据时尤为重要。 #### 集成其他库 除了基本功能外,Pydantic 还支持与其他流行框架集成,比如 FastAPI 或者 Starlette 等 web 框架,使得 API 开发更加便捷高效。此外,也可以方便地结合像 NumPy 数组这样的科学计算工具一起工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

-派神-

感谢您慷慨解囊,我会更加努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值