搜索
首页科技周边人工智能使用Pydanticai建立生产级LLM驱动的应用

在软件开发的快速发展的景观中,人工智能,数据验证和数据库管理的交集开辟了前所未有的可能性。这篇博客文章探讨了使用最新的Pydanticai Framework和Google的Gemini-1.5模型来探讨SQL代码生成和SQL代码说明的创新方法,以展示尖端AI技术如何简化和增强数据库查询开发。

对于开发人员,数据科学家和数据分析师,此探索从自然语言处理中瞥见了智能代码生成的未来,在这种情况下,可以轻松而准确地创建复杂的数据库查询。

学习目标

  • 了解Pydantic和Pydanticai的基本面。
  • 了解如何实现AI驱动的SQL代码生成系统。
  • 在自然语言中探索双子座-1.5频率的功能,以进行SQL翻译。
  • 洞悉用于构建数据库交互的智能AI代理。

本文作为数据科学博客马拉松的一部分发表

目录

  • 什么是pydanticai?
  • Pydanticai的示例
  • 什么是AI代理?
  • 什么是代理工作流程?
  • AI代理和代理工作流的现代用法
  • 什么是Pydanticai框架?
  • 开始您的项目
  • 实施项目的逐步指南
  • 结论
  • 常见问题

什么是pydanticai?

Pydanticai是一个强大的Python库,可革新数据验证和类型检查。它为定义数据模型提供了一种声明性的方法,从而易于创建和验证复杂的数据结构。

Pydantic的重要特征包括:

定制

  • 验证广泛的数据类型,包括原始类型和复杂的嵌套结构。
  • 几乎支持任何python对象进行验证和序列化

灵活性

允许控制数据验证严格性:

  • 将数据胁到预期类型
  • 在需要时执行严格的类型检查

序列化

  • 支持Pydantic对象,字典和JSON之间的无缝转换。
  • 启用自我文献的API和与使用JSON模式的工具的兼容性。

表现

  • 核心验证逻辑以生锈为特殊的速度和效率编写。
  • 适用于可扩展REST API等高通量应用的理想选择。

生态系统

  • 广泛用于流行的Python库中,例如Fastapi,Langchain,LlamainDex等。
  • 如果没有pydantic,就无法实施现代的代理LLM。

Pydanticai的示例

Pydanticai简化了Python中的数据验证和类型检查,使其成为创建强大数据模型的强大工具。让我们探索一些展示其功能的实用示例。

基本数据验证

来自Pydantic Import Basemodel


类用户(基本模型):
    名称:str
    年龄:int


#有效数据
用户=用户(name =“ Alice”,年龄= 30)
打印(用户)

打印(“ ==================================
#无效数据(年龄是字符串)
尝试:
    用户=用户(name =“ Alice”,age =“三十”)
除例外为E:
    打印(E)

上面的代码使用Pydantic的基本模型定义了用户模型,将名称作为字符串和年龄作为整数执行。它验证了正确的数据,但是当提供了无效的数据(年龄的字符串)时,会引起验证错误。

输出:

使用Pydanticai建立生产级LLM驱动的应用

自动型强制

来自Pydantic Import Basemodel
类产品(基本模型):
    价格:浮动
    数量:int

#不匹配类型的数据
产品=产品(价格=“ 19.99”,数量=“ 5”)
印刷(产品)

打印(类型(product.price))
打印(类型(product.Quantity))

在这里,价格为浮动和数量的产品模型作为整数。 Pydantic自动将字符串输入(“ 19.99”和“ 5”)驱动到正确的类型(float and int)中,以演示其类型的转换功能。

输出:

使用Pydanticai建立生产级LLM驱动的应用

嵌套模型

来自Pydantic Import Basemodel
班级地址(基本模型):
    街:Str
    城市:Str
类用户(基本模型):
    名称:str
    地址:地址

#有效数据
user =用户(name =“ bob”,地址= {“街”:“ 123 Main St”,“ City”:“ Wonderland”})
打印(用户)

#访问嵌套属性
打印(user.address.city)

在这里,我们定义一个包含地址模型的嵌套用户模型。 Pydantic允许嵌套验证,并自动转换字典成模型。有效的数据初始化了用户对象,您可以直接访问诸如“ user.address.city”之类的嵌套属性。

输出:

使用Pydanticai建立生产级LLM驱动的应用

使用自定义规则验证

来自Pydantic Import basemodel,field,field_validator

类用户(基本模型):
    名称:str
    年龄:int = field(...,gt = 0,description =“年龄必须大于零”)

    @field_validator(“名称”)
    def name_must_be_non_empty(cls,value):
        如果不是value.strip():
            提高价值Error(“名称不能为空”)
        返回值

#有效数据
用户=用户(name =“ Charlie”,年龄= 25)
打印(用户)

#无效数据
尝试:
    用户=用户(name =“”,年龄= -5)
除例外为E:
    打印(E)

在这里,我们定义具有验证规则的用户模型,年龄必须大于0,并且该名称不能为空(通过name_must_be_non_empty方法验证)。有效的数据创建了一个用户实例,而无效的数​​据(空名称或负年龄)会引发详细的验证错误,以证明Pydantic的验证功能。

输出:

使用Pydanticai建立生产级LLM驱动的应用

这些是Pydantic的一些核心例子,我希望它们能帮助您了解数据验证的基本原理。

什么是AI代理?

AI代理是智能系统,旨在自主执行任务,做出决策并与其环境互动以实现特定目标。这些代理并不是新的,而是生成AI的近期快速发展,并将其与代理相结合,使代理软件在新时代开发。现在,代理可以处理输入,执行操作并动态适应。他们的行为模仿了类似人类的问题解决,使他们能够在人类干预的情况下在各个领域发挥作用。

什么是代理工作流程?

代理工作流程是指由一个或多个AI代理管理和执行的结构,目标驱动的任务序列。统一僵化的传统工作流程,代理工作流具有适应性,自主性和上下文意识。这些工作流程中的AI代理可以独立做出决策,委派子任务并从反馈中学习,从而导致有效且优化的结果。

AI代理和代理工作流的现代用法

AI代理和代理工作流程的整合通过使复杂的任务自动化,增强决策和推动效率来彻底改变行业。这些智能系统动态适应,从而使跨不同领域的更智能解决方案。

业务自动化

AI代理通过聊天机器人,电子邮件管理和销售管道优化的重复任务自动化重复任务。它们通过从高价值任务中释放人力资源来提高生产率。

软件开发

通过生成,测试和调试代码,通过AI驱动的代理加速软件生命周期,从而减少了开发时间和人为错误。

卫生保健

AI代理协助医疗诊断,患者监测和治疗个性化,改善医疗保健提供和操作效率。

金融

金融系统中的代理工作流程自动化欺诈检测,风险评估和投资分析,实现更快,更可靠的决策。

电子商务

情报机构可以增强购物体验中的个性化,优化产品建议和客户服务。

AI代理和代理工作流的兴起意味着向能够管理复杂过程的高度自主系统的转变。它们的适应性和学习能力使它们对于现代行业来说是必不可少的,推动了跨领域的创新,可扩展性和效率。随着AI的不断发展,AI代理将进一步集成到我们的日常工作流程中,从而改变了如何管理和执行任务。

什么是Pydanticai框架?

Pydanticai是由Pydantic,Fastapi的创建者开发的Python代理框架,用于简化利用生成AI的生产级应用的构建,它强调了类型的安全性,模型 - 敏锐的设计以及与大语言模型(LLMS)的无缝集成。

pydanticai的关键功能包括:

  • 模型 - 不合Snostic的支持: Pydanticai与各种模型兼容,包括OpenAI,Antropic,Gemini,Groq,Mistral和Ollama,并具有直接的界面,以结合其他模型。
  • 类型安全:利用Python的类型系统和Pydantic的验证,Pydanticai确保了稳健而可扩展的代理开发。
  • 依赖注入系统:它引入了一种新颖的TY-SAFE依赖注入机制,增强了测试和评估驱动的发展。
  • 结构化响应验证:利用Pydantic的验证功能,确保准确可靠的结构响应。
  • LogFire集成:提供与Pydantic LogFire的集成,以增强对LLM功率应用程序的调试和监视。

这是Pydanticai的最小例子:

导入操作系统
来自Pydantic_ai进口代理
来自pydantic_ai.models.gemini导入geminimodel
来自dotenv import load_dotenv

load_dotenv()

gemini_api_key = os.getenv(“ <google_api_key>”)

型号= geminimodel(
    “ Gemini-1.5-Flash”,
    api_key = gemini_api_key,
)

代理=代理(
    模型=模型,
    system_prompt =“要简洁,用一个句子回复。”,,
)

结果= agent.run_sync('“ Hello World”来自哪里?')
打印(result.data)</google_api_key>

输出:

使用Pydanticai建立生产级LLM驱动的应用

现在是时候做一些真实的事情了。我们将使用Pydanticai代理框架构建Postgres SQL查询生成

开始您的项目

通过逐步指南为您的项目奠定基础,以设置基本工具和环境。

设置环境

我们将为该项目创建一个Conda环境。

 #创建一个环境
$ conda create -name sql_gen python = 3.12

#激活env
$ conda激活sql_gen

现在,创建一个项目文件夹

#创建一个文件夹
$ mkdir sql_code_gen
#更改为文件夹
$ CD SQL_CODE_GEN

安装Postgres和Load Database

要安装Postgres,PSQL-Command-Tools和Pgadmin-4,只需转到EDBDONDON for Systaller的系统,然后一次安装所有工具即可。

现在,从Hereand下载DVDRENALE数据库,将其加载到Postgres,请按照以下步骤

步骤1:打开终端

PSQL -U Postgres

#它会要求密码放置

步骤2:创建数据库

#在Postgres =#中

创建数据库DVDRENTAL;

步骤3:终端的命令

现在,退出PSQL命令,然后输入终端

pg_restore -u postgres -d dvdrenaltal d:/sampledb/postgres/dvdrental.tar

步骤4:连接到PSQL

现在,连接到PSQL并检查数据库是否已加载。

 PSQL -U Postgres

#与dvDretal
\ c dvDretal

#让我们看看桌子

\ dt

输出:

使用Pydanticai建立生产级LLM驱动的应用

如果您看到上表,则可以。我们都准备启动我们的主要项目。

现在,将必要的Python库安装到SQL_GEN CONDA ENV中。

 conda激活sql_gen

#安装库
PIP安装pydantic asyncpg asyncio pydantic-ai 

PIP安装Python-Dotenv Fastapi Google-generativeai

PIP安装DevTools注释类型类型扩展

项目结构

我们的项目有4个文件,即主,模型,服务和架构。

 sql_query_gen/
|
| -main.py
|  -  models.py
| -schema.py
| -service.py
|  - 
| --__ init__.py
|  - 。吉蒂尼尔

实施项目的逐步指南

通过此全面的实施指南,深入研究详细的步骤和实用技术,以将您的项目从概念带到现实。

Pydantic模型

我们将首先在模型中创建数据模型。

从数据级导入数据级
从输入导入注释
导入异步
从Annotated_types进口minlen
来自Pydantic Import Basemodel,field

@DataClass
班级级别:
    conn:asyncpg.connection

班级成功(基本模型):
    sql_query:注释[str,minlen(1)]
    说明:str = field(“”,description =“ SQL查询的说明,作为Markdown”)

类InvalidRequest(basemodel):
    error_message:str

在上述代码中,

  • DEPS类管理数据库连接依赖性。 @dataclass会自动生成__init__和__repr__等特殊方法。 conn键入为`asyncpg.connection` ,代表一个活动的后Ql连接。该设计遵循依赖注入模式,使代码更具测试和可维护。
  • 成功类代表成功的SQL Query Generation, SQL_Query必须是一个非空字符串( MinLen (1)),并使用注释来添加验证约束。说明是一个可选字段,带有默认的空字符串。
  • InvalidRequest类是错误响应模型,代表了失败的SQL Query Generation尝试。

该代码为数据库连接管理,输入验证,结构化响应处理和错误处理建立了基础。

服务模块

现在,我们将在服务模块中为SQL生成实施Pydanticai服务。

导入库和配置

导入操作系统
从输入进口联盟
来自dotenv import load_dotenv
导入异步
从typing_extensions导入typealias
来自pydantic_ai进口代理,模型,runco​​ntext
来自pydantic_ai.models.gemini导入geminimodel
从模式导入db_schema
从模型导入深度,成功,无效

要配置,请在项目root中创建.ENV文件,然后将您的Gemini API密钥放在那里

#.env

gemini_api_key =“ asgfhkdhjy457gthjhajblsd”

然后在service.py文件中:

 load_dotenv()

gemini_api_key = os.getEnv(“ google_api_key”)

它将从`````'''加载Google API密钥。 env`文件。

创建模型和代理

响应:typealias = union [成功,无效]

型号= geminimodel(
    “ Gemini-1.5-Flash”,
    api_key = gemini_api_key,
)

代理=代理(
    模型,
    result_type =响应,#类型:忽略
    dep_type = deps,
)
  • 首先定义可以取得成功或无效的响应类型
  • 用API键初始化Gemini 1.5 Flash模型
  • 创建具有指定响应和依赖类型的Pydanticai代理

系统提示定义

现在,我们将定义SQL查询生成的系统提示。

 @agent.system_prompt
异步def system_prompt() - > str:
    返回f“” \

鉴于以下邮政记录表,您的工作是
编写适合用户请求的SQL查询。

数据库架构:
{db_schema}

例子
    请求:查找所有租金大于$ 4.00的电影和“ PG”的评级
    响应:选择标题,lental_rate
    来自电影
    其中rental_rate> 4.00和等级='pg';
例子
    请求:查找最长长度的电影
    响应:选择标题,长度
    来自电影
    其中长度=(从胶片中选择最大(长度));
例子
    请求:找到每个类别中电影的平均租金持续时间
    响应:选择C.NAME,AVG(F.Rental_duration)作为平均_rental_duration
    从类别c
    加入c.Category_id = fc.category_id on c.Category_id上
    加入FC.FILM_ID上的电影F = F.FILM_ID
    组由C.Name
    按平均订单_rental_duration desc;
”“”

在这里,我们定义了AI模型的基本上下文,并提供了示例查询以指导模型的响应。我们还将数据库架构信息包括在模型中,以便模型可以分析模式并产生更好的响应。

响应验证

为了使AI模型无错误的响应并符合项目要求,我们只是验证了响应。

 @Agent.Result_Validator
异步def validate_result(ctx:runco​​ntext [deps],结果:响应) - >响应:
    如果IsInstance(结果,无效):
        返回结果

    #双子座经常向SQL添加反弹
    result.sql_query = result.sql_query.replace(“ \\”,“”)
    如果不是结果。
        提高模型培训(“请创建一个选择查询”)

    尝试:
        等待ctx.deps.conn.execute(f“ divell {result.sql_query}”)
    除了asyncpg.exceptions.postgreserror为e:
        从e提出模型的(f“无效的sql:{e}”)
    别的:
        返回结果

在这里,我们将验证并处理生成的SQL查询

关键验证步骤:

  • 如果结果是无效的,请立即返回,请清理额外的后斜线
  • 确保查询是选择语句
  • 使用PostgreSQL解释验证SQL语法
  • 提高无效查询模型

数据库架构

要获取数据库架构,请打开您在Postgres设置期间安装的PGADMIN4,转到`` dvDrenaltal`数据库'',右键单击它,然后单击数据库`。
您将获得以下ERD图,现在从ERD生成SQL(请参阅图像上的圆形黑色标记)。

将架构复制到schema.py模块:

使用Pydanticai建立生产级LLM驱动的应用

 #schema.py
db_schema =“”
开始;


创建表格,如果不存在public.actor
((
    actor_id序列而不是null,
    first_name字符变化(45)caltrate pg_catalog。“默认”而不是null,
    last_name字符变化(45)整理pg_catalog。“默认”而不是null,
    last_update时间戳记没有时区,而不是null默认值(),
    约束actor_pkey主键(actor_id)
);
。
。
。
  
。
。
。
”“”

上面的代码块被严重截断,要获得完整的代码,请访问项目回购。

现在,所有必要的模块都已完成,是时候实现主方法和测试了。

实施主要

我们将执行主要功能定义和提示处理。

导入异步
导入操作系统
导入系统
从输入进口联盟
来自dotenv import load_dotenv
导入异步
从DevTools导入调试
从typing_extensions导入typealias
来自Pydantic_ai进口代理
来自pydantic_ai.models.gemini导入geminimodel
从模型导入深度,成功,无效

load_dotenv()

gemini_api_key = os.getEnv(“ google_api_key”)


响应:typealias = union [成功,无效]

型号= geminimodel(
    “ Gemini-1.5-Flash”,
    api_key = gemini_api_key,
)

代理=代理(
    模型,
    result_type =响应,#类型:忽略
    dep_type = deps,
)


异步def main():
    如果Len(sys.argv)== 1:
        提示=“请创建一个选择查询”
    别的:
        提示= sys.argv [1]

    #连接到数据库
    conn =等待asyncpg.connect(
        用户=“ Postgres”,
        密码=“ avizyt”,
        主机=“ localhost”,
        端口= 5432,
        数据库=“ dvdretaltal”,
    )
    尝试:
        deps = deps(conn)
        结果=等待代理。
        结果= debug(result.data)
        打印(“ ==========您的查询=========”)
        打印(debug(result.sql_query))
        打印(“ ===========解释=========”)
        打印(debug(结果。解释))

    最后:
        等待conn.close()


如果__name__ ==“ __ -main __”:
    asyncio.run(main())

首先,在这里定义异步主函数,然后检查客户端查询的命令行参数。如果没有提供ARG,请使用默认提示。

然后,我们将Postgres连接参数设置为与DVDRENTAR数据库服务连接。

在Try Block中,使用数据库连接创建一个DEPS实例,使用提示来运行AI代理,使用调试函数( PIP INSTALS DEVTOOLS )处理结果。然后打印格式的输出,包括生成的SQL查询和查询的说明。之后,我们终于关闭了数据库连接。

现在运行主模块,如下所示:

 #在终端中
python main.py“获取每个客户的租金总数”

输出:

使用Pydanticai建立生产级LLM驱动的应用

测试PGADMIN4中的SQL查询后:

使用Pydanticai建立生产级LLM驱动的应用

哇!它像我们想要的一样工作。测试更多这样的查询并享受学习。

结论

该项目代表了使数据库交互更加直观和访问的重要一步。通过将AI的功能与强大的软件工程原则相结合,我们创建了一个工具,不仅可以生成SQL查询,而且以安全,教育意义和实用的方式进行现实使用的方式。

该实施的成功表明了AI增强而不是取代传统数据库操作的潜力,从而为学习和生产力提供了有价值的工具。

项目回购- 此项目中使用的所有代码都可以在此处获得。

关键要点

  • Pydanticai启用智能,上下文感知的代码生成。
  • Gemini-1.5-Flash为技术任务提供了高级的自然语言理解。
  • AI代理可以改变我们与数据库交互的方式并生成代码。
  • 强大的验证在AI生成的代码系统中至关重要。

常见问题

Q 1。pydanticai在SQL Generation中的优势是什么?

A. Pydanticai提供了类型安全的,经过验证的代码生成,具有内置错误检查和上下文理解。

2。Gemini-1.5-Flash如何为该项目做出贡献?

A. Gemini模型提供了先进的自然语言处理,将复杂的人类查询转化为精确的SQL语句。

3。该项目可以扩展到其他AI应用程序吗?

答:绝对!该体系结构可以用于代码生成,数据转换和跨各个域的智能自动化。

本文所示的媒体不由Analytics Vidhya拥有,并由作者酌情使用。

以上是使用Pydanticai建立生产级LLM驱动的应用的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
META的新AI助手:生产力助推器还是时间下沉?META的新AI助手:生产力助推器还是时间下沉?May 01, 2025 am 11:18 AM

Meta携手Nvidia、IBM和Dell等合作伙伴,拓展了Llama Stack的企业级部署整合。在安全方面,Meta推出了Llama Guard 4、LlamaFirewall和CyberSecEval 4等新工具,并启动了Llama Defenders计划,以增强AI安全性。此外,Meta还向10个全球机构(包括致力于改善公共服务、医疗保健和教育的初创企业)发放了总额150万美元的Llama Impact Grants。 由Llama 4驱动的全新Meta AI应用,被设想为Meta AI

80%的Zers将嫁给AI:研究80%的Zers将嫁给AI:研究May 01, 2025 am 11:17 AM

公司开创性的人类互动公司Joi AI介绍了“ AI-Iatsionship”一词来描述这些不断发展的关系。 Joi AI的关系治疗师Jaime Bronstein澄清说,这并不是要取代人类C

AI使互联网的机器人问题变得更糟。这家耗资20亿美元的创业公司在前线AI使互联网的机器人问题变得更糟。这家耗资20亿美元的创业公司在前线May 01, 2025 am 11:16 AM

在线欺诈和机器人攻击对企业构成了重大挑战。 零售商与机器人ho积产品,银行战斗帐户收购和社交媒体平台与模仿者的斗争。 AI的兴起加剧了这个问题,Rende

卖给机器人:将创造或破坏业务的营销革命卖给机器人:将创造或破坏业务的营销革命May 01, 2025 am 11:15 AM

AI代理人有望彻底改变营销,并可能超过以前技术转变的影响。 这些代理代表了生成AI的重大进步,不仅是处理诸如chatgpt之类的处理信息,而且还采取了Actio

计算机视觉技术如何改变NBA季后赛主持人计算机视觉技术如何改变NBA季后赛主持人May 01, 2025 am 11:14 AM

人工智能对关键NBA游戏4决策的影响 两场关键游戏4 NBA对决展示了AI在主持仪式中改变游戏规则的角色。 首先,丹佛的尼古拉·乔基奇(Nikola Jokic)错过了三分球,导致亚伦·戈登(Aaron Gordon)的最后一秒钟。 索尼的鹰

AI如何加速再生医学的未来AI如何加速再生医学的未来May 01, 2025 am 11:13 AM

传统上,扩大重生医学专业知识在全球范围内要求广泛的旅行,动手培训和多年指导。 现在,AI正在改变这一景观,克服地理局限性并通过EN加速进步

Intel Foundry Direct Connect 2025的关键要点Intel Foundry Direct Connect 2025的关键要点May 01, 2025 am 11:12 AM

英特尔正努力使其制造工艺重回领先地位,同时努力吸引无晶圆厂半导体客户在其晶圆厂制造芯片。为此,英特尔必须在业界建立更多信任,不仅要证明其工艺的竞争力,还要证明合作伙伴能够以熟悉且成熟的工作流程、一致且高可靠性地制造芯片。今天我听到的一切都让我相信英特尔正在朝着这个目标前进。 新任首席执行官谭立柏的主题演讲拉开了当天的序幕。谭立柏直率而简洁。他概述了英特尔代工服务的若干挑战,以及公司为应对这些挑战、为英特尔代工服务的未来规划成功路线而采取的措施。谭立柏谈到了英特尔代工服务正在实施的流程,以更以客

AI出了问题吗?现在在那里为此保险AI出了问题吗?现在在那里为此保险May 01, 2025 am 11:11 AM

全球专业再保险公司Chaucer Group和Armilla AI解决了围绕AI风险的日益严重的问题,已联手引入了新型的第三方责任(TPL)保险产品。 该政策保护业务不利

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具