使用Langchain构建简单的数据库Agent

数据库 其他数据库
如果对内容有什么疑问和建议可以私信和留言,也可以添加我加入大模型交流群,一起讨论大模型在创作、RAG和agent中的应用。​

上篇文章我们介绍了一个使用RAG进行SQL生成的项目(RAG做SQL生成处理表格,一个10.1k※的开源工具vanna)。这篇文章我们介绍一个使用LangChain实现SQLagent的方法,LangChain直接内置了自己的SQLagent实现-—SQLDatabaseChain。这个方法使用 SQL Alchemy 与数据库交互。感兴趣的可以考虑一下这两个方案是否可以融合,这样保证SQL的准确性从而提升最终结果的准确率。下面将介绍今天主要内容的实现步骤:

实现步骤

首先,我们得有一个数据库。这里我们用的是ClickHouse,一个开源的、面向列的SQL数据库管理系统,特别适合大数据分析。安装起来超级简单,一行命令就搞定。

接下来,我们得让Agent学会和ClickHouse交流。这里就需要用到clickhouse-sqlalchemy这个包了。安装它之后,我们就可以建立数据库连接,然后初始化我们的Toolkit。这个Toolkit就像是我们的Agent的工具箱,里面装满了有用的工具。

现在,让我们来创建一个SQLDatabaseChain的Agent。这个Agent可以直接和数据库交互,回答问题。我们只需要定义一些工具,比如查询表结构、执行SQL查询等。然后,我们就可以快速创建并运行这个Agent了。

环境搭建

今天用到的主要安装包如下,其它可以根据提示安装:

# 安装 clickhouse-sqlalchemy 包来连接 ClickHouse
pip install clickhouse-sqlalchemy langchain

运行代码

代码大概是这样的:

from langchain.agents import AgentExecutor, AgentType
from langchain.sql_database_toolkit import SQLDatabaseToolkit




# 设置数据库连接
uri = 'clickhouse+native://localhost/ecommerce'
db = SQLDatabase.from_uri(uri)




# 初始化工具箱
toolkit = SQLDatabaseToolkit(db=db, llm=OpenAI(temperature=0))




# 创建并运行基于 OpenAI 函数的 Agent
agent_executor = create_sql_agent(
    llm=ChatOpenAI(temperature=0.1, model='gpt-4-1106-preview'),
    toolkit=toolkit,
    verbose=True,
    agent_type=AgentType.OPENAI_FUNCTIONS
)
# 运行 Agent,回答数据相关问题
agent_executor.run("我们有多少来自上海的活跃客户?")

运行这段代码后,Agent就会根据我们的问题去数据库里找到答案,然后告诉我们。比如,它会告诉我们有多少来自上海的活跃客户。这个Agent的好处在于,它可以直接理解我们的问题,然后去数据库里找到答案。我们不需要自己写SQL查询,也不需要担心查询的语法问题。Agent会帮我们搞定一切。

如果对内容有什么疑问和建议可以私信和留言,也可以添加我加入大模型交流群,一起讨论大模型在创作、RAG和agent中的应用。

责任编辑:武晓燕 来源: 哎呀AIYA
相关推荐

2023-11-10 14:46:41

OpenAIPinecone

2022-04-08 11:25:58

数据库操作AbilityData

2010-06-30 08:27:45

SQL Server数

2021-03-14 10:21:36

数据库区块链DNS

2012-12-20 11:16:16

IBMdW

2011-03-01 14:52:31

EXCEL财务分析‚数据库

2018-01-04 10:43:43

OracleMysqlJava

2020-11-24 17:22:15

数据库MySQL技术

2010-06-28 10:06:09

SQL Server数

2010-09-17 20:28:29

2011-03-21 17:00:23

MySQL数据库

2017-06-22 16:00:07

数据库NoSQL迁移实践

2009-07-01 11:08:14

JSP DestoryJSP Init数据库链接

2009-09-09 13:07:37

创建Linq数据库

2009-09-17 09:57:08

linq创建数据库

2011-04-06 09:09:17

MySQL数据库备份

2019-01-02 09:30:59

MySQL数据库日志审计

2010-05-14 11:04:17

连接MySQL

2009-11-20 15:03:29

2020-07-28 15:20:43

PythonUI代码
点赞
收藏

51CTO技术栈公众号