AI个人学习
和实操指南

PydanticAI:使用Pydantic构建生成式AI应用,让构建生产级AI应用更加简单

综合介绍

PydanticAI是一个基于Pydantic的Python代理框架,旨在简化生成式AI应用的开发。它由Pydantic团队开发,支持多种模型(如OpenAI、Gemini、Groq等),并提供类型安全的控制流和代理组合。PydanticAI通过结构化响应验证和流式响应,确保生成式AI应用的高效性和可靠性。其独特的依赖注入系统有助于测试和迭代开发,并集成了Logfire用于调试和监控应用性能。PydanticAI目前处于早期测试阶段,API可能会有变动,欢迎用户反馈。

 

功能列表

  • 多模型支持:兼容OpenAI、Gemini、Groq等多种生成式AI模型。
  • 类型安全:使用Pydantic进行结构化响应验证,确保数据类型安全。
  • 依赖注入系统:提供类型安全的依赖注入,便于测试和迭代开发。
  • 流式响应:支持流式响应和验证,提高应用响应速度和可靠性。
  • Logfire集成:用于调试和监控生成式AI应用的性能和行为。
  • 简单接口:提供简洁的接口,便于扩展和集成其他模型。

 

使用帮助

安装流程

  1. 安装PydanticAI:确保Python版本为3.9及以上,使用以下命令安装PydanticAI:
   pip install pydantic-ai
  1. 安装依赖:PydanticAI依赖于一些核心库和LLM API,安装时会自动处理这些依赖。

使用指南

创建简单代理

  1. 定义代理:创建一个简单的代理并指定使用的模型。
   from pydantic_ai import Agent
agent = Agent(
'gemini-1.5-flash',
system_prompt='Be concise, reply with one sentence.',
)
  1. 运行代理:同步运行代理,进行简单的对话。
   result = agent.run_sync('Where does "hello world" come from?')
print(result.data)

复杂代理示例

  1. 定义依赖和结果模型:使用Pydantic定义依赖和结果模型。
   from dataclasses import dataclass
from pydantic import BaseModel, Field
from pydantic_ai import Agent, RunContext
from bank_database import DatabaseConn
@dataclass
class SupportDependencies:
customer_id: int
db: DatabaseConn
class SupportResult(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)
  1. 创建支持代理:定义系统提示和工具函数。
   support_agent = Agent(
'openai:gpt-4o',
deps_type=SupportDependencies,
result_type=SupportResult,
system_prompt=(
'You are a support agent in our bank, give the '
'customer support and judge the risk level of their query.'
),
)
@support_agent.system_prompt
async def add_customer_name(ctx: RunContext[SupportDependencies]) -> str:
customer_name = await ctx.deps.db.customer_name(id=ctx.deps.customer_id)
return f"The customer's name is {customer_name!r}"
@support_agent.tool
async def customer_balance(ctx: RunContext[SupportDependencies], 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)
  1. 运行支持代理:使用定义的依赖运行代理。
   async def main():
deps = SupportDependencies(customer_id=123, db=DatabaseConn())
result = await support_agent.run('What is my balance?', deps=deps)
print(result.data)
# 输出示例:support_advice='Hello John, your current account balance, including pending transactions, is $123.45.' block_card=False risk=1
result = await support_agent.run('I just lost my card!', deps=deps)
print(result.data)
# 输出示例:support_advice="I'm sorry to hear that, John. Your card has been blocked for security reasons." block_card=True risk=7

调试和监控

PydanticAI集成了Logfire,用于调试和监控生成式AI应用的性能和行为。通过Logfire,可以实时查看代理运行情况,分析响应数据,优化应用性能。

反馈和改进

PydanticAI目前处于早期测试阶段,API可能会有变动。用户在使用过程中遇到任何问题或有改进建议,欢迎通过GitHub提交反馈。


AI轻松学

普通人的AI入门指南

帮助你以低成本、零基础学会如何利用AI工具。AI就像办公软件一样,是每个人的必备技能。 掌握AI会让你在求职中占据优势,在未来的工作和学习中事半功倍。

查看详情>
未经允许不得转载:首席AI分享圈 » PydanticAI:使用Pydantic构建生成式AI应用,让构建生产级AI应用更加简单

首席AI分享圈

首席AI分享圈专注于人工智能学习,提供全面的AI学习内容、AI工具和实操指导。我们的目标是通过高质量的内容和实践经验分享,帮助用户掌握AI技术,一起挖掘AI的无限潜能。无论您是AI初学者还是资深专家,这里都是您获取知识、提升技能、实现创新的理想之地。

联系我们
zh_CN简体中文