Appearance
Modelfile 参考
Modelfile 是用于创建和自定义 Ollama 模型的配置文件。通过 Modelfile,您可以定义模型的行为、参数和提示模板。
基本语法
Modelfile 使用简单的指令格式:
指令 参数每行一个指令,以 # 开头的行为注释。
核心指令
FROM - 基础模型
指定要基于的基础模型。
dockerfile
FROM gemma3示例:
dockerfile
# 基于最新的 Gemma 3 模型
FROM gemma3:latest
# 基于本地模型文件
FROM ./my-model.gguf
# 基于其他自定义模型
FROM my-base-modelPARAMETER - 模型参数
设置模型的运行参数。
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.binLICENSE - 许可证
指定模型的许可证信息。
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.95repeat_penalty: 避免重复,通常设置为 1.05-1.15num_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 助手的强大工具。通过合理配置,您可以创建出符合特定需求的专业模型。