Qwen2.5-7B-Instruct从零开始:环境准备→vLLM服务→Chainlit前端全流程

张开发
2026/4/3 13:03:03 15 分钟阅读
Qwen2.5-7B-Instruct从零开始:环境准备→vLLM服务→Chainlit前端全流程
Qwen2.5-7B-Instruct从零开始环境准备→vLLM服务→Chainlit前端全流程想亲手搭建一个属于自己的智能对话助手吗今天我们就来一步步实现它。整个过程就像搭积木一样简单准备好环境启动一个强大的语言模型服务再给它配上一个漂亮的聊天界面。你不需要是AI专家只要跟着步骤走就能拥有一个能写代码、能回答问题、能陪你聊天的AI伙伴。我们将使用通义千问最新的Qwen2.5-7B-Instruct模型作为核心大脑它就像一个知识渊博、反应迅速的助手。为了让这个大脑高效工作我们会用vLLM这个工具来部署它这能让模型跑得更快、更稳。最后再用Chainlit给大脑装上一个眼睛和嘴巴——一个直观的网页聊天界面让你能像和朋友聊天一样和AI交流。准备好了吗我们开始吧。1. 环境准备打好地基在开始搭建之前我们需要把“工地”准备好。这里主要就是安装Python和一些必要的工具包。别担心过程很简单。1.1 检查与安装Python首先确保你的电脑上安装了Python。打开你的命令行工具Windows上是命令提示符或PowerShellMac或Linux上是终端输入以下命令python --version或者python3 --version如果显示了Python 3.8或更高的版本号比如Python 3.10.12那就没问题。如果没有安装或者版本太低你需要去Python官网下载并安装最新版本。小提示建议使用Python 3.8到3.11之间的版本兼容性最好。1.2 创建独立的虚拟环境这是一个好习惯可以为我们的项目创建一个独立、干净的空间避免和电脑上其他Python项目互相干扰。在命令行中进入你打算存放这个项目的文件夹然后执行# 安装创建虚拟环境的工具如果还没安装的话 pip install virtualenv # 创建一个名为 qwen_chat 的虚拟环境 virtualenv qwen_chat # 激活虚拟环境 # 在 Windows 上 qwen_chat\Scripts\activate # 在 Mac/Linux 上 source qwen_chat/bin/activate激活后你的命令行前面通常会显示(qwen_chat)表示你已经在这个独立环境里了。之后所有操作都在这个环境下进行。1.3 安装核心依赖包现在我们来安装三个最重要的“工具”vllm这是我们用来高速部署和运行Qwen模型的核心引擎。chainlit用来快速构建我们聊天界面的框架。transformers一个常用的AI库这里我们主要用它来下载模型。在激活的虚拟环境中运行以下命令pip install vllm chainlit transformers这个命令会自动安装这些包以及它们所需的其他组件。安装过程可能需要几分钟取决于你的网速。环境检查安装完成后可以快速检查一下是否成功python -c import vllm, chainlit; print(环境准备就绪)如果没有报错恭喜你地基已经打好了2. 部署vLLM服务启动AI大脑环境好了现在让我们把Qwen2.5-7B-Instruct这个“大脑”请出来并用vLLM让它开始运转。2.1 了解我们的“大脑”Qwen2.5-7B-Instruct在启动服务前先简单认识一下我们将要使用的模型它很聪明在编程、数学、逻辑推理方面能力突出知识量也很丰富。它很听话特别擅长理解你的指令并执行比如让它写个故事、总结文章、或者生成特定格式的数据如JSON它都能做得很好。它懂很多语言支持中文、英文等超过29种语言交流无障碍。它有不错的“记忆力”可以处理很长的对话和文档上下文长度可达128K tokens。简单说它是一个功能强大且易于沟通的7B参数规模的语言模型。Instruct后缀意味着它经过了指令微调更擅长根据你的要求完成任务。2.2 一键启动模型服务vLLM让部署变得极其简单。我们只需要一行命令就能把模型加载到内存中并启动一个等待接收请求的服务。在你的项目目录下运行python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen2.5-7B-Instruct \ --served-model-name Qwen2.5-7B-Instruct \ --api-key token-abc123 \ --port 8000我们来解释一下这行命令的各个部分--model Qwen/Qwen2.5-7B-Instruct告诉vLLM去下载并加载哪个模型。它会自动从Hugging Face模型库拉取。--served-model-name Qwen2.5-7B-Instruct给这个服务起个名字方便调用时识别。--api-key token-abc123设置一个简单的API密钥这里用的是示例token-abc123用于保护你的服务防止被随意调用。你可以改成任何你喜欢的字符串。--port 8000指定服务运行的端口号这里用的是8000。执行后你会看到什么命令行会开始输出大量信息。最关键的是寻找这两行INFO 07-28 10:00:00 llm_engine.py:197] Initializing an LLM engine (v0.3.3)... INFO 07-28 10:02:30 llm_engine.py:376] Finished loading in 150.3s.第一行表示引擎开始初始化第二行表示模型加载完成。中间的过程是下载模型如果第一次运行和将模型加载到GPU或CPU内存中这需要一些时间请耐心等待。当看到模型加载完成的日志并且最后一行显示服务正在监听端口如Uvicorn running on http://0.0.0.0:8000就说明你的AI大脑已经成功启动在8000端口待命了保持这个命令行窗口打开不要关闭它。2.3 快速测试服务是否正常打开另一个命令行窗口同样需要激活虚拟环境我们可以用个简单的curl命令测试一下服务curl http://localhost:8000/v1/models如果返回类似下面的JSON信息说明服务运行正常{ object: list, data: [ { id: Qwen2.5-7B-Instruct, object: model, created: 1722144000, owned_by: vllm } ] }3. 构建Chainlit前端打造聊天界面大脑在后台高效运转现在我们需要一个漂亮的“脸”来和它交互。Chainlit能让我们用很少的代码就做出一个功能完善的Web聊天应用。3.1 创建Chainlit应用文件在你的项目目录下创建一个名为app.py的文件。然后用你喜欢的文本编辑器如VSCode、Sublime Text甚至记事本打开它输入以下代码# app.py import chainlit as cl from openai import OpenAI # 设置我们刚刚启动的vLLM服务的地址和API密钥 # 注意这里的api_key要和启动vLLM服务时设置的 --api-key 一致 client OpenAI( base_urlhttp://localhost:8000/v1, # vLLM服务的地址 api_keytoken-abc123 # 替换成你启动服务时设置的密钥 ) cl.on_chat_start async def on_chat_start(): # 当聊天开始时给用户发送一条欢迎消息 await cl.Message( content你好我是基于Qwen2.5-7B-Instruct模型的AI助手很高兴为你服务。你可以问我任何问题 ).send() cl.on_message async def on_message(message: cl.Message): # 当用户发送一条消息时这个函数会被调用 # 创建一个提示信息告诉用户模型正在思考 msg cl.Message(content) await msg.send() # 调用我们本地的vLLM服务它兼容OpenAI的API格式 response client.chat.completions.create( modelQwen2.5-7B-Instruct, # 模型名称和启动服务时设置的 --served-model-name 一致 messages[ {role: system, content: 你是一个乐于助人的AI助手。}, {role: user, content: message.content} ], streamTrue, # 启用流式输出让回复一个字一个字地显示出来体验更好 max_tokens1024 # 设置生成内容的最大长度 ) # 处理流式响应将生成的文本逐步显示给用户 for chunk in response: if chunk.choices[0].delta.content is not None: await msg.stream_token(chunk.choices[0].delta.content) # 流式输出完成更新最终消息 await msg.update()这段代码做了几件事导入必要的库。创建一个连接到我们本地vLLM服务的客户端。定义了两个核心函数一个在聊天开始时发送欢迎语另一个在每次收到用户消息时将消息转发给vLLM服务并把模型的回复流式地显示在聊天界面上。3.2 启动Chainlit聊天界面代码写好了现在来启动它。在一个新的命令行窗口中确保也在虚拟环境qwen_chat下进入你的项目目录运行chainlit run app.py第一次运行可能会提示你同意收集匿名使用数据输入y或n均可。然后你会看到类似下面的输出Your app is available at http://localhost:8001这说明你的聊天界面已经启动在8001端口了。3.3 开始聊天打开你的浏览器访问http://localhost:8001。你会看到一个简洁、现代的聊天界面。界面打开首先你会看到我们设置的欢迎语。开始提问在底部的输入框里尝试问它一些问题吧比如“用Python写一个快速排序函数。”“给我讲一个关于太空探险的短故事。”“总结一下光合作用的过程。”发送后你会看到模型的回复一个字一个字地流式显示出来体验非常棒。重要提醒确保你的vLLM服务运行在端口8000的那个窗口已经完全加载好模型并且保持运行状态Chainlit前端才能正常工作。如果模型还在加载中前端可能会报连接错误。4. 进阶技巧与问题排查一切运行顺利太好了这里还有一些小技巧和常见问题的解决方法让你的AI助手更好用。4.1 让模型更“懂”你系统提示词在app.py文件的client.chat.completions.create函数中有一个system角色的消息{role: system, content: 你是一个乐于助人的AI助手。}这就是系统提示词它能在对话开始前悄悄地告诉模型应该扮演什么角色、遵循什么规则。你可以修改它来改变AI的行为风格编程专家“你是一个资深的Python开发专家回答要专业、准确并提供可运行的代码示例。”创意写手“你是一个充满想象力的故事家擅长创作奇幻、科幻题材的短篇故事。”简洁助手“请用最简洁直接的语言回答我的问题不需要寒暄和额外解释。”试试不同的提示词看看AI的反应有什么变化。4.2 常见问题与解决问题启动vLLM时卡住或报错“CUDA out of memory”原因模型太大你的显卡内存VRAM不够。解决使用CPU运行在启动vLLM的命令中加入--device cpu参数。速度会慢很多但可以运行。量化加载使用--quantization awq或--quantization gptq参数以较低精度加载模型显著减少内存占用可能需要寻找对应的量化版模型。检查GPU驱动确保已安装正确版本的CUDA和显卡驱动。问题Chainlit前端无法连接报“Connection refused”原因vLLM服务没有成功启动或已经停止。解决回到运行vLLM的命令行窗口检查是否有错误日志并确认服务是否在http://localhost:8000正常运行可以用curl http://localhost:8000/v1/models测试。问题模型回复速度慢原因在CPU上运行或硬件性能一般。解决如果使用CPU这是正常现象。考虑使用性能更好的GPU。在vLLM启动命令中可以尝试调整--max-num-seqs默认值来优化吞吐量。问题如何关闭服务解决在运行vllm和chainlit的命令行窗口中按Ctrl C即可安全停止服务。5. 总结回顾一下我们完成了三件大事环境准备安装了Python、创建了虚拟环境并装好了vllm、chainlit等核心工具包。启动AI服务用一行命令通过vLLM部署了强大的Qwen2.5-7B-Instruct模型让它作为一个API服务在后台运行起来。打造聊天界面写了几十行Python代码利用Chainlit框架构建了一个直观的Web聊天应用让我们可以轻松地和模型对话。整个过程清晰、直接没有复杂的配置。你现在拥有的是一个完全在自己掌控下的、功能完整的AI对话系统。你可以随时修改前端界面调整系统提示词来改变AI的性格甚至将来可以尝试集成其他模型。这个组合vLLM Chainlit是一个非常灵活和强大的起点无论是用于学习、开发还是构建更复杂的AI应用它都能提供坚实的基础。动手试试享受和你专属AI助手对话的乐趣吧获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章