Ollama自定义模型:用Modelfile定制专属大模型
Ollama 自定义模型的核心是编写一个 Modelfile,它相当于模型的“配置说明书”,用来指定基础模型、系统提示词、对话模板和运行参数。
你不需要重新训练模型,只要基于已有模型做配置,就能得到一个行为符合你需求的新模型。
本文适合已经安装 Ollama、想定制专属助手或调整模型输出风格的用户。
先确认环境和基础模型
开始前,请确保 Ollama 已安装并能正常运行。
在终端执行:
ollama --version
ollama list
第一条命令应返回版本号,第二条命令列出本地已有模型。
如果列表为空,先拉取一个基础模型,例如:
ollama pull llama3.2
这里以 llama3.2 为例,你可以换成任何已下载的模型。注意:Modelfile 中的 FROM 必须指向本地已存在的模型名,否则创建时会报错。
编写 Modelfile 的关键字段
新建一个文本文件,命名为 Modelfile,写入以下内容:
FROM llama3.2
SYSTEM "你是一名严谨的服务器运维助手,回答时先给结论,再分步骤说明,不编造命令。"
PARAMETER temperature 0.3
PARAMETER num_ctx 4096
各字段作用如下:
FROM:指定基础模型,必须与ollama list中的名称一致。SYSTEM:系统提示词,决定模型的角色和回答风格。PARAMETER temperature:控制随机性,值越低回答越稳定,建议 0.2 到 0.5。PARAMETER num_ctx:上下文窗口大小,数值越大占用内存越多,按机器配置调整。
如果模型支持对话模板,还可以用 TEMPLATE 字段自定义消息拼接格式,但新手建议先不改,避免格式错误导致输出异常。
创建并运行自定义模型
在 Modelfile 所在目录执行创建命令:
ollama create my-ops-assistant -f ./Modelfile
my-ops-assistant 是你自定义的模型名,可自行替换。
创建成功后,用以下命令验证:
ollama list
ollama run my-ops-assistant
进入对话后输入“你好,请介绍一下你自己”,观察回答是否符合系统提示词设定的风格。
如果回答仍然像原始模型,检查 SYSTEM 字段是否写在了 FROM 之后,以及创建命令是否指向了正确的 Modelfile 路径。
容易踩坑的几个地方
- 模型名写错:
FROM后面的名称必须和ollama list输出完全一致,包括标签。 - 参数值越界:
temperature建议在 0 到 1 之间,过大容易胡言乱语。 - 上下文过大:
num_ctx设置过高可能导致内存不足,表现为运行卡顿或进程退出,先调小再测试。 - 修改后未重建:每次修改 Modelfile 后,都要重新执行
ollama create,否则改动不会生效。 - 系统提示词过长:提示词会占用上下文空间,写得太长会挤压实际对话轮数,建议控制在几百字以内。
验证自定义效果
创建完成后,除了手动对话,还可以用 API 方式快速验证。
启动 Ollama 服务后执行:
curl http://localhost:11434/api/generate -d '{
"model": "my-ops-assistant",
"prompt": "用一句话说明磁盘满了怎么排查",
"stream": false
}'
返回的 JSON 中 response 字段就是模型输出。
如果输出风格与系统提示词一致,说明自定义生效。
若返回 model not found,检查模型名是否拼写正确;
若返回连接失败,确认 Ollama 服务正在运行。
自定义模型不会改变基础模型的知识截止时间,也不能保证回答绝对准确。
它适合统一回答风格、限定角色和调整生成参数;
如果要做知识增强,还需要配合检索或微调方案。
建议先从一个简单的系统提示词开始,验证通过后再逐步增加参数和模板配置。