Modelfile 定制
Modelfile 是 Ollama 的「模型蓝图」:在已有权重上固定系统提示、采样参数、上下文长度,甚至少量示例对话,然后 ollama create 成一个新的本地名字。之后 CLI、API、OpenAI 兼容层都用这个新名字,而不必每次请求都传一长段 system。
指令不区分大小写;文档里习惯写成大写以便阅读。顺序不限,通常把 FROM 放在最上面。
最小例子
保存为 Modelfile(无扩展名也可),在该目录执行:
官方 CLI 也可以不写名字、只 ollama create -f Modelfile(名称规则以当前 CLI 帮助为准)。查看某个已有模型展开后的文件:
你会看到内部 FROM 指向 blob 哈希,以及模型自带的 TEMPLATE / stop。二次定制时,把 FROM 改成人类可读的模型名(如 FROM gemma4:latest),不要复制那一长串路径,除非你真的要钉死某个 blob。
FROM(必需)
GGUF 来自 Hugging Face 时,先核对许可与模板是否匹配,再 FROM。相关概念见 Hugging Face 教程。
SYSTEM
写入模板里的系统消息,决定「人设」与硬约束:
API 请求里再传 system 或 messages[role=system] 可能覆盖或叠加,取决于模板;定制助手时优先把稳定规则放进 Modelfile,请求里只放任务。
PARAMETER
PARAMETER <名> <值>。常用:
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)。
和 API 的关系
ollama create 之后:
/v1/chat/completions 的 "model": "kenhuang-tutor" 同样有效。这比每个客户端复制一份 system prompt 更不容易漂移。
实践建议
- 人设变化就 create 新名字(
kenhuang-tutor-v2),便于回滚。 - 不要在 SYSTEM 里塞整本手册;长知识放 RAG,见 Embeddings 与 LangChain RAG。
- 温度:事实问答偏低(0.1–0.4),头脑风暴再升高。
- 完整指令表:Modelfile Reference。
编程助手完整文件见 实战案例。