第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

PydanticAI:打造穩(wěn)健的生成式AI代理框架

使用Pydantic与大模型的代理框架

感谢julienTromeur拍摄,照片来自Unsplash

生成式AI领域是人类历史上增长最快的技术领域之一。正如你可能听说的,2025年将是AI代理或多个AI代理的时代,从单一的大型语言模型转向。当前的发展趋势也证实了这一点:像AWS、OpenAI、微软等大型科技巨头相继推出了AI代理框架。

PydanticAI 演示应用

到目前为止,所有发布的版本中,PydanticAI 代理框架工具被认为是最有用和最重要的一个发布,由于它支持 Pydantic 和 LLMs 的结合。

点击 Gumroad 上的 datasciencepocket 进行订阅。datasciencepocket.gumroad.com

在我们理解为什么PydanticAI是一个重要的框架之前,我们首先需要理解。

Pydantic是什么?

Pydantic 是一个用于轻松验证和解析数据过程的 Python 库。它帮助确保您的数据准确且符合预期的结构。在处理诸如 JSON 文件、用户数据或 API 响应之类的外部输入时特别有用。

不必为每个字段手动编写这些检查(例如,“是不是整数?字符串是否过长?”),Pydantic 利用 模型 自动执行这些检查。

比如说你在做一个App,让用户都填写他们的姓名、年龄和电子邮件。你希望确保用户提交的信息准确无误:

名字是字符串形式的。

年龄是数字形式的。

邮箱地址格式正确。

Pydantic 如何让这变得更容易如下:

    从 pydantic 导入 BaseModel, EmailStr  # 导入所需的模块

    # 定义一个用户模型
    class User(BaseModel):  
        name: str  
        age: int  
        email: EmailStr  

    # 示例输入数据  
    user_data = {  
        "name": "Alice",  
        "age": 25,  
        "email": "alice@example.com"  
    }  

    # 验证输入数据  
    user = User(**user_data)  

    print(user.name)  # Alice  
    print(user.age)   # 25  
    print(user.email) # alice@example.com
如果数据不对怎么办?

如果用户输入了无效的数据(例如:“age": "twenty-five"),Pydantic 会自动报错:

    user_data = {  
        "name": "Alice",  
        "age": "twenty-five",  # 错误  
        "email": "alice@example.com"  
    }  

    user = User(**user_data)  
    # 错误:年龄不是一个有效的整数

在部署过程中,Pydantic非常重要,通常必须遵循其规则。

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

错误处理和调试: 它提供清晰的错误信息,使生产调试更快更简单。

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

与 FastAPI 融合良好: 它与 FastAPI 无缝合作,定义输入输出模型以处理生产环境中的 HTTP 数据。

确保微服务的健壮性: Pydantic 确保微服务之间一致且有效的数据交换,避免集成错误。

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

现在,我们已经理解了 Pydantic 的重要性,让我们回到 PydanticAI。

PydanticAI的关键特性:

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

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

基于 Pydantic 专家级开发:由 Pydantic 的创建者开发,是 LangChain、OpenAI SDK 等流行框架的核心。

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

符合 Python 编程风格:采用标准的 Python 编程实践进行代理组合和控制流设计,便于开发者使用。

使用 Logfire 监控:集成 Logfire 以追踪性能和调试 AI 驱动的应用程序。

类型安全操作:确保健壮、类型检查的工作流程,减少运行时错误。

处于活跃的测试版:目前处于测试版,提供持续改进和反馈驱动更新的空间。

代码和配置

让我们快速创建一个简易的 PydanticAI 程序,并看看它是怎么工作的

运行 pip install 命令

    pip install 'pydantic-ai-slim[openai,vertexai,logfire]'

这将安装带有openai、vertexai和logfire扩展的pydantic-ai-slim包。

2. 设置您的LLM提供商的API密钥。Pydantic可以立即与OpenAI、Groq和VertexAI等提供商一起使用。

2. 创建一个使用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='查询的风险等级(0到10)', 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}'"  

@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='你好,John。你的当前账户余额(含未完成交易)是 $123.45。' block_card=False risk=1  
    """  

    result = await support_agent.run('我刚刚把我的卡弄丢了!', deps=deps)  
    print(result.data)  
    """  
    support_advice="听到这个消息我很难过,John。我们将暂时冻结你的卡以防止未经授权的交易。" block_card=True risk=8  
    """

了解编程代码的意思

数据类装饰器(支持依赖)
  • 目的:定义代理需要的依赖项,例如客户ID和数据库连接(db)。
  • 用途:传递给代理,以便在查询时访问特定客户的资料信息。
支持结果
  • 目的是:规定代理的输出的结构化格式。

support_advice: 为客户提供支持的建议。

block_card: 是否需要冻结客户的卡片。

risk: 描述情况的风险等级(0到10)。

  • 验证:保证数据正确性(例如,risk 必须介于 0 和 10 之间)。
代理配置
  • 使用 openai:gpt-4o 模型来生成响应。
  • 指定依赖类型(deps_type)和预期输出(result_type)。
  • 包含一个系统提示,用于为代理设定上下文,指示其提供支持并评估查询的风险。
系统提示的作用

目的:动态地通过查询数据库,在系统提示中加入客户的姓名,以增强系统提示。

它是怎么工作的

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

返回一个包含客户姓名的字符串,以便更好地个性化交互。

自定义工具(Custom Tool)

目的说明:增加一个功能来查询客户的账户余额,可以选择包含未完成的交易。

它是怎么工作的

根据客户ID和 include_pending 标记查询数据库。

返回余额(浮点数形式)。

运行代理程序

目的:展示如何通过传递查询和依赖与代理互动。

步骤如下

创建一个 SupportDependencies 对象,使用客户 ID 和数据库连接。

调用代理的 run 方法,传入查询 ('What is my balance?')。

代理根据查询、依赖项和工具生成回复。

正如你所观察到的,输出遵循SupportResult (Risk是整数, Block_card是布尔值)类的定义,因此解决了从LLMs获取结构化输出的一大难题。

结尾

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

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

舉報(bào)

0/150
提交
取消