首页 > 数据库 >利用LangChain构建MySQL数据库问答代理

利用LangChain构建MySQL数据库问答代理

时间:2024-09-03 21:21:05浏览次数:8  
标签:name Column LangChain agent MySQL import 问答 id

引言

随着自然语言处理技术的飞速发展,尤其是大型语言模型(LLM)的应用日益广泛,人们对于如何更高效地与这些模型交互产生了浓厚的兴趣。LangChain 是一个旨在简化与语言模型集成的开源框架,它使得开发者能够轻松地构建出强大的应用程序。本文将介绍如何使用LangChain结合MySQL数据库创建一个简单的问答代理。

LangChain简介

LangChain 是一个开源项目,它的目标是让开发者更容易地创建与语言模型交互的应用程序。LangChain 提供了一系列工具和组件,这些工具和组件可以协同工作,以简化常见的任务,比如文本生成、文档检索和对话系统等。

准备工作

在开始之前,确保你已经安装了以下Python库:

bash

pip install langchain_community pymysql sqlalchemy

创建MySQL数据库和表

首先,我们需要创建一个MySQL数据库,并在其中定义两张表:一张用于存储用户信息,另一张用于存储部门信息。

python

1import pymysql
2from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
3from sqlalchemy.ext.declarative import declarative_base
4from sqlalchemy.orm import sessionmaker
5
6# 数据库连接配置
7DATABASE_URI = "mysql+pymysql://username:password@localhost:3306/your_database_name"
8
9# 创建数据库引擎
10engine = create_engine(DATABASE_URI)
11
12# 创建会话
13Session = sessionmaker(bind=engine)
14session = Session()
15
16# 定义基类
17Base = declarative_base()
18
19# 定义用户表
20class User(Base):
21    __tablename__ = 'users'
22    id = Column(Integer, primary_key=True)
23    name = Column(String(50))
24    gender = Column(String(10))
25    age = Column(Integer)
26    department_id = Column(Integer, ForeignKey('departments.id'))
27
28# 定义部门表
29class Department(Base):
30    __tablename__ = 'departments'
31    id = Column(Integer, primary_key=True)
32    fid = Column(Integer)
33    name = Column(String(50))
34
35# 创建表
36Base.metadata.create_all(engine)

构建问答代理

接下来,我们将使用LangChain创建一个代理,用于执行SQL查询。

python

1from langchain_community.llms.tongyi import Tongyi
2from langchain_community.agent_toolkits.sql.base import create_sql_agent
3from langchain_community.agent_toolkits.sql.toolkit import SQLDatabaseToolkit
4from langchain_community.utilities import SQLDatabase
5from langchain.agents.agent_types import AgentType
6
7# 创建数据库对象
8db = SQLDatabase.from_uri(DATABASE_URI)
9
10# 创建SQL工具套件
11toolkit = SQLDatabaseToolkit(db=db, llm=Tongyi())
12
13# 创建SQL代理执行器
14agent_executor = create_sql_agent(
15    llm=Tongyi(),
16    toolkit=toolkit,
17    verbose=True,
18    agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
19)

执行问答

现在,我们可以使用代理来执行查询并获取结果。这里我们插入一些测试数据,并尝试执行查询。

python

1# 插入一些测试数据
2session.add_all([
3    Department(id=1, fid=None, name="HR"),
4    Department(id=2, fid=1, name="Recruitment"),
5    User(id=1, name="Alice", gender="Female", age=28, department_id=1),
6    User(id=2, name="Bob", gender="Male", age=32, department_id=2),
7])
8session.commit()
9
10# 执行查询
11query = "SELECT * FROM users WHERE age > 30"
12ret = agent_executor.run(query)
13print(ret)
14
15# 更复杂的问答
16question = "列出所有年龄大于30岁的员工及其所在部门名称"
17ret = agent_executor.run(question)
18print(ret)

结论

通过以上步骤,我们成功地使用LangChain和MySQL数据库构建了一个简单的问答代理。LangChain简化了与语言模型的交互过程,使得开发者能够专注于应用程序的逻辑而非底层的技术细节。未来,随着更多功能的添加和支持的增强,LangChain无疑将成为构建语言模型应用的强大工具之一。

标签:name,Column,LangChain,agent,MySQL,import,问答,id
From: https://blog.csdn.net/Free_Gemini/article/details/141789582

相关文章

  • 使用LangChain加载Project Gutenberg电子书:实用指南
    使用LangChain加载ProjectGutenberg电子书:实用指南引言ProjectGutenberg是一个提供免费电子书的在线图书馆,拥有超过60,000本电子书。对于自然语言处理(NLP)和文本分析项目来说,这是一个宝贵的资源。本文将介绍如何使用LangChain的GutenbergLoader来加载ProjectGutenberg的......
  • 使用LangChain与OctoAI集成:构建强大的AI应用
    使用LangChain与OctoAI集成:构建强大的AI应用引言在当今快速发展的AI领域,如何高效地利用大型语言模型(LLM)构建应用已成为开发者面临的重要挑战。本文将介绍如何使用LangChain框架与OctoAI服务相结合,轻松构建强大的AI应用。我们将深入探讨OctoAI的特性,以及如何通过Lang......
  • 52 mysql 启动过程中常见的相关报错信息
    前言我们这里主要是看一下service mysqlstart,servicemysqlstop的过程中的一些常见的错误问题这些 也是之前经常碰到, 但是 每次都是去搜索, 尝试 1,2,3,4去解决问题但是 从来未曾思考过这个问题到底是怎么造成的  TheserverquitwithoutupdatingPIDfil......
  • 基于Java+SpringBoot+Vue+MySQL的地方美食分享网站
    作者:计算机学姐开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码系统展示基于SpringBoot+Vue的地方美食分享网站【附源码文档】、前后端分离开发语言:Java数据库:MySQL技术:SpringBo......
  • LangChain4j系列:带你入门LangChain4j框架
    LangChain4j框架是什么?LangChain4j于2023年初在ChatGPT的炒作中开始开发。思想来源于Python和JavaScriptLLM库,并加入创新思想,开发一款Java语言版本的LLMs库。LangChain4j的目标是简化Java应用程序集成LLMs所以LangChain4j就是一个通过抽象统一API、提供便捷可用......
  • mysql模糊查询通过排序调整精准值
    背景:通过模糊查询到的结果,精准值排在后面解决:通过调整字段排序select*fromuserwhere1=1<iftest="keyword!=nullandkeyword!=''">andnamelikeconcat('%',#{keyword},'%')</if><iftest="sort==1and(keyword......
  • MySQL like用法详解
    MySQLLIKE语法LIKE运算符用于WHERE表达式中,以搜索匹配字段中的指定内容,语法如下:WHEREcolumnLIKEpatternWHEREcolumnNOTLIKEpattern在LIKE全面加上NOT运算符时,表示与LIKE相反的意思,即选择column不包含pattern的数据记录LIKE通常与通配符%一起使用,%表示通配pattern中出现的......
  • Windows下安装MySQL详细教程
    Windows下安装MySQL详细教程1、安装包下载  2、安装教程(1)配置环境变量(2)生成data文件(3)安装MySQL(4)启动服务(5)登录MySQL(6)查询用户密码(7)设置修改用户密码(8)退出 3、解决问题1、安装包下载。下载地......
  • MySQL修改密码
    第一种方式:最简单的方法就是借助第三方工具NavicatforMySQL来修改,方法如下:1、登录mysql到指定库,如:登录到test库。2、然后点击上方“用户”按钮。3、选择要更改的用户名,然后点击上方的“编辑用户”按钮。4、出现如图界面,输入新密码,并确认新密码,点击“保存”按钮即可。   第二种......
  • MySQL索引底层实现原理
    索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基......