Phi-3-mini-128k-instruct实操手册:Chainlit前端添加对话导出为Markdown/PDF
Phi-3-mini-128k-instruct实操手册:Chainlit前端添加对话导出为Markdown/PDF
1. 模型简介
Phi-3-Mini-128K-Instruct是一个38亿参数的轻量级开放模型,属于Phi-3系列。该模型经过专门训练,具备以下特点:
- 支持128K tokens的长上下文处理
- 训练数据包含合成数据和精选公开网站数据
- 经过监督微调和直接偏好优化
- 在常识、语言理解、数学、编码等方面表现优异
这个模型特别适合需要处理长文本和复杂推理的任务,同时保持了轻量级的优势。
2. 环境准备与部署验证
2.1 检查模型部署状态
使用以下命令检查模型是否部署成功:
cat /root/workspace/llm.log如果部署成功,您将看到类似以下的输出:
Model loaded successfully Ready for inference2.2 Chainlit前端验证
2.2.1 启动Chainlit界面
确保模型加载完成后,启动Chainlit前端界面。您将看到一个简洁的聊天界面,可以开始与模型交互。
2.2.2 进行测试提问
在输入框中输入您的问题,例如: "请简要介绍Phi-3-mini-128k-instruct模型的特点"
模型将生成响应,显示在聊天窗口中。
3. 对话导出功能实现
3.1 安装必要依赖
首先确保已安装以下Python包:
pip install chainlit markdown2pdf3.2 修改Chainlit应用代码
在您的Chainlit应用代码中添加以下功能:
import chainlit as cl from markdown2pdf import convert @cl.on_chat_start async def start_chat(): # 初始化对话历史记录 cl.user_session.set("conversation_history", []) @cl.on_message async def main(message: cl.Message): # 获取用户消息 user_message = message.content # 调用模型生成响应 response = await generate_response(user_message) # 获取当前对话历史 history = cl.user_session.get("conversation_history") history.append(f"用户: {user_message}") history.append(f"助手: {response}") cl.user_session.set("conversation_history", history) # 发送响应给用户 await cl.Message(content=response).send() @cl.action_callback("export_markdown") async def export_markdown(action: cl.Action): history = cl.user_session.get("conversation_history") markdown_content = "\n\n".join(history) # 保存为Markdown文件 with open("conversation.md", "w", encoding="utf-8") as f: f.write(markdown_content) # 提供下载链接 await cl.Message(content="对话已导出为Markdown文件", actions=[cl.Action(name="download_md", value="conversation.md", label="下载Markdown")]).send() @cl.action_callback("export_pdf") async def export_pdf(action: cl.Action): history = cl.user_session.get("conversation_history") markdown_content = "\n\n".join(history) # 转换为PDF convert(markdown_content, "conversation.pdf") # 提供下载链接 await cl.Message(content="对话已导出为PDF文件", actions=[cl.Action(name="download_pdf", value="conversation.pdf", label="下载PDF")]).send() @cl.action_callback("download_md") async def download_md(action: cl.Action): # 实现文件下载逻辑 pass @cl.action_callback("download_pdf") async def download_pdf(action: cl.Action): # 实现文件下载逻辑 pass3.3 添加导出按钮
在Chainlit界面中添加导出按钮:
@cl.on_chat_start async def start_chat(): # 添加导出按钮 actions = [ cl.Action(name="export_markdown", value="markdown", label="导出为Markdown"), cl.Action(name="export_pdf", value="pdf", label="导出为PDF") ] await cl.Message(content="欢迎使用Phi-3-mini-128k-instruct聊天助手", actions=actions).send()4. 功能测试与使用
4.1 测试对话导出功能
- 在Chainlit界面中进行几轮对话
- 点击"导出为Markdown"按钮
- 检查生成的Markdown文件是否包含完整对话
- 点击"导出为PDF"按钮
- 验证PDF文件是否正常生成且内容完整
4.2 常见问题解决
- 导出失败:检查是否有写入权限和足够磁盘空间
- 格式问题:确保对话内容不包含特殊字符
- 中文显示异常:确认文件编码为UTF-8
5. 总结
通过本教程,您已经学会了:
- 如何验证Phi-3-mini-128k-instruct模型的部署状态
- 使用Chainlit创建交互式前端界面
- 实现对话历史记录功能
- 添加Markdown和PDF导出功能
- 测试和验证导出功能
这些功能特别适合需要保存对话记录的场景,如技术支持、教学辅助或内容创作。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。
