Phi-3.5-mini-instruct基础教程:如何修改webui.py添加自定义system prompt
1. 引言
Phi-3.5-mini-instruct是微软推出的轻量级开源指令微调大模型,在长上下文代码理解和多语言任务上表现优异。这个教程将手把手教你如何修改webui.py文件,为这个强大的模型添加自定义system prompt功能。
通过本教程,你将学会:
- 理解system prompt的作用
- 定位并修改关键代码
- 测试自定义prompt的效果
- 解决常见问题
2. 准备工作
2.1 环境确认
在开始修改前,请确保:
- 模型已正确部署并运行
- 可以访问webui.py文件
- 有基本的Python代码编辑能力
检查服务状态:
supervisorctl status phi-3.5-mini-instruct2.2 备份重要文件
修改前建议备份原始文件:
cp /root/Phi-3.5-mini-instruct/webui.py /root/Phi-3.5-mini-instruct/webui.py.bak3. 理解system prompt
3.1 什么是system prompt
system prompt是给模型的初始指令,用于设定对话的基本规则和行为模式。它可以帮助:
- 定义AI的角色(如编程助手、写作帮手)
- 设定回答风格(正式、幽默、简洁)
- 限制回答范围(如只回答技术问题)
3.2 默认prompt分析
Phi-3.5-mini-instruct的默认prompt通常包含:
- 基本行为准则
- 安全限制
- 通用对话模板
4. 修改webui.py
4.1 定位关键代码
打开webui.py文件,找到模型初始化部分(通常在文件开头附近):
model = AutoModelForCausalLM.from_pretrained(...) tokenizer = AutoTokenizer.from_pretrained(...)4.2 添加system prompt变量
在模型初始化后添加:
DEFAULT_SYSTEM_PROMPT = """你是一个乐于助人的AI助手,专门回答技术问题。 请用清晰、专业的语言回答,如果不知道答案请直接说明。 回答时请考虑代码安全性和最佳实践。"""4.3 修改生成函数
找到生成响应的函数(通常名为generate或predict),修改输入处理部分:
def generate(input_text, max_length=256, temperature=0.3, top_p=0.8, top_k=20, repetition_penalty=1.1): # 组合system prompt和用户输入 full_prompt = f"{DEFAULT_SYSTEM_PROMPT}\n\n用户: {input_text}\n助手:" inputs = tokenizer(full_prompt, return_tensors="pt").to(device) outputs = model.generate( **inputs, max_length=max_length, temperature=temperature, top_p=top_p, top_k=top_k, repetition_penalty=repetition_penalty, use_cache=False # 解决DynamicCache问题 ) return tokenizer.decode(outputs[0], skip_special_tokens=True)4.4 更新Gradio界面
如果需要在前端显示或修改system prompt,找到UI定义部分添加:
with gr.Blocks() as demo: system_prompt = gr.Textbox( label="System Prompt", value=DEFAULT_SYSTEM_PROMPT, lines=5 ) input_text = gr.Textbox(label="输入问题") # ...其他UI元素...5. 测试修改
5.1 重启服务
应用修改后需要重启服务:
supervisorctl restart phi-3.5-mini-instruct5.2 验证效果
尝试不同场景的提问:
- 技术问题:"如何用Python读取CSV文件?"
- 通用问题:"告诉我一个笑话" 观察回答是否符合你设定的system prompt风格
6. 进阶定制
6.1 多角色预设
可以添加多个预设角色:
PROMPT_PRESETS = { "技术专家": "你是一个资深技术专家...", "写作助手": "你是一个创意写作助手...", "语言教师": "你是一个耐心的语言教师..." }6.2 动态切换
在UI中添加下拉菜单:
preset_select = gr.Dropdown( label="预设角色", choices=list(PROMPT_PRESETS.keys()), value="技术专家" )7. 常见问题解决
7.1 修改后服务无法启动
检查日志定位问题:
tail -f /root/Phi-3.5-mini-instruct/logs/phi35.err常见原因:
- Python语法错误
- 缩进问题
- 缺少依赖
7.2 prompt效果不明显
尝试:
- 简化prompt语言
- 增加具体指令
- 调整温度参数(0.1-0.5效果较好)
8. 总结
通过本教程,你已经学会了:
- 理解system prompt的重要性
- 安全修改webui.py文件
- 添加自定义prompt功能
- 测试和优化prompt效果
下一步建议:
- 尝试不同的prompt风格
- 分享你的最佳prompt实践
- 探索模型的其他定制可能性
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。