Phi-3.5-mini-instruct实战教程:Chainlit自定义UI与历史会话持久化配置

张开发
2026/4/21 16:05:29 15 分钟阅读

分享文章

Phi-3.5-mini-instruct实战教程:Chainlit自定义UI与历史会话持久化配置
Phi-3.5-mini-instruct实战教程Chainlit自定义UI与历史会话持久化配置1. 环境准备与快速部署Phi-3.5-mini-instruct是一个轻量级的开放模型支持128K令牌上下文长度。它基于高质量数据集构建经过监督微调、近端策略优化和直接偏好优化等增强过程具备精确的指令遵循能力和强大的安全措施。1.1 系统要求操作系统Linux (推荐Ubuntu 20.04)Python版本3.8GPU至少16GB显存内存32GB1.2 安装依赖pip install vllm chainlit1.3 部署Phi-3.5-mini-instruct使用vLLM部署模型服务python -m vllm.entrypoints.api_server \ --model Phi-3.5-mini-instruct \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9部署成功后可以通过以下命令检查服务状态curl http://localhost:8000/health2. Chainlit基础配置2.1 创建Chainlit应用新建一个Python文件app.py添加以下基础配置import chainlit as cl from openai import AsyncOpenAI client AsyncOpenAI( base_urlhttp://localhost:8000/v1, api_keytoken-abc123 ) cl.on_chat_start async def on_chat_start(): await cl.Message(content欢迎使用Phi-3.5-mini-instruct聊天助手).send()2.2 运行Chainlit应用chainlit run app.py -w访问http://localhost:8000即可看到基础聊天界面。3. 自定义UI实现3.1 添加侧边栏配置在app.py中添加侧边栏配置cl.set_chat_profiles async def chat_profile(): return [ cl.ChatProfile( name通用助手, markdown_description适用于一般问答场景 ), cl.ChatProfile( name代码助手, markdown_description专注于编程相关问题 ) ]3.2 自定义消息样式cl.on_message async def on_message(message: cl.Message): response await client.chat.completions.create( modelPhi-3.5-mini-instruct, messages[{role: user, content: message.content}], temperature0.7, ) msg cl.Message(content) await msg.send() # 流式输出 for chunk in response: if chunk.choices[0].delta.content: await msg.stream_token(chunk.choices[0].delta.content) await msg.update()4. 历史会话持久化配置4.1 配置会话存储from chainlit.storage import LocalStorage storage LocalStorage() cl.on_chat_start async def on_chat_start(): # 检查是否有历史会话 session_id cl.user_session.get(id) history storage.get(session_id) if history: for msg in history: await cl.Message(**msg).send() else: await cl.Message(content欢迎使用Phi-3.5-mini-instruct聊天助手).send()4.2 保存会话历史cl.on_message async def on_message(message: cl.Message): # 获取当前会话ID session_id cl.user_session.get(id) # 获取历史消息 history storage.get(session_id) or [] # 添加新消息 history.append({ role: user, content: message.content }) # 获取模型回复 response await client.chat.completions.create( modelPhi-3.5-mini-instruct, messageshistory, temperature0.7, ) # 处理回复 msg cl.Message(content) await msg.send() full_response for chunk in response: if chunk.choices[0].delta.content: token chunk.choices[0].delta.content full_response token await msg.stream_token(token) await msg.update() # 保存完整对话 history.append({ role: assistant, content: full_response }) storage.set(session_id, history)5. 进阶功能实现5.1 文件上传处理cl.on_file_upload async def on_file_upload(files: List[cl.File]): for file in files: if file.type text/plain: content file.content.decode(utf-8) await cl.Message(f已上传文件: {file.name}\n内容预览: {content[:200]}...).send()5.2 自定义动作按钮cl.action_callback(clear_history) async def on_action(action: cl.Action): session_id cl.user_session.get(id) storage.delete(session_id) await cl.Message(content历史记录已清空).send() await action.remove() cl.on_message async def on_message(message: cl.Message): actions [ cl.Action(nameclear_history, valueclear, label清空历史) ] await message.send(actionsactions)6. 总结通过本教程我们实现了基础部署使用vLLM部署Phi-3.5-mini-instruct模型UI定制配置Chainlit聊天界面添加侧边栏和自定义消息样式会话持久化实现历史对话的本地存储和恢复功能进阶功能文件上传处理和自定义动作按钮这些功能可以帮助开发者快速构建基于Phi-3.5-mini-instruct的交互式应用。在实际项目中您还可以进一步扩展添加用户认证系统实现多模态输入处理集成更多第三方服务优化存储方案如使用数据库获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章