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千问大模型

bash 复制代码
base_url: https://dashscope.aliyuncs.com/compatible-mode/v1
model: qwen-plus
api_key: 

阿里云百炼平台API key的获取地址:

阿里云百炼控制台

2、依赖安装

bash 复制代码
pip install streamlit openai

3、示例代码

python 复制代码
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 API
        response = client.chat.completions.create(
            model="qwen-plus",
            messages=st.session_state.messages,
            stream=False
        )
        # 追加聊天记录
        assistant_reply = response.choices[0].message.content
        st.session_state.messages.append({"role": "assistant", "content": assistant_reply})
        st.chat_message("assistant").write(assistant_reply)

4、启动

bash 复制代码
streamlit run src/chat_box.py
相关推荐
Hgfdsaqwr10 小时前
Django全栈开发入门:构建一个博客系统
jvm·数据库·python
开发者小天10 小时前
python中For Loop的用法
java·服务器·python
老百姓懂点AI11 小时前
[RAG实战] 向量数据库选型与优化:智能体来了(西南总部)AI agent指挥官的长短期记忆架构设计
python
喵手13 小时前
Python爬虫零基础入门【第九章:实战项目教学·第15节】搜索页采集:关键词队列 + 结果去重 + 反爬友好策略!
爬虫·python·爬虫实战·python爬虫工程化实战·零基础python爬虫教学·搜索页采集·关键词队列
Suchadar13 小时前
if判断语句——Python
开发语言·python
ʚB҉L҉A҉C҉K҉.҉基҉德҉^҉大13 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
喵手13 小时前
Python爬虫零基础入门【第九章:实战项目教学·第14节】表格型页面采集:多列、多行、跨页(通用表格解析)!
爬虫·python·python爬虫实战·python爬虫工程化实战·python爬虫零基础入门·表格型页面采集·通用表格解析
山顶夕景13 小时前
【VLM】Visual Merit or Linguistic Crutch? 看DeepSeek-OCR
大模型·llm·ocr·多模态
0思必得014 小时前
[Web自动化] 爬虫之API请求
前端·爬虫·python·selenium·自动化
莫问前路漫漫14 小时前
WinMerge v2.16.41 中文绿色版深度解析:文件对比与合并的全能工具
java·开发语言·python·jdk·ai编程