在软工三迭代三中,要求和大语言模型进行自然语言交互,但是这种交互是基于数据库中的内容的,例如“相比于昨日,时政类新闻同比增长多少?”。在我们英明神武的组长的带领下,我们成功找到了使用langChain来实现。

经过一个晚上查阅资料,我最终决定使用通义千问来实现,来看一个简单的示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import os
from langchain_community.llms import Tongyi

from langchain_community.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=False)

questions = "发表数量前五的是哪些?"
response = db_chain.invoke(questions)
print('>>问题:', questions)

print('>>answer:', response)

if __name__ == "__main__":
# 自己的api-key
os.environ["DASHSCOPE_API_KEY"] = ""
db_info = {
# host:数据库地址,name:数据库名字,user:用户名,password:密码
'host': '',
'name': '',
'user': '',
'password': ''
}

chain_tongyi(db_info)

然后就可以愉快的和大语言模型进行问答了,例如询问发布数量前五的媒体