0. 效果
1. 准备工作
1.1 python安装包
pip3 install 'langchain[all]'
pip3 install langchain_experimental
pip3 install dashscope
# CentOS中如果有如果执行报错
pip3 install typing-inspect
pip3 install typing_extensions
pip3 install pydantic -U
1.2 TongYi
阿里云DashScope灵积模型服务创建应用、申请APIKey
1.3 SQL准备
CREATE TABLE t_article (
`id` INT PRIMARY KEY AUTO_INCREMENT COMMENT 'ID',
`author` VARCHAR(50) NOT NULL COMMENT '作者',
`title` VARCHAR(100) NOT NULL COMMENT '文章标题',
`content` TEXT COMMENT '文章内容',
`create_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间'
);
INSERT INTO t_article (author, title, content) VALUES ('张三', '我的旅行经历', '在过去的假期里,我去了很多有趣的地方旅行。我最喜欢的地方是海边,因为那里的风景很美,而且可以尽情地玩耍。');
INSERT INTO t_article (author, title, content) VALUES ('李四', '我的爱好', '我非常喜欢看书,尤其是小说和历史书。每当我看到一本好书时,我会忘记时间,完全沉浸在其中。');
INSERT INTO t_article (author, title, content) VALUES ('王五', '我的梦想', '我的梦想是成为一名优秀的音乐家。我学习了很多年的乐器,并且很享受在舞台上表演的感觉。');
INSERT INTO t_article (author, title, content) VALUES ('赵六', '我的宠物狗', '我有一只可爱的小狗,它的名字叫豆豆。豆豆非常活泼可爱,每天都会陪我散步和玩耍。');
INSERT INTO t_article (author, title, content) VALUES ('陈七', '我的家乡', '我的家乡是一个美丽的小镇,那里有很多绿色的植物和新鲜的水果。我最喜欢的是夏天,因为可以吃到很多美味可口的水果。');
2. 实现步骤
# encoding:utf-8
import os
from langchain.llms import Tongyi
from langchain.utilities import SQLDatabase
from langchain_experimental.sql import SQLDatabaseChain
def chain_tongyi(db_info):
llm = Tongyi(model='qwen-turbo')
db = SQLDatabase.from_uri(f"mysql+pymysql://{db_info['user']}:{db_info['password']}@{db_info['host']}/{db_info['name']}")
db_chain = SQLDatabaseChain.from_llm(llm=llm, db=db, verbose=True, use_query_checker=True)
questions = "张三最近的一篇文章标题是什么?"
res = db_chain.run(questions)
print('>>问题:', questions)
print('>>结果:', res)
if __name__ == "__main__":
os.environ["DASHSCOPE_API_KEY"] = "*"
db_info = {
'host': '',
'name': '',
'user': '',
'password': 'P'
}
chain_tongyi(db_info)