Type something to search...
完整指南:如何利用pydanticai框架提升llm的性能与效率!

完整指南:如何利用pydanticai框架提升llm的性能与效率!

Photo by julien Tromeur on Unsplash

生成式人工智能领域

生成式人工智能领域是人类历史上增长最快的领域之一。正如您可能听说的,2025年将是人工智能代理/多人工智能代理的年份,逐渐从单一的LLMs转变。目前的发展显示出相同的趋势:像AWS、OpenAI、Microsoft等大型企业相继发布了人工智能代理框架。

到目前为止,所有发布中,PydanticAI代理框架似乎是最有用和最重要的发布,因为它支持Pydantic与LLMs的结合。

在我们理解为什么PydanticAI是一个关键框架之前,我们必须理解

什么是 Pydantic?

Pydantic 是一个用于轻松验证和解析数据的 Python 库。它有助于确保您的数据是准确的,并遵循预期的结构。在处理外部输入,如 JSON 文件、用户数据或 API 响应时,它尤其有用。

与其手动为每个字段编写检查(例如,“这是否是一个整数?这个字符串太长了吗?”),Pydantic 通过使用 模型 自动化这些检查。

假设您正在制作一个应用程序,用户提交他们的姓名、年龄和电子邮件。您想确保:

姓名是一个字符串。

年龄是一个数字。

电子邮件是有效格式。

这里是 Pydantic 如何使这变得简单:

from pydantic import BaseModel, EmailStr

class User(BaseModel):
    name: str
    age: int
    email: EmailStr

user_data = {
    "name": "Alice",
    "age": 25,
    "email": "[email protected]"
}

user = User(**user_data)

print(user.name)  
print(user.age)   
print(user.email)

如果数据不正确怎么办?

如果用户提交了无效数据(例如,"age": "twenty-five"),Pydantic 将自动抛出错误:

user_data = {
    "name": "Alice",
    "age": "twenty-five",  
    "email": "[email protected]"
}

user = User(**user_data)

Pydantic 在部署中扮演着关键角色,因为通常必须遵循:

大规模数据验证: Pydantic 自动验证大规模输入数据,以确保其符合预期结构,从而减少错误。

错误处理和调试: 它为无效数据提供清晰的错误信息,使生产调试更快、更容易。

自动解析和序列化: Pydantic 自动将原始数据转换为可用格式,简化数据处理。

与 FastAPI 的良好集成: 它与 FastAPI 无缝协作,以定义处理生产中 HTTP 数据的输入/输出模型。

确保微服务的稳健性: Pydantic 确保微服务之间的一致和有效的数据交换,以避免集成问题。

防止安全问题: 它在入口点验证数据,以阻止恶意输入并增强应用程序安全性。

现在,既然我们了解了 Pydantic 的重要性,让我们回到 PydanticAI。

PydanticAI 的关键特性:

结构化响应处理:利用 Pydantic 验证静态和流式响应,确保可靠的数据处理。

多功能模型支持:与 OpenAI、Gemini 和 Groq 模型兼容,并提供简单的接口以集成其他模型。

扎根于 Pydantic 专业知识:由 Pydantic 的创建者开发,Pydantic 是 LangChain、OpenAI SDK 等流行框架的基础。

简化的依赖管理:引入类型安全的依赖注入系统,以简化测试和迭代开发。

Pythonic 设计:采用标准的 Python 编程实践进行 Agent 组合和控制流,使开发人员直观易用。

与 Logfire 监控:包括与 Logfire 的集成,以跟踪性能和调试 AI 驱动的应用程序。

类型安全的操作:确保强健的、经过类型检查的工作流程,最小化运行时错误。

处于积极的 Beta 阶段:目前处于测试阶段,提供持续改进和反馈驱动更新的空间。

代码和设置

让我们快速构建一个虚拟的 PydanticAI Agent,看看它是如何工作的

  1. Pip 安装

    pip install 'pydantic-ai-slim\[openai,vertexai,logfire\]'
    
  2. 为您的 LLM 提供者设置 API 令牌。 Pydantic 可以立即与 OpenAI、Groq 和 VertexAI 配合使用。

  3. 创建一个 PydanticAI Agent。 这段代码实现了一个 银行支持代理,使用 PydanticAI。它利用结构化依赖、定义的结果模式以及与数据库中客户数据交互的工具。

    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='返回给客户的建议')
        block_card: bool = Field(description="是否阻止客户的卡片")
        risk: int = Field(description='查询的风险级别', ge=0, le=10)
    
    support_agent = Agent(  
        'openai:gpt-4o',  
        deps_type=SupportDependencies,
        result_type=SupportResult,  
        system_prompt=(  
            '您是我们银行的支持代理,提供客户支持并判断他们查询的风险级别。'
        ),
    )
    
    @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"客户的名字是 {customer_name!r}"
    
    @support_agent.tool  
    async def customer_balance(
        ctx: RunContext[SupportDependencies], include_pending: bool
    ) -> float:
        """返回客户当前的账户余额."""  
        return await ctx.deps.db.customer_balance(
            id=ctx.deps.customer_id,
            include_pending=include_pending,
        )
    
    async def main():
        deps = SupportDependencies(customer_id=123, db=DatabaseConn())
        result = await support_agent.run('我当前的余额是多少?', deps=deps)  
        print(result.data)  
        """
        support_advice='你好,约翰,你当前的账户余额,包括待处理交易,是 $123.45。' block_card=False risk=1
        """
    
        result = await support_agent.run('我刚刚丢了我的卡!', deps=deps)
        print(result.data)
        """
        support_advice="很抱歉听到这个,约翰。我们暂时会阻止你的卡,以防止未经授权的交易。" block_card=True risk=8
        """
    

理解代码

Dataclass 装饰器(支持依赖)

  • 目的:定义 Agent 需要的依赖,例如客户 ID 和数据库连接 (db)。
  • 使用:传递给 Agent,以便在查询期间访问特定客户的数据。

SupportResult

  • 目的: 指定代理输出的结构化格式。

support_advice: 针对客户的文本建议。

block_card: 客户的卡是否应该被阻止。

risk: 查询中描述的情况的风险级别 (0-10)。

  • 验证: 强制数据完整性(例如,risk 必须在 0 和 10 之间)。

Agent Setup

  • 使用 openai:gpt-4o 模型生成响应。
  • 指定依赖项(deps_type)和预期输出(result_type)。
  • 包含一个 system prompt,设置代理的上下文,指示其提供支持并评估查询风险。

系统提示功能

目的:通过查询数据库动态丰富系统提示,包含客户的姓名。

工作原理

使用客户 ID (ctx.deps.customer_id) 访问数据库 (ctx.deps.db)。

返回一个包含客户姓名的字符串,以个性化互动。

自定义工具

目的:添加一个工具以获取客户的账户余额,可选择性地包括待处理的交易。

工作原理

使用客户 ID 和 include_pending 标志查询数据库。

返回余额,类型为浮点数。

运行代理

目的:演示如何通过传递查询和依赖项与代理进行交互。

步骤

  1. 创建一个 SupportDependencies 对象,包含客户 ID 和数据库连接。
  2. 使用查询调用代理的 run 方法('我的余额是多少?')。
  3. 代理根据查询、依赖项和工具生成响应。

正如您可能观察到的,输出以 SupportResult 类中定义的格式呈现(风险为 int,Block_card 为 Bool),因此解决了 LLMs 结构化输出的一个重大问题。

结论

总之,PydanticAI 提供了一个强大的框架,用于构建稳健的、生产级的生成式 AI 应用程序。通过利用 Pydantic 的数据验证能力并与 LLMs 无缝集成,它确保了结构化、类型安全和安全的交互。它的易用性以及对多种 AI 模型的支持,使其成为开发 AI 代理的开发者们不可或缺的工具。随着 PydanticAI 的不断发展,它有望简化 AI 驱动应用程序的开发,并增强其可靠性和可扩展性。

Related Posts

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

结合chatgpt-o3-mini与perplexity Deep Research的3步提示:提升论文写作质量的终极指南

AI 研究报告和论文写作 合并两个系统指令以获得两个模型的最佳效果 Perplexity AI 的 Deep Research 工具提供专家级的研究报告,而 OpenAI 的 ChatGPT-o3-mini-high 擅长推理。我发现你可以将它们结合起来生成令人难以置信的论文,这些论文比任何一个模型单独撰写的都要好。你只需要将这个一次性提示复制到 **

阅读更多
让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

让 Excel 过时的 10 种 Ai 工具:实现数据分析自动化,节省手工作业时间

Non members click here作为一名软件开发人员,多年来的一个发现总是让我感到惊讶,那就是人们还在 Excel

阅读更多
使用 ChatGPT 搜索网络功能的 10 种创意方法

使用 ChatGPT 搜索网络功能的 10 种创意方法

例如,提示和输出 你知道可以使用 ChatGPT 的“搜索网络”功能来完成许多任务,而不仅仅是基本的网络搜索吗? 对于那些不知道的人,ChatGPT 新的“搜索网络”功能提供实时信息。 截至撰写此帖时,该功能仅对使用 ChatGPT 4o 和 4o-mini 的付费会员开放。 ![](https://images.weserv.nl/?url=https://cdn-im

阅读更多
掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

掌握Ai代理:解密Google革命性白皮书的10个关键问题解答

10 个常见问题解答 本文是我推出的一个名为“10 个常见问题解答”的新系列的一部分。在本系列中,我旨在通过回答关于该主题的十个最常见问题来分解复杂的概念。我的目标是使用简单的语言和相关的类比,使这些想法易于理解。 图片来自 [Solen Feyissa](https://unsplash.com/@solenfeyissa?utm_source=medium&utm_medi

阅读更多
在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和技术领域保持领先地位的 10 项必学技能 📚

在人工智能和科技这样一个动态的行业中,保持领先意味着不断提升你的技能。无论你是希望深入了解人工智能模型性能、掌握数据分析,还是希望通过人工智能转变传统领域如法律,这些课程都是你成功的捷径。以下是一个精心策划的高价值课程列表,可以助力你的职业发展,并让你始终处于创新的前沿。 1. 生成性人工智能简介课程: [生成性人工智能简介](https://genai.works

阅读更多
揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

揭开真相!深度探悉DeepSeek AI的十大误区,您被误导了吗?

在AI军备竞赛中分辨事实与虚构 DeepSeek AI真的是它所宣传的游戏规则改变者,还是仅仅聪明的营销和战略炒作?👀 虽然一些人将其视为AI效率的革命性飞跃,但另一些人则认为它的成功建立在借用(甚至窃取的)创新和可疑的做法之上。传言称,DeepSeek的首席执行官在疫情期间像囤积卫生纸一样囤积Nvidia芯片——这只是冰山一角。 从其声称的550万美元培训预算到使用Open

阅读更多
Type something to search...