# Qwen
2.5-7B-Instruct
保姆
级
教程:Chainlit会话持久化+Redis存储
集成 > 本文面向有一定Python基础但希望快速上手AI应用开发的读者,将从零开始教你搭建完整的对话系统,包含模型
部署、前端界面和会话持久化功能。 1. 环境准备与快速
部署 在开始之前,我们需要准备好运行环境。以下是系统要求和安装步骤: 系统要求: – Python 3.8 或更高版本 – 至少16GB RAM(推荐3
2GB) – GPU显存至少16GB(推荐
24GB以上) – Linux或
Windows WSL
2系统 安装依赖包(复制以下命令到终端执行): “`bash # 创建虚拟环境 python -m venv qwen_env source qwen_env/bin/activate # Linux/Mac # 或 qwen_envScriptsactivate #
Windows # 安装核心依赖 pip install vllm chainlit redis “` 验证安装: “`bash python -c “import vllm, chainlit, redis; print
(‘所有依赖安装成功!’)” “` 如果看到”所有依赖安装成功!”的输出,说明环境准备就绪。
2.
部署Qwen
2.5-7B-Instruct模型 Qwen
2.5-7B-Instruct是一个强大的多语言对话模型,支持
29种语言,能够处理长达1
28K tokens的上下文。让我们先启动模型服务: 创建启动脚本(保存为 `start_model.py`): “`python from vllm import LLM, SamplingParams # 初始化模型 llm = LLM
( model=”Qwen/Qwen
2.5-7B-Instruct”, tensor_parallel_size=1, # 单GPU gpu_memory_utilization=0.8 ) print
(“✅ Qwen
2.5-7B-Instruct模型加载成功!”) “` 运行模型服务: “`bash python start_model.py “` 等待模型加载完成(可能需要几
分钟),看到”模型加载成功!”提示后,就可以进行下一步了。 3. Chainlit前端界面搭建 Chainlit是一个专门为AI应用设计的Python框架,可以快速构建漂亮的聊天界面。 创建Chainlit应用(保存为 `app.py`): “`python import chainlit as cl from vllm import LLM, SamplingParams import redis import json # 初始化Redis连接(用于会话存储) redis_client = redis.Redis
(host=’localhost’, port=6379, db=0) # 加载模型(在实际应用中应该单独运行) llm = LLM
(model=”Qwen/Qwen
2.5-7B-Instruct”) @cl.on_chat_start async def start_chat
()
: # 创建新的会话ID session_id = cl.user_session.get
(“id”) await cl.Message
(content=”你好!我是Qwen
2.5助手,有什么可以帮你的?”).send
() @cl.on_message async def main
(message
: cl.Message)
: # 获取当前会话ID session_id = cl.user_session.get
(“id”) # 构建对话历史(从Redis获取) history = get_chat_history
(session_id) # 准备模型输入 prompt = build_prompt
(history, message.content) # 调用模型生成回复 sampling_params = SamplingParams
(temperature=0.7, max_tokens=10
24) output = llm.generate
(prompt, sampling_params) response = output[0].outputs[0].text # 保存到历史记录 save_to_history
(session_id, message.content, response) # 发送回复 await cl.Message
(content=response).send
() def get_chat_history
(session_id)
: “””从Redis获取对话历史””” history_key = f”chat_history
:{session_id}” history = redis_client.get
(history_key) return json.loads
(history) if history else [] def save_to_history
(session_id, user_input, assistant_response)
: “””保存对话到Redis””” history_key = f”chat_history
:{session_id}” history = get_chat_history
(session_id) history.append
({“user”
: user_input, “assistant”
: assistant_response}) redis_client.set
(history_key, json.dumps
(history), ex=86400) # 保存
24小时 def build_prompt
(history, new_message)
: “””构建对话提示词””” prompt = “” for turn in history[-10
:]
: # 保留最近10轮对话 prompt += f”用户
: {turn[‘user’]} 助手
: {turn[‘assistant’]} ” prompt += f”用户
: {new_message} 助手
: ” return prompt “` 启动Chainlit服务: “`bash chainlit run app.py -w “` 打开浏览器访问 `http
://localhost
:8000`,就能看到聊天界面了。 openclaw skills 教程 4. Redis会话持久化配置 Redis是一个内存
数据库,非常适合存储会话数据。让我们配置完整的持久化方案: 安装和启动Redis: “`bash # Ubuntu/Debian sudo apt update sudo apt install redis-server sudo systemctl start redis-server # 或者使用Docker docker run -d -p 6379
:6379 –name redis redis
:alpine “` 测试Redis连接(创建 `test_redis.py`): “`python import redis import json # 连接Redis r = redis.Redis
(host=’localhost’, port=6379, db=0) # 测试连接 try
: r.ping
() print
(“✅ Redis连接成功!”) except
: print
(“❌ Redis连接失败,请检查Redis服务是否启动”) “` 增强的会话管理功能: 在我们的应用中,我们还可以添加更多有用的功能: “`python def get_session_summary
(session_id)
: “””获取会话摘要””” history = get_chat_history
(session_id) if not history
: return “无对话记录” # 生成简单摘要 last_message = history[-1][“user”][
:50] + “…” if len
(history[-1][“user”]) > 50 else history[-1][“user”] return f”共{len
(history)}轮对话,最后消息
: {last_message}” def clear_session_history
(session_id)
: “””清空会话历史””” history_key = f”chat_history
:{session_id}” redis_client.delete
(history_key) return True “` 5. 完整应用
部署实战 现在让我们把所有的组件整合起来,创建一个完整的可
部署应用: 项目结构: “` qwen-chatbot/ ├── app.py # Chainlit主应用 ├── model_server.py # 模型服务 ├── redis_config.py # Redis配置 ├── requirements.txt # 依赖列表 └── README.md # 说明文档 “` requirements.txt: “` vllm>=0.3.0 chainlit>=1.0.0 redis>=4.5.0 “` 一键启动脚本(`start_all.sh`): “`bash #!/bin/bash # 启动Redis redis-server –daemonize yes # 启动模型服务(在后台运行) python model_server.py & # 等待模型加载 sleep 1
20 # 启动Chainlit前端 chainlit run app.py -w “` 使用说明: 1. 给脚本执行权限:`chmod +x start_all.sh`
2. 运行脚本:`./start_all.sh` 3. 打开浏览器访问:`http
://localhost
:8000` 6. 实际使用演示 现在让我们看看如何使用这个完整的对话系统: 第一次使用: 1. 打开浏览器访问 `http
://localhost
:8000`
2. 你会看到欢迎消息:”你好!我是Qwen
2.5助手,有什么可以帮你的?” 3. 输入你的问题,比如:”请用中文介绍一下你自己” 4. 等待模型生成回复(首次响应可能需要几秒钟) 多轮对话体验: – 模型会记住之前的对话内容 – 你可以问连续的问题,比如: – “Python怎么安装第三方包?” – “用pip安装时遇到权限错误怎么办?” – 系统会自动维护对话上下文 会话持久化验证: 1. 进行几轮对话后关闭浏览器
2. 重新打开聊天界面 3. 你会发现之前的对话历史仍然存在 4. 可以继续之前的对话话题 7. 常见问题解决 在使用过程中可能会遇到的一些问题及解决方法: 模型加载慢: – 确保有足够的GPU内存 – 第一次加载需要下载模型,请保持网络畅通 – 可以使用本地已下载的模型路径 Redis连接失败: “`bash # 检查Redis状态 sudo systemctl status redis-server # 如果使用Docker,检查容器状态 docker ps | grep redis “` 内存不足: – 如果GPU内存不足,可以尝试使用更小的模型 – 或者使用CPU模式(但速度会慢很多) 对话历史丢失: – 检查Redis是否正常运行 – 确认会话ID没有变化 8. 总结 通过本
教程,我们成功搭建了一个完整的Qwen
2.5-7B-Instruct对话系统,具有以下特点: 核心功能: – 基于vLLM的高效模型推理 – Chainlit提供的现代化聊天界面 – Redis实现的会话持久化存储 – 支持多轮对话上下文维护 技术亮点: –
部署简单,只需几个Python脚本 – 会话数据自动保存,重启后不丢失 – 支持长上下文对话(最多1
28K tokens) – 多语言支持(
29种语言) 实用价值: – 可以用于智能客服、个人助手、教育辅导等场景 – 代码结构清晰,易于二次开发 – 所有组件都是开源软件,免费使用 这个系统为你提供了一个强大的AI对话平台基础,你可以在此基础上添加更多功能,如文件上传、语音交互、多模态支持等。 — > 获取更多AI镜像 > > 想探索更多AI镜像和应用场景?访问 [CSDN星图镜像广场]
(https
://ai.csdn.net/?utm_source=mirror_blog_end),提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键
部署。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/253923.html原文链接:https://javaforall.net
