如果你在本地用 Ollama 跑模型,经常要重复输入“你是一个翻译助手,只输出译文”之类的设定,可以用 Modelfile 把系统提示词和参数固定下来,创建一个自己的模型变体,之后直接 ollama run 这个名字即可。

Modelfile 是什么

Modelfile 是 Ollama 用来定义模型的配置文件,类似 Dockerfile。常用指令:

  • FROM:基于哪个已下载的模型
  • SYSTEM:系统提示词
  • PARAMETER:生成参数,如 temperature、num_ctx(上下文长度)
  • TEMPLATE:提示模板(一般不需要改)

第一步:确认基础模型已下载

ollama list

如果没有,先拉取一个你想用的模型,例如:

ollama pull llama3.2

第二步:编写 Modelfile

新建一个名为 Modelfile 的文本文件:

FROM llama3.2

PARAMETER temperature 0.3
PARAMETER num_ctx 4096

SYSTEM """
你是中英翻译助手。
规则:
- 用户输入中文就翻译成英文,输入英文就翻译成中文
- 只输出译文,不解释
- 专有名词保留原文
"""

低温度让翻译结果更稳定;num_ctx 根据你的内存情况设置,越大越占内存。

第三步:创建并运行

ollama create translator -f Modelfile
ollama run translator

之后每次 ollama run translator 都会自动带上这些设定。用 API 调用时,把模型名写成 translator 即可。

查看和修改

查看某个模型当前的 Modelfile:

ollama show translator --modelfile

修改后重新执行 ollama create 同名覆盖即可。创建变体不会重复复制基础模型的权重文件,占用空间很小。

常用模板

会议纪要整理:

FROM llama3.2
PARAMETER temperature 0.2
SYSTEM """把用户提供的会议记录整理为:结论、待办(负责人+截止时间)、未决问题。不要添加记录中没有的信息。"""

代码解释助手:

FROM qwen2.5-coder
PARAMETER temperature 0.2
SYSTEM """用中文逐段解释用户提供的代码,指出潜在问题,但不要重写全部代码。"""

基础模型名请换成你本地实际下载的模型。

排错

  • ollama create 报错找不到模型:FROM 后的名字要与 ollama list 中完全一致,包括标签。
  • 系统提示词似乎没生效:确认运行的是新模型名而不是基础模型;小模型对复杂指令的遵循能力有限,规则尽量简短明确。
  • 内存不足:调小 num_ctx,或换更小的量化版本。

延伸阅读:Ollama 本地大模型入门、本地模型量化格式 FAQ,以及 Ollama 本地部署指南。