如何通过 Ollama 修改 Modelfile 实现特定角色的系统提示词定制
直接改 Modelfile 是在本地跑 Ollama 时,让模型「入戏」最彻底的方式。很多人习惯在对话框里发一段 System Prompt,但那样每次新开会话都要重新输入,而且模型很容易在多轮对话后把人设给丢了。
通过定制 Modelfile,你可以把角色定义直接固化到模型权重加载的上下文里。以我想把 Llama3 改造成一个「只输出 JSON 格式的 API 接口文档专家」为例,操作流程如下:
1. 导出原模型的 Modelfile
先得知道原厂的配置是怎么写的,用命令把 Llama3 的定义拉出来:
ollama show --modelfile llama3 > Llama3.Modelfile2. 修改系统指令与参数
打开这个文件,你会看到 FROM llama3。关键在于修改 SYSTEM 指令。为了让它极其严格地执行 JSON 格式,我不仅改了提示词,还调低了 temperature(温度值),防止它在输出 JSON 时自由发挥导致格式崩溃。
修改后的文件内容如下:
FROM llama3
# 设置参数,降低随机性,保证格式稳定
PARAMETER temperature 0.2
PARAMETER num_ctx 4096
# 强制角色定义
SYSTEM """
你是一个专业的 API 文档转换专家。
你的唯一任务是将用户的自然语言描述转换为标准 JSON 格式的接口定义。
禁止输出任何开场白(如"好的,这是为您生成的...")或结尾总结。
如果无法转换,请仅返回 {"error": "reason"}。
"""3. 创建并运行新模型
保存文件后,用 create 命令给这个定制版起个新名字,比如 json-expert:
ollama create json-expert -f Llama3.Modelfile然后直接运行:ollama run json-expert踩坑经验与技巧:
多行提示词的陷阱:在 Modelfile 里写 SYSTEM 指令时,如果内容超过一行,一定要用三个双引号 """ 包裹,否则 Ollama 在解析时可能会直接截断,导致你的角色设定只生效了一半。
参数微调比提示词更管用:如果你发现模型还是爱说废话,单纯在 SYSTEM 里写「不要说废话」效果有限,尝试把 temperature 压到 0.1 甚至 0,这时候模型会变得非常死板,但对于特定角色(如代码转换器、数据提取器)来说,这才是最高效率的状态。
快速迭代法:不需要每次都写个文件,简单的修改可以直接用命令行传递,但建议还是走 Modelfile 路径,因为这样你可以把这个文件存进 Git,方便管理不同版本的「AI人格」。
免费 AI 工具箱 · 全部完全免费
全部回复 (0)
还没有回复,来发第一条吧!
