GPT应用-使用中文操作数据库
本次尝试使用langchain来操作数据库;
环境配置
下面是数据库相关的表,使用Mysql5.7 数据库,数据库名students
下面是相关表的介绍
学生表,有名字、分数、和老师的备注
学生父母表,其中有学生的名字,父母的电话
代码介绍
下面是notebook 内容的相关介绍
安装langchain和pymysql依赖
%pip install langchain
%pip install pymysql
配置OPENAI_API_KEY,在openAI获取key
%env OPENAI_API_KEY=sk-d8X5qdQlAnTdOHzCiOdZT3B
引入依赖
from langchain import OpenAI, SQLDatabase, SQLDatabaseChain
配置数据库连接
db = SQLDatabase.from_uri("mysql+pymysql://root:root@127.0.0.1/students")
llm = OpenAI(temperature=0)
创建SQLDatabaseChain,chain是langchain中的一个重要概念,可以从他的官网了解,例如我们可以将接口访问封装成一个Chain等。
这里我们使用的是langchain提供的访问数据库的Chain,官方还提供了更多的chain。
db_chain = SQLDatabaseChain(llm=llm, database=db, verbose=True)
开始询问,我们直接使用中文问,因为我们配置了verbose=True
,所以他将中间产生的SQL也输出了
db_chain.run("全班有多少个学生?")
db_chain.run("他们的名字是什么?")
db_chain.run("他们的平均分是多少?")
db_chain.run("去除0分之后的平均分是多少")
db_chain.run("谁的了0分?")
db_chain.run("谁的了0分以及为什么")
db_chain.run("说得了0分,给出父母的电话")
通过以上的实例演示,能够看到非常好的效果,大家可以多测试,欢迎交流学习文章来源:https://www.toymoban.com/news/detail-470399.html
更多实例参考:https://github.com/malone231214/gpthub文章来源地址https://www.toymoban.com/news/detail-470399.html
SQL
DROP TABLE IF EXISTS `parents`;
CREATE TABLE `parents` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`student_name` varchar(20) DEFAULT '',
`parent_name` varchar(20) DEFAULT NULL,
`parent_mobile` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOCK TABLES `parents` WRITE;
/*!40000 ALTER TABLE `parents` DISABLE KEYS */;
INSERT INTO `parents` (`id`, `student_name`, `parent_name`, `parent_mobile`)
VALUES
(1,'Alex','Barry','0881234567'),
(2,'Alice','Jessica','0891234567'),
(3,'Jack','Simon','0876666666'),
(5,'Ophelia','Tracy','0881111111');
/*!40000 ALTER TABLE `parents` ENABLE KEYS */;
UNLOCK TABLES;
# Dump of table students
# ------------------------------------------------------------
DROP TABLE IF EXISTS `students`;
CREATE TABLE `students` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(11) DEFAULT NULL,
`score` int(11) DEFAULT NULL,
`teacher_note` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
LOCK TABLES `students` WRITE;
/*!40000 ALTER TABLE `students` DISABLE KEYS */;
INSERT INTO `students` (`id`, `name`, `score`, `teacher_note`)
VALUES
(1,'Alex',100,'Alex did perfectly every day in the class. There is no surprise he got the full mark.'),
(2,'Alice',70,'Alice needs a lot of improvements.'),
(3,'Jack',75,'Even it's not the best, Jack has already improved. Keep going.'),
(4,'Ophelia',0,'Unfortunately, Ophelia missed the test.'),
(5,'Zack',60,'Zack needs to do better.');
/*!40000 ALTER TABLE `students` ENABLE KEYS */;
UNLOCK TABLES;
参考
- https://python.langchain.com/en/latest/modules/chains/examples/sqlite.html
- https://github.com/sugarforever/LangChain-SQL-Chain
到了这里,关于GPT应用-使用中文操作数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!