Phi-3.5-mini-instruct代码实例:Chainlit中集成Markdown渲染与代码高亮

张开发
2026/6/11 2:10:08 15 分钟阅读
Phi-3.5-mini-instruct代码实例:Chainlit中集成Markdown渲染与代码高亮
Phi-3.5-mini-instruct代码实例Chainlit中集成Markdown渲染与代码高亮1. 模型简介Phi-3.5-mini 是一个轻量级的开放模型基于 Phi-3 数据集构建专注于高质量、推理密集的数据处理。这个模型支持长达128K的上下文长度经过监督微调、近端策略优化和直接偏好优化等多阶段训练具备精确的指令遵循能力和强大的安全措施。作为Phi-3模型家族的一员Phi-3.5-mini特别适合需要高效文本生成的场景比如代码辅助与解释技术文档生成知识问答系统内容创作助手2. 环境准备与部署验证2.1 部署验证使用vLLM部署Phi-3.5-mini-instruct模型后可以通过以下命令检查服务状态cat /root/workspace/llm.log成功部署后日志中会显示模型加载完成的相关信息包括模型名称、加载的权重文件路径以及可用的GPU资源等关键信息。2.2 Chainlit前端配置Chainlit是一个专为AI应用设计的Python框架可以快速构建交互式聊天界面。要集成Phi-3.5-mini-instruct模型我们需要安装必要的Python包pip install chainlit vllm创建一个基本的Chainlit应用文件app.pyimport chainlit as cl from vllm import LLM, SamplingParams # 初始化模型 llm LLM(modelPhi-3.5-mini-instruct) sampling_params SamplingParams(temperature0.7, top_p0.9)3. 实现Markdown渲染与代码高亮3.1 基础Chainlit应用结构下面是一个完整的Chainlit应用示例实现了Markdown渲染和代码高亮功能import chainlit as cl from vllm import LLM, SamplingParams cl.on_chat_start async def on_chat_start(): # 初始化模型 cl.user_session.set(llm, LLM(modelPhi-3.5-mini-instruct)) cl.user_session.set(sampling_params, SamplingParams(temperature0.7, top_p0.9)) # 发送欢迎消息 await cl.Message( content欢迎使用Phi-3.5-mini-instruct聊天助手, author助手 ).send() cl.on_message async def on_message(message: cl.Message): # 获取模型和参数 llm cl.user_session.get(llm) sampling_params cl.user_session.get(sampling_params) # 调用模型生成响应 output llm.generate(message.content, sampling_params) response output[0].outputs[0].text # 发送响应支持Markdown渲染 await cl.Message( contentresponse, author助手, languagemarkdown # 启用Markdown渲染 ).send()3.2 代码高亮实现Chainlit内置支持代码高亮我们可以在响应中插入代码块来实现cl.on_message async def on_message(message: cl.Message): # ... 前面的代码不变 ... # 示例在响应中插入代码块 code_response f 以下是模型生成的响应 python # 示例代码 def hello_world(): print(Hello from Phi-3.5-mini!){response} await cl.Message( contentcode_response, author助手, languagemarkdown ).send()## 4. 高级功能实现 ### 4.1 流式响应 为了提高用户体验我们可以实现流式响应功能 python cl.on_message async def on_message(message: cl.Message): llm cl.user_session.get(llm) sampling_params cl.user_session.get(sampling_params) # 创建消息流 msg cl.Message(content, author助手) await msg.send() # 流式生成响应 for chunk in llm.generate_stream(message.content, sampling_params): await msg.stream_token(chunk.outputs[0].text) await msg.update()4.2 自定义UI元素Chainlit支持添加各种UI元素来增强交互体验cl.on_message async def on_message(message: cl.Message): # ... 前面的代码不变 ... # 添加操作按钮 actions [ cl.Action(namelike, valuelike, label 喜欢), cl.Action(namedislike, valuedislike, label 不喜欢) ] await cl.Message( contentresponse, author助手, languagemarkdown, actionsactions ).send()5. 实际应用示例5.1 技术问答场景下面是一个完整的技术问答应用示例展示如何结合Markdown和代码高亮import chainlit as cl from vllm import LLM, SamplingParams cl.on_chat_start async def on_chat_start(): cl.user_session.set(llm, LLM(modelPhi-3.5-mini-instruct)) cl.user_session.set(sampling_params, SamplingParams(temperature0.7, top_p0.9)) await cl.Message( content# 技术问答助手 我是基于Phi-3.5-mini-instruct构建的技术问答助手可以回答编程、算法、系统设计等问题。 试试问我 - Python中如何实现快速排序 - 解释REST API的设计原则 - 给我一个React组件的示例, author助手, languagemarkdown ).send() cl.on_message async def on_message(message: cl.Message): llm cl.user_session.get(llm) sampling_params cl.user_session.get(sampling_params) prompt f你是一个专业的技术助手请用Markdown格式回答以下问题包含代码示例时要使用正确的语法高亮 问题{message.content} 回答 msg cl.Message(content, author助手, languagemarkdown) await msg.send() for chunk in llm.generate_stream(prompt, sampling_params): await msg.stream_token(chunk.outputs[0].text) await msg.update()6. 总结通过本文的示例我们实现了使用vLLM部署Phi-3.5-mini-instruct模型构建Chainlit前端应用实现Markdown内容渲染添加代码高亮功能实现流式响应和交互元素这些技术可以广泛应用于技术文档生成工具编程学习助手代码审查系统技术问答平台Phi-3.5-mini-instruct的轻量级特性使其非常适合作为这些应用的底层模型而Chainlit则提供了快速构建友好界面的能力。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章