写在前面
众所周知,大模型很火,总想着如何学习一下大模型,利用大模型做点什么事情。
本文利用langchain+文心一言+数据库,实现了基于数据库内容做个问答机器人。代码其实很少。
用文心一言是因为openai接口需要收费
代码
import os,sqlparse
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.utilities import SQLDatabase
from langchain_community.chat_models import QianfanChatEndpoint
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
os.environ["QIANFAN_AK"] = "xxx"
os.environ["QIANFAN_SK"] = "xxx"
# 这个prompt将数据库schema和要求以及问题交给大模型,让大模型生成sql
template = """根据下面的表模式,编写一个SQL查询来回答用户的问题:
{schema}
问题:{question}
注意:
1.你只需要返回可执行的sql语句,不要返回其他内容
2.sql语句不要用引号包裹
"""
prompt = ChatPromptTemplate.from_template(template)
# 链接数据库
db = SQLDatabase.from_uri("mysql+pymysql://name:password@0.0.0.0:3306/dbname?charset=utf8mb4")
# 获取数据库schema
def get_schema(_):
return db.get_table_info()
# 解析大模型返回的内容,提取sql
def parse_sql(query):
return query.split("```sql")[1].split("```")[0]
# 执行sql
def run_query(sql):
return db.run(sql)
# model = ChatOpenAI()
model = QianfanChatEndpoint(streaming=True,model="ERNIE-Bot",)
sql_response = (
RunnablePassthrough.assign(schema=get_schema)
| prompt
| model.bind(stop=["\nSQLResult:"])
| StrOutputParser()
)
# 将问题、sql语句以及查询结果交给大模型,让大模型生成一个自然语言回答的结果
template1 = """根据下面的表模式,问题,SQL查询和SQL响应,编写一个自然语言回答:
{schema}
问题:{question}
SQL查询:{query}
SQL响应:{response}"""
prompt_response = ChatPromptTemplate.from_template(template1)
full_chain = (
RunnablePassthrough.assign(query=sql_response).assign(
schema=get_schema,
response=lambda x: run_query(parse_sql(x["query"])),
)
| prompt_response
| model
| StrOutputParser()
)
# print(full_chain.invoke({"question": "有多少人?"}))
# print(full_chain.invoke({"question": "根据数据库中的记录,秦始皇又叫什么?"}))
# 流式获取大模型返回的结果
try:
for chunk in full_chain.stream({"question": "根据数据库中的记录,秦始皇又叫什么?"}):
print(chunk, end="", flush=True)
except TypeError as e:
print("")
数据库中增加了一条叫“张三”的数据
可以看到大模型查出来了“张三”
大模型根据输入的内容生成的sql语句是:
SELECT name FROM namealias WHERE userid = (SELECT userid FROM person WHERE name = '秦始皇')
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。
![](https://img-blog.csdnimg.cn/img_convert/c9d97e36178134aa85102efaa5b855aa.png)
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。