LangChain 使用文本描述的方式操作MySQL中的数据

这篇具有很好参考价值的文章主要介绍了LangChain 使用文本描述的方式操作MySQL中的数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、LangChain 使用文本描述的方式操作MySQL中的数据

LangChain 中提供了 SQLDatabaseChain ,可以通过语义文本去操作 MySQL中的数据,例如在 MySQL 中有如下表数据:

用户表

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(255) DEFAULT NULL COMMENT '姓名',
  `age` int DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';

写入测试数据:

INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (1, '张三', 20);
INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (2, '李四', 60);
INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (3, '王五', 30);
INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (4, '赵六', 31);
INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (5, '小明', 35);
INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (6, '小红', 25);
INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (7, '小蓝', 40);

角色表

CREATE TABLE `role` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `role` varchar(255) DEFAULT NULL COMMENT '角色名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色表';

写入测试数据:

INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (1, 'admin');
INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (2, 'common');
INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (3, 'role1');
INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (4, 'role2');
INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (5, 'role3');

工作组表:

CREATE TABLE `work_group` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `group` varchar(255) DEFAULT NULL COMMENT '工作组',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='工作组表';

写入测试数据:

INSERT INTO `langchain`.`work_group`(`id`, `group`) VALUES (1, 'A');
INSERT INTO `langchain`.`work_group`(`id`, `group`) VALUES (2, 'B');
INSERT INTO `langchain`.`work_group`(`id`, `group`) VALUES (3, 'C');
INSERT INTO `langchain`.`work_group`(`id`, `group`) VALUES (4, 'E');

用户角色关系表

CREATE TABLE `user_role_mapping` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `user_id` int DEFAULT NULL COMMENT '用户ID',
  `role_id` int DEFAULT NULL COMMENT '角色ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户角色关系表';

写入测试数据:

INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (1, 1, 1);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (2, 1, 2);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (3, 1, 3);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (4, 2, 4);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (5, 2, 5);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (6, 3, 2);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (7, 4, 2);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (8, 5, 2);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (9, 6, 2);
INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (10, 7, 5);

用户工作组关系表

CREATE TABLE `user_work_group_mapping` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
  `user_id` int DEFAULT NULL COMMENT '用户ID',
  `group_id` int DEFAULT NULL COMMENT '工作组ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户工作组关系表';

写入测试数据:

INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (1, 1, 1);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (2, 1, 2);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (3, 1, 3);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (4, 2, 1);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (5, 2, 2);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (6, 2, 3);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (7, 3, 2);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (8, 3, 3);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (9, 4, 1);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (10, 4, 2);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (11, 5, 2);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (12, 5, 4);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (13, 6, 3);
INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (14, 7, 2);

构建 SQLDatabaseChain

from langchain import OpenAI, SQLDatabase, SQLDatabaseChain
import os

db_user = "root"
db_password = "root"
db_host = "127.0.0.1"
db_name = "langchain"
db = SQLDatabase.from_uri(f"mysql+pymysql://{db_user}:{db_password}@{db_host}/{db_name}")

openai_api_key = os.environ["OPENAI_API_KEY"]
llm = OpenAI(temperature=0, openai_api_key=openai_api_key)
db_chain = SQLDatabaseChain(llm=llm, database=db, verbose=True)

使用文本描述操作数据:

questions = "有多少个用户"
res = db_chain.run(questions)
print("问题:", questions, "解答:", res)

LangChain 使用文本描述的方式操作MySQL中的数据,机器学习,langchain,mysql

questions = "统计30岁以下的人员信息"
res = db_chain.run(questions)
print("问题:", questions, "解答:", res)

LangChain 使用文本描述的方式操作MySQL中的数据,机器学习,langchain,mysql

questions = "统计每个工作组下的人员"
res = db_chain.run(questions)
print("问题:", questions, "解答:", res)

LangChain 使用文本描述的方式操作MySQL中的数据,机器学习,langchain,mysql

questions = "统计每个工作组下的人员数量"
res = db_chain.run(questions)
print("问题:", questions, "解答:", res)

LangChain 使用文本描述的方式操作MySQL中的数据,机器学习,langchain,mysql

questions = "统计每个校色下的人员数量"
res = db_chain.run(questions)
print("问题:", questions, "解答:", res)

LangChain 使用文本描述的方式操作MySQL中的数据,机器学习,langchain,mysql

questions = "统计30岁以下人员的工作组和角色"
res = db_chain.run(questions)
print("问题:", questions, "解答:", res)

LangChain 使用文本描述的方式操作MySQL中的数据,机器学习,langchain,mysql文章来源地址https://www.toymoban.com/news/detail-627096.html

到了这里,关于LangChain 使用文本描述的方式操作MySQL中的数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL授权用户访问数据操作方式

    在MySQL中,用户权限的种类有很多,其中比较常用的权限包括: SELECT:允许用户查询表中的数据。 INSERT:允许用户向表中插入数据。 UPDATE:允许用户更新表中的数据。 DELETE:允许用户删除表中的数据。 CREATE:允许用户创建新的数据库、表和视图。 DROP:允许用户删除数据库

    2024年02月10日
    浏览(41)
  • Verilog的三种描述方式(结构化描述、数据流描述、行为级描述对电路功能的描述有三种方式:结构化描述、数据流描述、行为级描述

    Verilog的三种描述方式(结构化描述、数据流描述、行为级描述对电路功能的描述有三种方式:结构化描述、数据流描述、行为级描述。三种描述方式抽象级别不同,各有优缺点,相辅相成,需要配合使用。 目录 一、结构化描述 1、概念 2、特点 3、示例 真值表: 电路抽象:

    2024年02月04日
    浏览(67)
  • linux 文本操作-数据过滤(grep,awk 使用)

      示例:查找行内容包含“6883”标识的的行,并且提取68开头的数据,如下图   原始数据日记文件,有些有6883,有些没有8383标识,如下: 第一步:使用 grep 过虑数据   使用 grep 过虑数据每行带有 “6883” 标识的数据:     执行后如下图,新的文本已过虑掉没有6883的数据

    2024年01月24日
    浏览(47)
  • 基于Linux操作系统中的MySQL数据库操作(三十)

    MySQL数据库安装 目录 一、概述 (一)什么是数据库 (二)数据库能干什么     1、企业应用     2、金融行业     3、电子商务     4、社交媒体     5、物联网 (三)为什么要用数据库,优势、特性?     1、可靠性和稳定性     2、数据管理能力     3、数据共享和集成  

    2024年02月15日
    浏览(61)
  • 向量数据库入坑:传统文本检索方式的降维打击,使用 Faiss 实现向量语义检索

    在上一篇文章《聊聊来自元宇宙大厂 Meta 的相似度检索技术 Faiss》中,我们有聊到如何快速入门向量检索技术,借助 Meta AI(Facebook Research)出品的 faiss 实现“最基础的文本内容相似度检索工具”,初步接触到了“语义检索”这种对于传统文本检索方式具备“降维打击”的新

    2024年02月16日
    浏览(50)
  • 【android】反编译工具以及使用方式分步骤描述

    以下是对常见 Android 反编译工具的使用方式分步骤描述: Apktool 的使用方式: 步骤一:下载并安装 Apktool,可以从官方网站(https://ibotpeaches.github.io/Apktool/)下载最新版本的 Apktool。 步骤二:使用 Apktool 反编译 APK 文件,可以使用以下命令: 其中,app.apk 是要反编译的 APK 文件

    2024年02月08日
    浏览(50)
  • 使用langchain及llama_index实现基于文档(长文本)的相似查询与询问

    前面的总结是半年前的知识与代码,但是框架不变,所以不再修改。 但是半年更新了不少内容,包括一些类都更换了不少,有同学问到,所以就又重新写一份,贴在下面。 考虑到这篇费了不少时间,关注一下不过分吧(❁´◡`❁) 在调用ChatGPT接口时,我们常常受到4096个字符(

    2024年02月09日
    浏览(40)
  • 【记录】LangChain|Ollama结合LangChain使用的速通版(包含代码以及切换各种模型的方式)

    官方教程非常长,我看了很认可,但是看完了之后呢就需要一些整理得当的笔记让我自己能更快地找到需求。所以有了这篇文章。【写给自己看的,里面半句废话的解释都没有,如果看不懂的话直接看官方教程再看我的】 我是不打算一开始就用OpenAI的,打算先用一下开源模型

    2024年04月14日
    浏览(37)
  • LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索Indexes for information retrieve

    接着前面的Langchain,继续实现读取YouTube的视频脚本来问答Indexes for information retrieve LangChain 实现给动物取名字, LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字 LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄 引用向量数据库Faiss 查看OpenAI model main.p

    2024年02月05日
    浏览(59)
  • Spring Boot入门(09):如何使用MyBatis的XML配置方式实现MySQL的增删改查操作?

            想要快速高效地开发Java Web应用程序,选择使用Spring Boot和MyBatis无疑是明智之举。本篇文章将教你使用MyBatis的XML配置方式,结合MySQL数据库,实现常见的增删改查操作,让你的应用程序更加实用和强大。跟随本文一起来探索MyBatis在Spring Boot中的力量吧!        

    2024年02月11日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包