赞
踩
之前我们一块学习了
如何使用LangChain库使用大模型与SQL数据库进行交互
文章末尾说了要写一个自定义的 agent 把我们的代码包进去,今天我们一块来尝试写一个自定义agent
要使用 LangChain 自定义一个可以执行 SQL 查询的 Agent,需要完成以下几个步骤:
1) 安装依赖包:确保你已经安装了 langchain
、SQLAlchemy
和其他必要的包。
2) 设置数据库连接:使用 SQLAlchemy 连接到你的数据库。
3) 自定义 Agent:创建一个 Agent,它可以解析用户输入的 SQL 查询并执行。
4) 运行示例:通过运行一个示例,验证你的 Agent 是否工作正常。
下面是一个完整的示例代码,演示如何实现这一点。
首先安装必要的 Python 包:
pip install langchain sqlalchemy
创建一个 Python 文件(如 sql_agent.py
),并设置数据库连接。这里以 SQLite 为例:
from sqlalchemy import create_engine
# 设置数据库连接
engine = create_engine('sqlite:///example.db')
# 创建一个示例表并插入一些数据
with engine.connect() as connection:
connection.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
""")
connection.execute("""
INSERT INTO users (name, age) VALUES
('Alice', 30),
('Bob', 25),
('Charlie', 35)
""")
定义一个 LangChain 的 Agent,它可以执行 SQL 查询并返回结果:
from langchain.agents import initialize_agent, Tool
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
from sqlalchemy.orm import sessionmaker
# 创建数据库会话
Session = sessionmaker(bind=engine)
session = Session()
# 定义执行SQL查询的工具函数
def execute_sql_query(query):
try:
result = session.execute(query)
return result.fetchall()
except Exception as e:
return str(e)
# 定义LangChain的工具
sql_tool = Tool(
name="SQL Executor",
func=execute_sql_query,
description="Executes SQL queries and returns the result"
)
# 初始化LangChain的LLM
llm = OpenAI(api_key="YOUR_OPENAI_API_KEY")
# 创建自定义Agent
agent = initialize_agent(
tools=[sql_tool],
llm=llm,
agent_type="zero_shot",
prompt_template=PromptTemplate(
template="You are an SQL agent. Execute the following SQL query: {query}",
input_variables=["query"]
)
)
使用自定义的 Agent 执行 SQL 查询:
def main():
query = "SELECT * FROM users WHERE age > 30"
result = agent({"query": query})
print(result)
if __name__ == "__main__":
main()
将以上所有代码合并到一个文件中:
# sql_agent.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from langchain.agents import initialize_agent, Tool
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAI
# 设置数据库连接
engine = create_engine('sqlite:///example.db')
# 创建数据库会话
Session = sessionmaker(bind=engine)
session = Session()
# 创建一个示例表并插入一些数据
with engine.connect() as connection:
connection.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
""")
connection.execute("""
INSERT INTO users (name, age) VALUES
('Alice', 30),
('Bob', 25),
('Charlie', 35)
""")
# 定义执行SQL查询的工具函数
def execute_sql_query(query):
try:
result = session.execute(query)
return result.fetchall()
except Exception as e:
return str(e)
# 定义LangChain的工具
sql_tool = Tool(
name="SQL Executor",
func=execute_sql_query,
description="Executes SQL queries and returns the result"
)
# 初始化LangChain的LLM
llm = OpenAI(api_key="YOUR_OPENAI_API_KEY")
# 创建自定义Agent
agent = initialize_agent(
tools=[sql_tool],
llm=llm,
agent_type="zero_shot",
prompt_template=PromptTemplate(
template="You are an SQL agent. Execute the following SQL query: {query}",
input_variables=["query"]
)
)
def main():
query = "SELECT * FROM users WHERE age > 30"
result = agent({"query": query})
print(result)
if __name__ == "__main__":
main()
运行 sql_agent.py
文件,Agent 将执行指定的 SQL 查询并返回结果。确保你替换 "YOUR_OPENAI_API_KEY"
为你的实际 OpenAI API 密钥。
将功能封装成一个 Agent 有许多好处,特别是在使用 LangChain 框架和执行 SQL 查询的情况下:
上面的sql是我们直接给出来的,可不可以使用我们之前一起学习的方法,将sql自动生成呢?后续继续讨论
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。