streamlit+langchain打造AI聊天
张宇哥哥 2024-09-09 11:31:01 阅读 53
文章目录
1.编程环境2.框架介绍2.1.streamlit简单介绍2.2.langchain简单介绍
3.通义大模型3.1.阿里云百炼生成应用得到API KEY
4.下载相关包5.创建python项目5.1通过pyCharm创建项目5.2utils工具包代码5.3main包代码
1.编程环境
编程语言:python 3.12
IDEA:PyCharm 2023.2.3
项目管理工具:Anaconda Navigator 2.6
操作系统:window 10
2.框架介绍
2.1.streamlit简单介绍
只用 <code>Python 也能做出很漂亮的网站?Streamlit
说可以。
<code>Streamlit 官方介绍:能在几分钟内把 Python
脚本变成可分享的网站。只需使用纯 Python
,无需前端经验。甚至,你只需要懂 markdown
,然后按照一定规则去做也能搞个网页出来。它还支持免费部署,感动到落泪。
官方网站:https://streamlit.io/
2.2.langchain简单介绍
用于将外部数据和LLM大语言模型相结合,让LLM能够基于外部数据知识的基础上进行智能问答,这就是LangChain开源框架搭建的基于AI大模型下的AI应用开发新范式。
LangChain定义了一套基于大模型之上的应用开发框架,倡议各大模型能够按照框架定义进行相关实现,其也在不断完善其在大模型上的支持的能力,它的更新迭代很快,新的内容在不断出现。
下图描述了LangChain的业务架构,内部核心业务包括六个部分:Prompts、Models、Chains、Memory、Retriever、Agent。
官网地址:https://www.langchain.com/
3.通义大模型
由上面第2.2章所描述我们这里LLM大模型使用的是阿里通义系列。
3.1.阿里云百炼生成应用得到API KEY
申请地址:https://bailian.console.aliyun.com/#/app-center
使用通义系列中最强大的千问-max,特别注意创建应用需要登录阿里云并充值1块钱,调用接口是需要费用😅。
4.下载相关包
首先你的电脑需要有 <code>python 环境。打开项目管理工具Anaconda下载以下开发包
安装streamlit
使用下面这条命令就可以安装 streamlit
。
pip install streamlit -i https://pypi.tuna.tsinghua.edu.cn/simple
安装 streamlit
成功后可以使用下面这条命令看看能不能运行起来。
streamlit hello
安装langchain
pip install langchain -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install langchain_community -i https://pypi.tuna.tsinghua.edu.cn/simple
5.创建python项目
5.1通过pyCharm创建项目
5.2utils工具包代码
<code># 1. 导入相关包
from langchain_community.llms import Tongyi
from langchain.chains import ConversationChain
from langchain.prompts import ChatPromptTemplate,MessagesPlaceholder
from langchain.memory import ConversationBufferMemory
# 2. 定义一个函数,用于发起请求,返回结果
def get_response(prompt, memory, api_key):
# 3. 创建模型对象
llm = Tongyi(
model = 'qwen-max',
dashscope_api_key = api_key
)
# 4. 创建chains链
# prompt = ChatPromptTemplate.from_messages([
# ("system", "你是一个乐于助人的AI小助手,请帮助用户回答问题"),
# MessagesPlaceholder(variable_name="history"),code>
# ("human", "{input}")
# ])
chains = ConversationChain(llm=llm, memory=memory)
# 5. 发起请求,返回结果
response = chains.invoke({ "input": prompt})
# 6. response记忆体,很多之前会话,本次会员包含在一个response的key中
return response['response']
# 7. 测试,测试结束后,终止
if __name__ == '__main__':
prompt = "世界上最高的山峰是哪一座?"
memory = ConversationBufferMemory(return_messages=True)
api_key = '请输入你申请的通义灵码API KEY'
result = get_response(prompt, memory, api_key)
print(result)
5.3main包代码
# 1. 导入相关包,如streamlit包
import streamlit as st
from langchain.memory import ConversationBufferMemory
from utils import get_response
# 2. 设置左侧边栏
with st.sidebar:
# 显示文本
api_key = st.text_input("请输入Tongyi账号的API KEY:", type="password")code>
st.markdown("[获取Tongyi账号的API KEY](https://bailian.console.aliyun.com/?apiKey=1#/api-key)")
# 3. 主界面主标题
st.title("通义聊天机器人")
# 5. 会话保持:用于存储会话记录
if "memory" not in st.session_state:
st.session_state['memory'] = ConversationBufferMemory()
st.session_state['messages'] = [{ 'role':'ai', 'content':'你好,我是通义聊天机器人,有什么可以帮助你的么?'}]
# 6. 编写一个循环结构,用于打印会话记录
for message in st.session_state['messages']:
with st.chat_message(message['role']):
st.markdown(message['content'])
# 4. 创建一个聊天窗口
prompt = st.chat_input("请输入您要咨询的问题:")
# 7. 如果文本框有数据,继续向下执行
if prompt:
# 8. 如果没有api_key,则提示用户输入api_key
if not api_key:
st.warning("请输入Tongyi的API KEY")
st.stop()
# 9. 代表不仅有prompt还有api_key,继续往下,把用户信息显示在主窗体
st.session_state['messages'].append({ 'role':'human', 'content':prompt})
st.chat_message("human").markdown(prompt)
# 10. 向utils工具箱发起请求,返回响应
with st.spinner("AI小助手正在思考中..."):
content = get_response(prompt, st.session_state['memory'], api_key)
st.session_state['messages'].append({ 'role':'ai', 'content':content})
st.chat_message("ai").markdown(content)
在cmd中输入 streamlit run main.py
即可展示网页
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。