Modelfile 定制

Modelfile 是 Ollama 的「模型蓝图」:在已有权重上固定系统提示、采样参数、上下文长度,甚至少量示例对话,然后 ollama create 成一个新的本地名字。之后 CLI、API、OpenAI 兼容层都用这个新名字,而不必每次请求都传一长段 system

指令不区分大小写;文档里习惯写成大写以便阅读。顺序不限,通常把 FROM 放在最上面。


最小例子

FROM gemma4
PARAMETER temperature 0.7
PARAMETER num_ctx 8192
SYSTEM """你是垦荒学园的助教。回答简洁,不确定就直说不知道。"""

保存为 Modelfile(无扩展名也可),在该目录执行:

ollama create kenhuang-tutor -f Modelfile
ollama run kenhuang-tutor

官方 CLI 也可以不写名字、只 ollama create -f Modelfile(名称规则以当前 CLI 帮助为准)。查看某个已有模型展开后的文件:

ollama show --modelfile gemma4

你会看到内部 FROM 指向 blob 哈希,以及模型自带的 TEMPLATE / stop。二次定制时,把 FROM 改成人类可读的模型名(如 FROM gemma4:latest),不要复制那一长串路径,除非你真的要钉死某个 blob。


FROM(必需)

FROM gemma4
FROM gemma4:latest
FROM ./my-model.gguf
FROM /abs/path/to/weights-dir
来源说明
Library 名最常见;会引用已 pull 的模型
.gguf路径相对 Modelfile 或绝对路径
Safetensors 目录仅部分架构(Llama / Mistral / Gemma / Phi3 等,以官方表为准)

GGUF 来自 Hugging Face 时,先核对许可与模板是否匹配,再 FROM。相关概念见 Hugging Face 教程


SYSTEM

写入模板里的系统消息,决定「人设」与硬约束:

SYSTEM """你是资深 Python 审稿人。只评论正确性与可读性,不要重写整文件。"""

API 请求里再传 systemmessages[role=system] 可能覆盖或叠加,取决于模板;定制助手时优先把稳定规则放进 Modelfile,请求里只放任务。


PARAMETER

PARAMETER <名> <值>。常用:

参数作用示例
temperature越高越发散(默认约 0.8)temperature 0.3
num_ctx上下文窗口 token 数num_ctx 8192
num_predict最多生成多少 token(-1 不限制)num_predict 512
top_p / top_k / min_p核采样与候选截断top_p 0.9
seed可复现seed 42
stop停止串,可写多条stop "用户:"
repeat_penalty抑制重复repeat_penalty 1.1

OpenAI 兼容层没有 num_ctx 字段,要靠这里做成新模型。上下文越大越吃显存,见 模型库与量化


MESSAGE、TEMPLATE、其他

MESSAGE user / MESSAGE assistant 写 few-shot,引导语气与格式。TEMPLATE 是 Go 模板,变量包括 {{ .System }}{{ .Prompt }}{{ .Response }}不要轻易改官方模型自带模板,除非你在导入裸 GGUF。

此外:ADAPTER 挂 LoRA;LICENSE 写入许可文本;REQUIRES 指定最低 Ollama 版本(如 0.14.0)。

FROM gemma4
SYSTEM """只输出 JSON,不要 Markdown 围栏。"""
MESSAGE user 首都是哪座城市?国家=法国
MESSAGE assistant {"country":"法国","capital":"巴黎"}

和 API 的关系

ollama create 之后:

curl http://localhost:11434/api/chat -d '{
  "model": "kenhuang-tutor",
  "messages": [{"role": "user", "content": "什么是 Modelfile?"}],
  "stream": false
}'

/v1/chat/completions"model": "kenhuang-tutor" 同样有效。这比每个客户端复制一份 system prompt 更不容易漂移。


实践建议

  • 人设变化就 create 新名字kenhuang-tutor-v2),便于回滚。
  • 不要在 SYSTEM 里塞整本手册;长知识放 RAG,见 EmbeddingsLangChain RAG
  • 温度:事实问答偏低(0.1–0.4),头脑风暴再升高。
  • 完整指令表:Modelfile Reference

编程助手完整文件见 实战案例


下一步

评论