news 2026/5/7 19:53:47

Qwen2.5-1.5B Streamlit教程:添加对话评分、反馈按钮与日志记录功能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qwen2.5-1.5B Streamlit教程:添加对话评分、反馈按钮与日志记录功能

Qwen2.5-1.5B Streamlit教程:添加对话评分、反馈按钮与日志记录功能

1. 项目概述

本项目基于阿里通义千问官方Qwen2.5-1.5B-Instruct轻量级大语言模型构建,实现了一套完全本地化部署的纯文本智能对话服务。通过Streamlit框架打造可视化聊天界面,无需复杂配置即可快速部署使用。

核心优势在于:

  • 轻量高效:1.5B参数模型适配低显存GPU环境
  • 隐私安全:所有数据处理均在本地完成
  • 开箱即用:简洁界面设计,零技术门槛

2. 环境准备与基础部署

2.1 安装依赖

确保已安装Python 3.8+环境,执行以下命令安装必要依赖:

pip install streamlit torch transformers

2.2 模型准备

Qwen2.5-1.5B-Instruct模型文件放置在本地目录,例如/root/qwen1.5b,确保包含以下文件:

  • config.json
  • model.safetensors
  • 分词器相关文件

3. 基础聊天功能实现

3.1 初始化模型与界面

创建app.py文件,添加基础代码:

import streamlit as st from transformers import AutoModelForCausalLM, AutoTokenizer @st.cache_resource def load_model(): model = AutoModelForCausalLM.from_pretrained( "/root/qwen1.5b", device_map="auto", torch_dtype="auto" ) tokenizer = AutoTokenizer.from_pretrained("/root/qwen1.5b") return model, tokenizer model, tokenizer = load_model()

3.2 构建聊天界面

添加Streamlit界面代码:

st.title("Qwen2.5-1.5B 本地对话助手") if "messages" not in st.session_state: st.session_state.messages = [] for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) if prompt := st.chat_input("请输入您的问题..."): st.session_state.messages.append({"role": "user", "content": prompt}) with st.chat_message("user"): st.markdown(prompt) with st.chat_message("assistant"): message_placeholder = st.empty() full_response = "" inputs = tokenizer.apply_chat_template( st.session_state.messages, add_generation_prompt=True, return_tensors="pt" ).to(model.device) outputs = model.generate( inputs, max_new_tokens=1024, temperature=0.7, top_p=0.9 ) response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True) message_placeholder.markdown(response) st.session_state.messages.append({"role": "assistant", "content": response})

4. 增强功能实现

4.1 添加对话评分功能

在聊天界面中添加评分按钮:

if st.session_state.messages and st.session_state.messages[-1]["role"] == "assistant": cols = st.columns(5) with cols[0]: if st.button(" 有帮助"): st.session_state.last_rating = "positive" with cols[1]: if st.button(" 无帮助"): st.session_state.last_rating = "negative" if "last_rating" in st.session_state: st.write(f"您已评价: {st.session_state.last_rating}")

4.2 实现反馈收集

添加反馈文本框:

if st.session_state.messages and st.session_state.messages[-1]["role"] == "assistant": with st.expander("提供详细反馈"): feedback = st.text_area("您的建议或意见") if st.button("提交反馈"): # 这里可以添加日志记录逻辑 st.success("感谢您的反馈!")

4.3 添加日志记录功能

创建日志记录系统:

import logging from datetime import datetime def setup_logging(): logging.basicConfig( filename="chat_logs.log", level=logging.INFO, format="%(asctime)s - %(message)s" ) setup_logging() def log_interaction(user_input, ai_response, rating=None, feedback=None): log_entry = { "timestamp": datetime.now().isoformat(), "user_input": user_input, "ai_response": ai_response, "rating": rating, "feedback": feedback } logging.info(str(log_entry))

在聊天逻辑中添加日志记录:

# 在生成响应后添加 log_interaction(prompt, response) # 在评分按钮逻辑中添加 if "last_rating" in st.session_state: log_interaction( st.session_state.messages[-2]["content"], st.session_state.messages[-1]["content"], rating=st.session_state.last_rating )

5. 完整功能集成

将所有功能整合后的完整代码示例:

import streamlit as st from transformers import AutoModelForCausalLM, AutoTokenizer import logging from datetime import datetime # 初始化日志 def setup_logging(): logging.basicConfig( filename="chat_logs.log", level=logging.INFO, format="%(asctime)s - %(message)s" ) def log_interaction(user_input, ai_response, rating=None, feedback=None): log_entry = { "timestamp": datetime.now().isoformat(), "user_input": user_input, "ai_response": ai_response, "rating": rating, "feedback": feedback } logging.info(str(log_entry)) # 加载模型 @st.cache_resource def load_model(): model = AutoModelForCausalLM.from_pretrained( "/root/qwen1.5b", device_map="auto", torch_dtype="auto" ) tokenizer = AutoTokenizer.from_pretrained("/root/qwen1.5b") return model, tokenizer setup_logging() model, tokenizer = load_model() # 构建界面 st.title("Qwen2.5-1.5B 本地对话助手") if "messages" not in st.session_state: st.session_state.messages = [] for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) if prompt := st.chat_input("请输入您的问题..."): st.session_state.messages.append({"role": "user", "content": prompt}) with st.chat_message("user"): st.markdown(prompt) with st.chat_message("assistant"): message_placeholder = st.empty() full_response = "" inputs = tokenizer.apply_chat_template( st.session_state.messages, add_generation_prompt=True, return_tensors="pt" ).to(model.device) outputs = model.generate( inputs, max_new_tokens=1024, temperature=0.7, top_p=0.9 ) response = tokenizer.decode(outputs[0][inputs.shape[1]:], skip_special_tokens=True) message_placeholder.markdown(response) st.session_state.messages.append({"role": "assistant", "content": response}) log_interaction(prompt, response) # 评分和反馈功能 if st.session_state.messages and st.session_state.messages[-1]["role"] == "assistant": cols = st.columns(5) with cols[0]: if st.button(" 有帮助"): st.session_state.last_rating = "positive" log_interaction( st.session_state.messages[-2]["content"], st.session_state.messages[-1]["content"], rating="positive" ) with cols[1]: if st.button(" 无帮助"): st.session_state.last_rating = "negative" log_interaction( st.session_state.messages[-2]["content"], st.session_state.messages[-1]["content"], rating="negative" ) if "last_rating" in st.session_state: st.write(f"您已评价: {st.session_state.last_rating}") with st.expander("提供详细反馈"): feedback_text = st.text_area("您的建议或意见") if st.button("提交反馈"): log_interaction( st.session_state.messages[-2]["content"], st.session_state.messages[-1]["content"], feedback=feedback_text ) st.success("感谢您的反馈!") # 清空对话按钮 st.sidebar.button("清空对话", on_click=lambda: st.session_state.clear())

6. 总结与进阶建议

通过本教程,我们为Qwen2.5-1.5B Streamlit聊天应用添加了三个实用功能:

  1. 对话评分系统:允许用户快速评价AI回复质量
  2. 反馈收集机制:获取用户对对话内容的详细建议
  3. 日志记录功能:完整记录所有交互数据供后续分析

进阶改进建议

  • 将日志存储到数据库而非文件
  • 添加对话历史导出功能
  • 实现多用户会话管理
  • 增加对话主题分类标签

获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 15:21:23

智能小车主控电路设计:STM32最小系统全面讲解

以下是对您提供的博文内容进行 深度润色与专业重构后的版本 。我以一位深耕嵌入式系统设计十年、常年带学生打机器人竞赛、亲手画过上百块智能小车PCB的工程师视角,彻底重写了全文—— 去掉所有AI腔调、模板化表达和教科书式罗列,代之以真实项目中踩过…

作者头像 李华
网站建设 2026/5/6 13:43:41

教育科技驱动的学习革命:沉浸式教育平台的3大创新突破

教育科技驱动的学习革命:沉浸式教育平台的3大创新突破 【免费下载链接】codecombat Game for learning how to code. 项目地址: https://gitcode.com/gh_mirrors/co/codecombat 教育数字化转型的核心痛点 在教育数字化进程中,传统教学模式正面临…

作者头像 李华
网站建设 2026/5/4 8:40:22

零配置体验Open-AutoGLM,开箱即用的手机AI助理

零配置体验Open-AutoGLM,开箱即用的手机AI助理 1. 这不是遥控器,是真正能“看懂”屏幕的AI助手 你有没有过这样的时刻: 想在小红书搜个菜谱,却卡在首页广告里找不到搜索框; 想给微信里的文件传输助手发条消息&#x…

作者头像 李华
网站建设 2026/4/27 16:09:04

CogVideoX-2b自动化脚本:实现定时任务批量生成视频

CogVideoX-2b自动化脚本:实现定时任务批量生成视频 1. 工具介绍 CogVideoX-2b是一款基于智谱AI开源模型的文字生成视频工具,专为AutoDL环境优化。这个工具能让你的服务器变身"导演",根据文字描述自动生成高质量短视频。 核心优势…

作者头像 李华
网站建设 2026/5/2 11:30:33

Cursor辅助工具全攻略:3大核心功能与5个实用技巧

Cursor辅助工具全攻略:3大核心功能与5个实用技巧 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial re…

作者头像 李华