Streamlit实现Qwen对话机器人
Web界面
一、Streamlit
是一个用于创建数据科学和机器学习应用的开源前端框架,能够快速将 Python 脚本转化为交互式 Web 应用。通过简单的 Python API 就能构建出交互式的数据应用。
1、主要特点
- 简单易用:纯 Python 编写代码,API 简洁直观。
- 交互式界面:支持按钮、滑块、下拉框等控件,用户可以与应用进行交互。
- 内置组件丰富:支持图像、视频、音频、Markdown、DataFrame、图表展示(Matplotlib、Plotly、Altair、Pydeck 等)等。
- 支持热部署:修改代码后浏览器会自动刷新、重新加载。
- 支持状态管理:通过
st.session_state
可以实现基本的状态保存。 - 适合数据可视化场景:构建数据仪表盘、机器学习模型演示、A/B 测试、参数调优等场景。
2、适用场景
场景 | 说明 |
---|---|
数据可视化 | 快速搭建数据仪表盘 |
机器学习模型演示 | 展示模型预测结果 |
内部工具开发 | 快速开发小型数据工具 |
教学演示 | 展示算法或数据分析过程 |
3、局限
- 不适合构建复杂的前端交互逻辑。
- 不支持用户登录、权限管理等高级功能(需要自行扩展)。
- 对于大规模 Web 应用开发不如 React/Vue 灵活。
二、聊天机器人
1、选用要调用的Qwen千问大模型
base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
model: qwen-plus
api_key:
阿里云百炼平台API key的获取地址:
阿里云百炼控制台
2、依赖安装
pip install streamlit openai
3、示例代码
import streamlit as st
from openai import OpenAI# 设置页面标题
st.title("💬 Qwen Chatbot")# 在侧边栏添加配置选项
with st.sidebar:# 提供一个文本输入框让用户可以手动输入API Key(可选)openai_api_key = st.text_input("Qwen API Key", key="chatbot_api_key", type="password")"[获取 Qwen API key](https://bailian.console.aliyun.com/?tab=model#/api-key)"if st.button("开启新对话"):st.session_state.messages = [{"role": "assistant", "content": "欢迎使用对话机器人,你想知道什么?"}]# 检查API Key是否已提供
if not openai_api_key:st.info("请添加新的API Key")
else:base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"client = OpenAI(api_key=openai_api_key, base_url=base_url)# 初始化对话历史记录if "messages" not in st.session_state:st.session_state.messages = [{"role": "assistant", "content": "欢迎使用对话机器人,你想知道什么?"}]# 显示对话历史for msg in st.session_state.messages:st.chat_message(msg["role"]).write(msg["content"])# 获取用户输入if prompt := st.chat_input():st.session_state.messages.append({"role": "user", "content": prompt})st.chat_message("user").write(prompt)# 调用DeepSeek APIresponse = client.chat.completions.create(model="qwen-plus",messages=st.session_state.messages,stream=False)# 追加聊天记录assistant_reply = response.choices[0].message.contentst.session_state.messages.append({"role": "assistant", "content": assistant_reply})st.chat_message("assistant").write(assistant_reply)
4、启动
streamlit run src/chat_box.py