如果你想用 Ollama 做一个属于自己的专属模型——比如让模型说话像马里奥、让回答更严谨、甚至自定义模型的运行速度,那 Modelfile 就是你必须掌握的“核心工具”。
很多新手一看到“配置文件”“指令”就头疼,其实完全不用怕!今天咱们就用“做菜”的思路,手把手教你玩转 Modelfile,全程不搞复杂术语,只讲实用操作,看完就能上手做自己的第一个自定义模型。
一、先搞懂:Modelfile 到底是什么?
咱们把“构建自定义模型”比作“做一道特色菜”,那 Modelfile 就相当于这道菜的「食谱」——上面写清楚了“用什么食材(基础模型)”“放多少调料(运行参数)”“按什么步骤做(提示词模板)”,跟着食谱来,就能做出一模一样的“特色菜”(自定义模型)。
简单说,Modelfile 是 Ollama 专属的“模型配置文件”,不用写复杂代码,只要按照固定格式,填写几个简单指令,就能轻松制作、分享自己的自定义模型,哪怕是零基础新手,也能快速上手。
二、基础格式:一看就会,不用死记硬背
Modelfile 的格式特别简单,就两种核心内容,跟写便签一样容易:
注释:用
#开头,相当于“食谱里的备注”,用来写说明,Ollama 会自动忽略,方便自己或别人看懂配置;指令:格式是「指令 + 入参」,相当于“食谱里的步骤”,告诉 Ollama 该怎么做。
举个最直观的例子,就像这样:
# 这是注释,用来说明下面的指令是做什么的(比如:选基础模型)
FROM llama3.2
# 注释:设置模型的创造性(温度系数)
PARAMETER temperature 1
这里给大家整理了所有常用指令的“一句话备注”,新手先混个脸熟,后面逐个拆解:
| 指令 | 一句话看懂(类比做菜) |
|---|---|
| FROM(必选) | 选“基础食材”,确定模型基于什么基础模型构建 |
| PARAMETER | 调“烹饪火候”,配置模型的运行参数(比如创造性、记忆长度) |
| TEMPLATE | 定“做菜步骤”,设置模型接收、回复消息的固定格式 |
| SYSTEM | 给“厨师定规矩”,定义模型的说话风格、角色 |
| ADAPTER | 加“特色调料”,给基础模型加微调效果(轻量优化) |
| LICENSE | 写“食材说明书”,明确模型的使用权限、版权 |
| MESSAGE | 给“厨师看示例”,用对话例子引导模型的回答逻辑 |
| REQUIRES | 定“厨具要求”,指定运行模型需要的 Ollama 最低版本 |
重点提醒:指令不区分大小写(比如 FROM 可以写成 from),大写只是为了看得更清楚;指令顺序也随便排,不用严格按照上面的表格来,怎么顺手怎么写。
三、核心指令拆解:手把手教你用,避开所有坑
这部分是重点,每个指令都讲“怎么用、用在哪、举个实操例子”,新手跟着练一遍,就能熟练掌握,不用死记硬背。
1. FROM(必选):选对基础模型,成功一半
FROM 是唯一一个“必须写”的指令,相当于做菜必须选“基础食材”——没有基础模型,后面所有配置都没用。它有3种常用用法,新手先掌握第一种就够了。
用法1:基于 Ollama 现有模型构建(新手首选)
Ollama 本身有很多现成的基础模型(比如 llama3.2、mistral),咱们直接拿来用,不用自己下载复杂的权重文件,特别方便。
格式:FROM 模型名
例子:
# 用 Ollama 现成的 llama3.2 作为基础模型(最常用)
FROM llama3.2
# 也可以用其他现成模型,比如 mistral、gemma2
# FROM mistral
# FROM gemma2
小贴士:不知道有哪些现成模型?可以去 Ollama 官方模型库(https://ollama.com/library)看看,里面有上百种免费可用的基础模型。
用法2:基于本地 Safetensors 模型构建(进阶)
如果自己下载了 Safetensors 格式的模型权重文件(比如从网上找的自定义模型权重),就用这种方式,直接指定权重文件所在的文件夹路径就行。
格式:FROM 模型文件夹路径
例子:
# 我的 Safetensors 模型在当前文件夹的 model 文件夹里
FROM ./model
注意:目前只支持 Llama、Mistral、Gemma、Phi3 这几种架构的 Safetensors 模型,其他架构会报错。
用法3:基于本地 GGUF 文件构建(进阶)
GGUF 是另一种常见的模型文件格式,用法和 Safetensors 类似,直接指定文件路径即可,支持绝对路径(比如 C:/model.gguf)和相对路径(比如 ./model.gguf)。
格式:FROM GGUF文件路径
例子:
# 我的 GGUF 模型文件在当前文件夹,名字叫 my-model.gguf
FROM ./my-model.gguf
2. PARAMETER:调参不用慌,新手记住这几个就够
PARAMETER 是用来“微调模型运行效果”的指令,相当于做菜时“调火候、放调料的量”——不用记所有参数,新手掌握5个最常用的,就能满足90%的需求。
格式:PARAMETER 参数名 参数值
逐个拆解常用参数,通俗好懂,不搞专业术语:
(1)temperature:控制模型的“创造性”(最常用)
这个参数最常用,数值越高,模型回答越有创造性、越随机(像放飞自我);数值越低,回答越严谨、越固定(不跑偏)。
默认值:0.8(适中)
新手参考:
想让模型自由发挥(比如写文案、编故事):设为 1.0~1.2
想让模型严谨准确(比如查资料、算题目):设为 0.5~0.7
例子:
# 让模型更有创造性,适合写文案
PARAMETER temperature 1.1
(2)num_ctx:控制模型的“记忆长度”
相当于模型“能记住的前文长度”,数值越大,模型能记住的对话内容、提示词越多,比如长对话、长文档处理,就需要调大这个参数。
默认值:2048(足够日常短对话)
新手参考:处理长文本(比如写论文、分析长文档),设为 4096;日常聊天不用改。
例子:
# 增加模型记忆长度,能处理更长的对话和文本
PARAMETER num_ctx 4096
(3)seed:控制模型回答的“重复性”
随机种子,指定一个固定数值(比如 42、10086),那么相同的提示词,模型会生成完全一样的回答,适合做实验、复现结果。
默认值:0(随机,每次回答都不一样)
例子:
# 固定随机种子,相同提示词生成相同回答(方便测试)
PARAMETER seed 42
(4)stop:让模型“到点就停”
设置“终止序列”,当模型生成的内容中出现这个字符串时,就会立即停止生成,避免模型说废话、跑题。可以多次设置,实现多个终止条件。
例子:
# 当模型生成“结束”两个字时,立即停止
PARAMETER stop "结束"
# 再增加一个终止条件,生成“谢谢”也停止
PARAMETER stop "谢谢"
(5)num_predict:控制模型的“最大回答长度”
设置模型最多能生成多少个文字片段(词元),默认值是 -1(无限制),如果不想让模型回答太长,可以设一个固定数值。
例子:
# 让模型最多生成 500 个词元,避免回答过长
PARAMETER num_predict 500
3. SYSTEM:给模型“定规矩”,让它按你的风格说话
SYSTEM 指令用来定义模型的“角色和说话风格”,相当于给厨师定规矩——比如“你要扮演马里奥,说话活泼,带点意大利口音”“你要扮演老师,说话严谨,耐心讲解”,模型会严格按照这个要求来回答。
格式:SYSTEM "系统消息内容"(支持多行文本,用三个双引号包裹)
新手必看:这个指令特别实用,不用复杂配置,只要写清楚你的要求,模型就能精准配合。
例子1:让模型扮演马里奥
# 让模型扮演超级马里奥,说话活泼,带点口语化,常用“wahoo”
SYSTEM """You are Mario from super mario bros, acting as an assistant.
You are lively and talkative, often say "wahoo", and use simple, casual language."""
例子2:让模型扮演严谨的知识博主
# 扮演知识博主,回答严谨,分点清晰,不用网络流行语,适合新手理解
SYSTEM """你是一名专业的知识博主,专注于讲解 Ollama 使用技巧。
回答时要严谨准确,分点清晰,语言通俗,避开复杂术语,让零基础新手也能看懂,不使用网络流行语。"""
4. TEMPLATE:给模型“定格式”,规范消息收发
TEMPLATE 用来设置模型“接收用户消息、生成回复”的固定格式,相当于给厨师定“上菜流程”——比如“用户说话前要加【用户】,模型回复前要加【助手】”,让消息格式更规范。
新手提醒:模板用的是简单的变量替换,不用懂代码,记住3个核心变量就行:
{ { .System }}:对应 SYSTEM 指令里的“规矩”,自动填充系统消息;
{ { .Prompt }}:自动填充用户的提问内容;
{ { .Response }}:自动填充模型的回复内容(生成时会忽略这个变量后面的内容)。
最常用的模板示例(直接复制就能用):
# 规范消息格式:先显示系统消息,再显示用户提问,最后模型回复
TEMPLATE """{
{ if .System }}【系统提示】
{
{ .System }}
{
{ end }}{
{ if .Prompt }}【用户提问】
{
{ .Prompt }}
{
{ end }}【助手回复】
"""
效果:当你提问“什么是 Modelfile”时,模型会按照这个格式回复,清晰又规范。
5. MESSAGE:给模型“看例子”,引导它的回答逻辑
如果觉得 SYSTEM 指令不够具体,想让模型更精准地配合你的需求,就用 MESSAGE 指令——相当于给厨师看“示例菜”,告诉它“用户问这个问题,你要这么答”,模型会学习示例的回答逻辑和风格。
格式:MESSAGE 角色 消息内容,支持3种角色,新手重点掌握 user(用户示例)和 assistant(模型示例)。
例子:让模型学会判断“某个城市是否在加拿大”
# 示例1:用户问多伦多是否在加拿大,模型回答“是”
MESSAGE user 多伦多在加拿大吗?
MESSAGE assistant 是,多伦多是加拿大安大略省的省会城市。
# 示例2:用户问萨克拉门托是否在加拿大,模型回答“否”
MESSAGE user 萨克拉门托在加拿大吗?
MESSAGE assistant 否,萨克拉门托是美国加利福尼亚州的首府,不在加拿大。
# 示例3:用户问安大略省是否在加拿大,模型回答“是”
MESSAGE user 安大略省在加拿大吗?
MESSAGE assistant 是,安大略省是加拿大人口最多的省份,多伦多就在该省境内。
小贴士:示例越多,模型学得越精准,日常使用中,只要添加3~5个典型示例,就能达到很好的效果。
6. 其他常用指令(新手了解即可,进阶再深入)
剩下的几个指令,新手暂时用不上,简单了解一下,后续有进阶需求再深入学习:
ADAPTER:给基础模型加“微调适配器”,相当于给菜加“特色调料”,不用重新训练模型,就能优化模型效果,适合有微调需求的用户;
LICENSE:填写模型的使用许可证,明确版权和使用权限,适合想分享自己模型的用户;
REQUIRES:指定运行模型需要的 Ollama 最低版本,避免因版本太低导致功能无法使用,比如
REQUIRES 0.14.0。
四、实操演示:手把手做一个自定义模型(新手必练)
看完上面的指令,咱们来做一个实操练习——制作一个“马里奥对话模型”,跟着步骤来,全程不踩坑,做完就能直接用!
步骤1:编写 Modelfile
新建一个文本文件,名字改成“Modelfile”(不用加后缀),复制下面的内容,粘贴进去(每一行都有注释,看不懂的可以看注释):
# 步骤1:选基础模型,用 Ollama 现成的 llama3.2(新手首选)
FROM llama3.2
# 步骤2:配置参数,让模型更有创造性,记忆更长
PARAMETER temperature 1.0 # 创造性适中,贴合马里奥的活泼风格
PARAMETER num_ctx 4096 # 增加记忆长度,支持长对话
PARAMETER seed 10086 # 固定种子,方便复现效果
# 步骤3:给模型定规矩,扮演马里奥
SYSTEM """You are Mario from super mario bros, acting as a friendly assistant.
Your tone is lively and casual, often use the word "wahoo" when you are happy.
You can speak Chinese, and your words are simple and interesting, just like talking to a good friend."""
# 步骤4:设置消息格式,更规范
TEMPLATE """{
{ if .System }}【马里奥提示】
{
{ .System }}
{
{ end }}{
{ if .Prompt }}【你问】
{
{ .Prompt }}
{
{ end }}【马里奥回复】
"""
# 步骤5:给模型加示例,引导它的回答风格
MESSAGE user 你是谁呀?
MESSAGE assistant Wahoo!我是超级马里奥呀!来自超级马里奥兄弟的世界,很高兴认识你~
MESSAGE user 今天天气真好,我们去冒险吧!
MESSAGE assistant Wahoo!太好啦太好啦!我们一起去救桃子公主,路上还要收集金币哦,冲呀!
步骤2:用 Modelfile 构建模型
打开终端(Windows 用 CMD 或 PowerShell,Mac 用终端),进入 Modelfile 所在的文件夹(比如你的文件在桌面,就输入 cd 桌面),然后执行下面的命令:
ollama create mario-chat -f ./Modelfile
解释一下:
mario-chat:是你自定义的模型名,随便起(比如 mario、mario-assistant 都可以);
-f ./Modelfile:指定 Modelfile 的路径(如果文件在当前文件夹,就用 ./Modelfile)。
执行命令后,等待几秒,模型就构建完成了,终端会提示“success”。
步骤3:运行自定义模型,开始对话
在终端输入下面的命令,启动咱们刚做的马里奥模型:
ollama run mario-chat
启动后,就可以和马里奥聊天啦!比如你输入“我们去收集金币吧”,模型会用马里奥的语气回复你,还会说“wahoo”,特别有趣~
步骤4:查看、修改模型(新手补充)
如果想查看自己做的模型的 Modelfile 配置,执行下面的命令:
ollama show --modelfile mario-chat
如果想修改模型(比如调整 temperature 参数、修改马里奥的说话风格),直接编辑 Modelfile,然后重新执行“构建模型”的命令,就能覆盖原来的模型。
五、新手避坑指南:这3个错误千万别犯
很多新手第一次用 Modelfile,会踩一些低级错误,这里整理了3个最常见的坑,提前避开,节省时间:
忘记写 FROM 指令:这是最常见的错误!FROM 是必选指令,没有它,模型无法构建,一定要先写 FROM,再写其他指令;
参数值写错格式:比如 temperature 是浮点数(可以写 1.0、0.8),num_ctx 是整数(只能写 4096、2048),不能写“temperature 1.0.0”“num_ctx 4096.5”,否则会报错;
路径写错(进阶用户):用 Safetensors、GGUF 文件或 ADAPTER 时,路径一定要写对,相对路径是“相对于 Modelfile 所在的文件夹”,绝对路径要写完整(比如 C:/Users/xxx/Desktop/model.gguf)。