在 Ollama 中创建自定义模型时,通过 Modelfile 里的 SYSTEM 指令固化系统提示词,并用 PARAMETER stop 设置停止符,是最稳定且长期生效的配置方式。
先说结论:适合需要固定角色行为或控制生成结束条件的场景,修改配置文件后需重新构建模型才能生效。
- 适合:长期固定的角色扮演、格式约束或特定停止条件。
- 先准备:确保基础模型已本地下载,新建文本文件编写 Modelfile。
- 验收:使用 ollama run 运行新模型,观察是否自动加载提示词并在指定词处停止。
命令速用版
# Modelfile 示例内容
FROM llama3:8b
SYSTEM """
你是一个乐于助人的助手,回答简洁且专业。
如果问题超出知识范围,明确告知用户。
"""
PARAMETER temperature 0.7
PARAMETER stop "<|endoftext|>"保存为 Modelfile 后,执行以下命令构建:
ollama create my-custom-model -f ./Modelfile为什么会这样
Modelfile 是 Ollama 定义和构建自定义模型的配置文件,类似于 Dockerfile。它允许你在模型层面固化行为,而不是每次对话都手动输入提示词。SYSTEM 指令会在每次会话加载时注入系统级指令,而 PARAMETER stop 则告诉模型在生成文本遇到特定字符时强制结束,防止无限生成或格式错误。
分步处理
- 新建文件:创建一个文本文件(如 my-model.Modelfile)。
- 编写配置:第一行必须是 FROM 指令指定基础模型,随后添加 SYSTEM 和 PARAMETER 指令。注意停止符需要用引号包裹,多行系统提示建议用三引号。
- 构建模型:在终端运行
ollama create <模型名> -f <文件路径>。 - 运行测试:使用
ollama run <模型名>启动对话。
怎么验证是否生效
运行模型后,直接发送问题,观察模型是否自动遵循预设的角色设定(无需再次输入系统提示)。对于停止符,可以尝试触发该关键词,看模型是否在该处截断输出。也可以通过 ollama show <模型名> 查看模型配置详情。
常见坑
- FROM 指定的基础模型必须已存在于本地,否则构建会失败或触发自动下载。
- 停止符参数需严格匹配模型输出的 token 格式,大小写敏感。
- SYSTEM 指令内容建议用三引号包裹多行文本,避免换行符导致解析错误。
参考来源
- ollama/docs/modelfile.mdx at main · ollama/ollama · GitHub