Skip to content

Modelfile 参考

Modelfile 是用于创建和自定义 Ollama 模型的配置文件。通过 Modelfile,您可以定义模型的行为、参数和提示模板。

基本语法

Modelfile 使用简单的指令格式:

指令 参数

每行一个指令,以 # 开头的行为注释。

核心指令

FROM - 基础模型

指定要基于的基础模型。

dockerfile
FROM gemma3

示例:

dockerfile
# 基于最新的 Gemma 3 模型
FROM gemma3:latest

# 基于本地模型文件
FROM ./my-model.gguf

# 基于其他自定义模型
FROM my-base-model

PARAMETER - 模型参数

设置模型的运行参数。

dockerfile
PARAMETER <参数名> <值>

常用参数:

dockerfile
# 温度参数 (0.0-2.0)
PARAMETER temperature 0.7

# Top-p 采样 (0.0-1.0)
PARAMETER top_p 0.9

# Top-k 采样
PARAMETER top_k 40

# 重复惩罚
PARAMETER repeat_penalty 1.1

# 上下文长度
PARAMETER num_ctx 4096

# 停止词
PARAMETER stop "<|im_end|>"
PARAMETER stop "用户:"

TEMPLATE - 提示模板

定义模型的提示格式模板。

dockerfile
TEMPLATE """ if .System  .System 
 end  if .Prompt 用户:  .Prompt 
助手:  end """

模板变量:

  • .System: 系统提示
  • .Prompt: 用户输入
  • .Response: 模型响应(在某些上下文中)

SYSTEM - 系统提示

设置模型的系统级指令。

dockerfile
SYSTEM """你是一个专业的编程助手,专门帮助用户解决编程问题。
请用简洁明了的语言回答问题,并提供可运行的代码示例。"""

MESSAGE - 预设对话

添加预设的对话示例。

dockerfile
MESSAGE user "你好"
MESSAGE assistant "你好!我是您的编程助手,有什么可以帮助您的吗?"

ADAPTER - 适配器

加载 LoRA 适配器来微调模型。

dockerfile
ADAPTER ./my-adapter.bin

LICENSE - 许可证

指定模型的许可证信息。

dockerfile
LICENSE """
MIT License

Copyright (c) 2024 Your Name

Permission is hereby granted...
"""

完整示例

编程助手模型

dockerfile
# 基于 Gemma 3 创建编程助手
FROM gemma3

# 设置系统提示
SYSTEM """你是一个专业的编程助手,名叫 CodeHelper。你的职责是:
1. 帮助用户解决编程问题
2. 提供清晰的代码示例
3. 解释编程概念
4. 推荐最佳实践

请用简洁明了的语言回答,并确保代码示例可以直接运行。"""

# 设置参数
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.1
PARAMETER num_ctx 8192

# 设置停止词
PARAMETER stop "用户:"
PARAMETER stop "User:"

# 设置提示模板
TEMPLATE """ if .System  .System 

 end 用户:  .Prompt 

助手: """

# 添加示例对话
MESSAGE user "如何用 Python 读取文件?"
MESSAGE assistant "在 Python 中读取文件有几种方法,最常用的是使用 `open()` 函数:

```python
# 方法1:基本读取
with open('filename.txt', 'r', encoding='utf-8') as file:
    content = file.read()
    print(content)

# 方法2:逐行读取
with open('filename.txt', 'r', encoding='utf-8') as file:
    for line in file:
        print(line.strip())

使用 with 语句可以确保文件在使用后自动关闭。"


### 中文对话模型

```dockerfile
# 基于 Qwen 3 创建中文对话模型
FROM qwen3

# 中文对话系统提示
SYSTEM """你是一个友善的中文对话助手。请用自然、流畅的中文与用户交流。
特点:
- 回答简洁明了
- 语言亲切友好
- 适当使用表情符号
- 了解中文文化背景"""

# 优化中文生成的参数
PARAMETER temperature 0.8
PARAMETER top_p 0.95
PARAMETER repeat_penalty 1.05
PARAMETER num_ctx 4096

# 中文提示模板
TEMPLATE """ if .System  .System 

 end  if .Prompt 用户: .Prompt 

助手: end """

# 中文对话示例
MESSAGE user "你好!"
MESSAGE assistant "你好!😊 很高兴见到你!有什么我可以帮助你的吗?"

MESSAGE user "今天天气怎么样?"
MESSAGE assistant "我无法获取实时天气信息,建议你查看天气预报应用或网站。不过,希望你今天有个好心情!☀️"

专业翻译模型

dockerfile
# 基于 Gemma 3 创建翻译模型
FROM gemma3

SYSTEM """你是一个专业的翻译助手,专门负责中英文互译。
翻译原则:
1. 准确传达原文意思
2. 保持语言自然流畅
3. 考虑文化背景差异
4. 专业术语要准确

请直接提供翻译结果,无需额外解释。"""

PARAMETER temperature 0.2
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.0

TEMPLATE """ .System 

原文: .Prompt 

译文:"""

MESSAGE user "Hello, how are you today?"
MESSAGE assistant "你好,你今天怎么样?"

MESSAGE user "人工智能正在改变我们的生活方式。"
MESSAGE assistant "Artificial intelligence is changing our way of life."

高级功能

条件模板

使用条件语句创建动态模板:

dockerfile
TEMPLATE """ if .System 系统: .System 
 end  if .Prompt  if eq .Role "user" 用户 else 助手 end : .Prompt 
 end """

多轮对话模板

dockerfile
TEMPLATE """ range .Messages  if eq .Role "system" 系统: .Content 
 else if eq .Role "user" 用户: .Content 
 else 助手: .Content 
 end  end 用户: .Prompt 
助手:"""

函数调用模板

dockerfile
TEMPLATE """ if .System  .System 
 end  if .Tools 可用工具:
 range .Tools  .Name :  .Description 
 end  end 用户: .Prompt 
助手:"""

创建和使用模型

创建模型

bash
# 从 Modelfile 创建模型
ollama create my-model -f ./Modelfile

# 创建带标签的模型
ollama create my-model:v1.0 -f ./Modelfile

测试模型

bash
# 运行自定义模型
ollama run my-model

# 测试特定提示
ollama run my-model "测试提示"

分享模型

bash
# 上传到 Ollama 库
ollama push my-model

# 导出模型文件
ollama show my-model --modelfile > my-model.Modelfile

最佳实践

1. 系统提示设计

  • 明确定义模型的角色和职责
  • 提供具体的行为指导
  • 包含输出格式要求
  • 考虑安全和伦理约束

2. 参数调优

  • temperature: 创造性任务用高值(0.7-1.0),精确任务用低值(0.1-0.3)
  • top_p: 通常设置为 0.9-0.95
  • repeat_penalty: 避免重复,通常设置为 1.05-1.15
  • num_ctx: 根据任务需要设置上下文长度

3. 模板设计

  • 保持格式一致性
  • 使用清晰的角色标识
  • 考虑多轮对话的连贯性
  • 测试各种输入场景

4. 版本管理

dockerfile
# 在 Modelfile 中记录版本信息
# Version: 1.2.0
# Created: 2024-01-15
# Description: 编程助手模型,增加了代码审查功能

FROM gemma3

故障排除

常见问题

问题: 模型创建失败

Error: invalid Modelfile

解决方案: 检查 Modelfile 语法,确保指令格式正确

问题: 模板渲染错误

Error: template parse error

解决方案: 检查模板语法,确保变量名正确

问题: 参数无效

Error: invalid parameter

解决方案: 查看参数名称和值范围是否正确

调试技巧

bash
# 查看模型详细信息
ollama show my-model

# 导出 Modelfile 进行检查
ollama show my-model --modelfile

# 测试模板渲染
ollama run my-model --verbose

更多资源


Modelfile 是创建个性化 AI 助手的强大工具。通过合理配置,您可以创建出符合特定需求的专业模型。

让大语言模型触手可及 - Get up and running with large language models