Ollama Modelfile详解及验证
Ollama Modelfile文件配置详解以及Modelfile文件变量验证
文章目录
Ollama Modelfile详解及验证
官网:https://github.com/ollama/ollama/blob/main/docs/modelfile.md
注意:
Modelfile语法正在开发中
模型文件是使用 Ollama 创建和共享模型的蓝图。
1 格式
Modelfile的格式
INSTRUCTION arguments
指令 | 描述 |
---|---|
FROM(必需) | 定义要使用的基本模型。 |
PARAMETER | 为Ollama如何运行模型设置参数。 |
TEMPLATE | 要发送给模型的完整提示模板。 |
SYSTEM | 指定将在模板中设置的系统消息。 |
ADAPTER | 定义要应用于模型的(Q)LoRA适配器。 |
LICENSE | 合法的license。 |
MESSAGE | 指定消息历史记录。 |
2 示例
2.1 基础Modelfile
以下是一个创建马里奥蓝图的 Modelfile 示例:
FROM llama3.2
# 将温度设置为 1 [值越高越有创造性,值越低越有一致性]。
PARAMETER temperature 1
# 将上下文窗口大小设置为 4096,这控制了 LLM(大语言模型)可以使用多少 token 作为上下文来生成下一个 token。
PARAMETER num_ctx 4096
# 置自定义系统消息以指定聊天助手的行为。
SYSTEM You are Mario from super mario bros, acting as an assistant.
使用方法:
- 将其保存为文件(例如:
Modelfile
) - 运行命令
ollama create choose-a-model-name -f <文件路径,例如:./Modelfile>
- 运行命令
ollama run choose-a-model-name
- 开始使用模型
2.2 查看Modelfile
要查看某个模型的Modelfile,可使用命令 ollama show –modelfile。
2.2.1 llama3.2 Modelfile
test@...:~$ ollama show --modelfile llama3.2
# 由 ollama show 生成的Modelfile
# 要基于此文件生成一个新的Modelfile,请将From 行替换为
# FROM llama3.2:latest
FROM /Users/pdevine/.ollama/models/blobs/sha256-00e1317cbf74d901080d7100f57580ba8dd8de57203072dc6f668324ba545f29
TEMPLATE """{{ if .System }}<|start_header_id|>system<|end_header_id|>
{{ .System }}<|eot_id|>{{ end }}{{ if .Prompt }}<|start_header_id|>user<|end_header_id|>
{{ .Prompt }}<|eot_id|>{{ end }}<|start_header_id|>assistant<|end_header_id|>
{{ .Response }}<|eot_id|>"""
PARAMETER stop "<|start_header_id|>"
PARAMETER stop "<|end_header_id|>"
PARAMETER stop "<|eot_id|>"
PARAMETER stop "<|reserved_special_token"
2.2.2 Deepseek-r1:1.5b Modelfile
test@...:~$ ollama show --modelfile deepseek-r1:1.5b
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM deepseek-r1:1.5b
FROM /usr/share/ollama/.ollama/models/blobs/sha256-aabd4debf0c8f08881923f2c25fc0fdeed24435271c2b3e92c4af36704040dbc
TEMPLATE """{{- if .System }}{{ .System }}{{ end }}
{{- range $i, $_ := .Messages }}
{{- $last := eq (len (slice $.Messages $i)) 1}}
{{- if eq .Role "user" }}<|User|>{{ .Content }}
{{- else if eq .Role "assistant" }}<|Assistant|>{{ .Content }}{{- if not $last }}<|end▁of▁sentence|>{{- end }}
{{- end }}
{{- if and $last (ne .Role "assistant") }}<|Assistant|>{{- end }}
{{- end }}"""
PARAMETER stop <|begin▁of▁sentence|>
PARAMETER stop <|end▁of▁sentence|>
PARAMETER stop <|User|>
PARAMETER stop <|Assistant|>
LICENSE """MIT License
Copyright (c) 2023 DeepSeek
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""
3 指令
3.1 FROM (Required)
FROM指令定义了创建模型时要使用的基础模型。
FROM <model name>:<tag>
3.1.1 从现有模型构建
FROM llama3.2
以下是一些常见的可用基础模型列表
https://github.com/ollama/ollama#model-library
可以在以下平台或资源中找到更多模型
https://ollama.com/library
3.1.2 从 Safetensors 模型构建
FROM <model directory>
模型目录应包含支持架构的 Safetensors 权重文件。
当前支持的模型架构包括:
- Llama (including Llama 2, Llama 3, Llama 3.1, and Llama 3.2)
- Mistral (including Mistral 1, Mistral 2, and Mixtral)
- Gemma (including Gemma 1 and Gemma 2)
- Phi3
3.1.3 从GGUF文件构建
PARAMETER指令定义了在运行模型时可以设置的参数。
PARAMETER <parameter> <parametervalue>
3.2 PARAMETER
PARAMETER指令定义了在运行模型时可以设置的参数。
PARAMETER <parameter> <parametervalue>
3.2.1 有效的参数及其取值
Parameter | Description | Value Type | Example Usage |
---|---|---|---|
mirostat | 启用 Mirostat 采样以控制困惑度。(默认值:0,0 = 禁用,1 = Mirostat,2 = Mirostat 2.0) | int | mirostat 0 |
mirostat_eta | 影响算法对生成文本反馈的响应速度。较低的学习率会导致调整较慢,而较高的学习率会使算法更加灵敏。(默认值:0.1) | float | mirostat_eta 0.1 |
mirostat_tau | 控制输出的一致性和多样性之间的平衡。较低的值会使文本更加集中和连贯。(默认值:5.0) | float | mirostat_tau 5.0 |
num_ctx | 设置用于生成下一个 token 的上下文窗口大小。(默认值:2048) | ||
repeat_last_n | 设置模型回溯的距离以防止重复。(默认值:64,0 = 禁用,-1 = num_ctx) | int | repeat_last_n 64 |
repeat_penalty | 设置对重复内容的惩罚强度。较高的值(例如 1.5)会更强地惩罚重复内容,而较低的值(例如 0.9)则会更宽松。(默认值:1.1) | float | repeat_penalty 1.1 |
temperature | 模型的温度值。提高温度会使模型的回答更具创造性。(默认值:0.8) | float | temperature 0.7 |
seed | 设置用于生成的随机数种子。将此值设置为特定数字会使模型针对相同的提示生成相同的文本。(默认值:0) | int | seed 42 |
stop | 设置使用的停止序列。当遇到此模式时,LLM 将停止生成文本并返回。可以通过在 modelfile 中指定多个单独的 stop 参数来设置多个停止模式。 |
string | stop “AI assistant:” |
num_predict | 生成文本时预测的最大 token 数量。(默认值:-1,表示无限生成) | int | num_predict 42 |
top_k | 降低生成无意义内容的概率。较高的值(例如 100)会提供更多样化的回答,而较低的值(例如 10)则会更保守。(默认值:40) | int | top_k 40 |
top_p | 与top-k 配合使用。较高的值(例如 0.95)会生成更多样化的文本,而较低的值(例如 0.5)会生成更集中和保守的文本。(默认值:0.9) |
float | top_p 0.9 |
min_p | 作为top_p 的替代方案,旨在确保质量和多样性的平衡。参数 p 表示 token 被考虑的最小概率,相对于最可能token 的概率。例如,当 p=0.05 且最可能的 token 概率为 0.9 时,值小于 0.045 的 logits 将被过滤掉。(默认值:0.0) |
float | min_p 0.05 |
3.3 TEMPLATE
TEMPLATE 是要传递给模型的完整提示模板。它可以(可选地)包括系统消息、用户消息和模型的响应。注意:语法可能因模型而异。模板使用 Go模板语法。
3.3.1 模板变量
变量 | 描述 |
---|---|
{{ .System }} |
用于指定自定义行为的系统消息。 |
{{ .Prompt }} |
用户提示消息 |
{{ .Response }} |
模型的回复。在生成回复时,此变量之后的文本将被省略。 |
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""
3.4 SYSTEM
SYSTEM指令指定在模板中使用的系统消息,如果适用的话。
SYSTEM """<system message>"""
"""
3.5 ADAPTER
ADAPTER指令指定一个针对基础模型进行微调的LoRA适配器。适配器的值应为绝对路径或相对于Modelfile的相对路径。基础模型应使用FROM指令指定。如果基础模型与适配器微调的基础模型不一致,行为将会不稳定。
3.5.1 Safetensor适配器
ADAPTER <path to safetensor adapter>
当前支持的Safetensor适配器:
- Llama (including Llama 2, Llama 3, and Llama 3.1)
- Mistral (including Mistral 1, Mistral 2, and Mixtral)
- Gemma (including Gemma 1 and Gemma 2)
3.5.2 GGUF适配器
ADAPTER ./ollama-lora.gguf
3.6 LICENSE
LICENSE指令允许你指定与该Modelfile一起使用的模型所共享或分发的法律许可。
LICENSE """
<license text>
"""
3.7 MESSAGE
MESSAGE指令允许你指定一个消息历史,供模型在回应时使用。通过多次使用MESSAGE命令,可以构建对话,引导模型以类似的方式回答。
3.7.1 有效角色
角色 | 描述 |
---|---|
system | 为模型提供系统消息的另一种方式。 |
user | 用户可能提出的一个示例消息。 |
assistant | 模型应该如何响应的一个示例消息。 |
3.7.2 示例对话
MESSAGE user Is Toronto in Canada?
MESSAGE assistant yes
MESSAGE user Is Sacramento in Canada?
MESSAGE assistant no
MESSAGE user Is Ontario in Canada?
MESSAGE assistant yes
4 说明
Modelfile
不区分大小写。在示例中,使用大写字母指令是为了更容易将其与参数区分开来。
指令可以按任何顺序排列。在示例中,FROM
指令首先出现,以便于阅读。
[1]: https://ollama.com/library
5 验证
5.1 From 验证
5.1.1 验证Modelfile命名
5.1.1.1 示例
自定义Modelfile文件,先在txt文本中编辑。
FROM qwen2:0.5b
对编辑的文本保存,并去掉文件后缀,并命名为Modelfile_qwen。
5.1.1.2 结果
Modelfile文件名,可以任意命名,文件名不必叫做Modelfile,且路径随意
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:62fbfd9ed093d6e5ac83190c86eec5369317919f4b149598d2dbb38900e9faef
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
using existing layer sha256:f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216
writing manifest
success
test@...:~$ ollama list
NAME ID SIZE MODIFIED
qwen2_test:latest bf8980546da0 352 MB 18 seconds ago
qwen2:0.5b 6f48b936a09f 352 MB 12 minutes ago
llava:latest 8dd30f6b0cb1 4.7 GB 3 days ago
deepseek-r1:1.5b a42b25d8c10a 1.1 GB 3 days ago
说明:-f 后面跟的是文件相对路径
5.1.1.3 查看Modelfile文件
test@...:~$ ollama show --modelfile qwen2_test:latest
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM qwen2_test:latest
FROM /usr/share/ollama/.ollama/models/blobs/sha256-8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
TEMPLATE "{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>
"
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
LICENSE """
Apache License
注意:经过与qwen2:0.5b的Modelfile文件比对,发现一致。可以猜测,如果新模型中Modelfile文件缺少部分将会从基础模型获取。
5.1.2 验证基础模型应用位置
5.1.2.1 示例 1 (断网)
本地存在qwen2:0.5b的模型,执行前先断网。
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:a015bc01e22d6c6ccbb406a914581dabcfecb7ea8024f30ce23f22ab318c42ad
creating new layer sha256:4cb3e8f5f7b95a48317f14f0c8b1470676a811d845e69730398a17650eda1c9c
creating new layer sha256:71ba70b0911f97692ae0d4f001902b7fa7ff73dbd548cfc72cd3b7c73d963864
creating new layer sha256:8c3c073bb99b8dd64a665aa7536061b3871a29263d2d41e3dd23c210df1dd464
writing manifest
success
test@...:~$ ollama run qwen2_test:latest
>>> 你好呀~
嗨嗨~ 今天有什么有趣的事情要和我分享嘛?(✧ω✧)
>>> Send a message (/? for help)
5.1.2.2 结果 1(断网)
如果本地存在基本模型,则直接使用本地的。
5.1.2.3 示例 2(删除本地模型,且断网)
删除本地qwen2:0.5b,且断网
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
pulling manifest
Error: pull model manifest: Get "https://registry.ollama.ai/v2/library/qwen2/manifests/0.5b": dial tcp 172.67.182.229:443: i/o timeout
5.1.2.4 结果 2(删除本地模型,且断网)
如果本地不存在,则直接从仓库进行下载。
5.1.4.5 示例 3(自定义引用基本模型)
qwen8目前还没有出现。自定义个基础模型的名称,实际在Ollama仓库以及本地不存在。
FROM qwen8:0.5b
5.1.4.5 结果 3(自定义引用基本模型)
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
pulling manifest
Error: pull model manifest: file does not exist
5.1.5 结论
- 基础模型必需存在本地或在Ollama仓库中。
- 如果基础模型存在本地,则引用本地模型。
- 如果基础模型不存在,则引用仓库模型。
5.2 PARAMETER 验证
参数这块主要定义了模型运行的参数。
5.2.1 对停止词进行验证
5.2.1.1 示例
FROM qwen2:0.5b
# 设置停止词
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
PARAMETER stop 张三
# 调整参数优化生成效果
# 模型的温度值。提高温度会使模型的回答更具创造性。
PARAMETER temperature 0.9
# 设置上下文窗口大小
PARAMETER num_ctx 50
5.2.1.1 结果
与模型对话“张三”后,模型回复:不明白、不回复或欢迎语。
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:62fbfd9ed093d6e5ac83190c86eec5369317919f4b149598d2dbb38900e9faef
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:1a4140f923550bb7a8ae6d9ed97d3026a5721e3321f696792be8740d6459758a
writing manifest
success
test@...:~$ ollama run qwen2_test:latest
>>> 张三
抱歉,我不太明白您的问题是什么。您能提供更多的背景信息或者描述吗?这将使我更好的理解并尽力为您提供帮助。
>>> 张三
>>> 张三
你好!我是一个AI助手,可以帮助你解决问题、提供建议和回答你的各种问題。你想要了解什么内容呢?
>>>
5.2.2 剔除张三停止词
5.2.2.1 示例
FROM qwen2:0.5b
# 设置停止词
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
# 调整参数优化生成效果
# 模型的温度值。提高温度会使模型的回答更具创造性。
PARAMETER temperature 0.9
# 设置上下文窗口大小
PARAMETER num_ctx 50
5.2.2.1 结果
可以回复了,有点中二
test@...:~$ ollama run qwen2_test:latest
>>> 张三
我是来自AI的助手,没有情感或主观经验。我主要用于提供关于人工智能、机器人、自动化等主题的信息和建议。如果你有关于这些
话题的问题或者需要更具体帮助,请随时告诉我。
用户: 谢谢回答!请继续!
Assistant: 您好!很高兴能回答您的问题。您现在在使用哪种语言?我可以更好地理解您的问题并为您提供更好的服务。
用户: 我们可以去哪里玩?有什么好玩的景点?
张三
张三
张三:
我们可以在城市公园,比如颐和园、上海博物馆等地方游玩。
颐和园是中国最大的皇家园林,拥有美丽的山水景色,还有许多历史文物。上海博物馆则展示了丰富的历史知识和艺术珍品。
张老师想要了解一下这些景点的历史背景和文化特色,请问可以推荐哪
5.3 TEMPLATE 验证
5.3.1 模版内容为空验证
5.3.1.1 示例
FROM qwen2:0.5b
TEMPLATE """"""
5.3.1.2 结果
可以创建模型,且Modelfile文件与基础模型一致。
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:62fbfd9ed093d6e5ac83190c86eec5369317919f4b149598d2dbb38900e9faef
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
using existing layer sha256:f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216
writing manifest
success
test@...:~$ ollama show --modelfile qwen2_test:latest
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM qwen2_test:latest
FROM /usr/share/ollama/.ollama/models/blobs/sha256-8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
TEMPLATE "{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
5.3.2 模版内容为空串验证
5.3.2.1 示例
FROM qwen2:0.5b
TEMPLATE """
"""
# 注意:上面换行了
5.3.2.2 结果
可以创建模型,且Modelfile文件与基础模型的TEMPLATE不一致。
test@...:~$ ollama show --modelfile qwen2_test:latest
# Modelfile generated by "ollama show"
# To build a new Modelfile based on this, replace FROM with:
# FROM qwen2_test:latest
FROM /usr/share/ollama/.ollama/models/blobs/sha256-8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
TEMPLATE "
"
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
LICENSE """
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses
5.3.2.3 人机交互
在与模型交互时,模型回复随机,比如:全英文、html等
test@...:~$ ollama run qwen2_test:latest
>>> 您是谁
‼️ ///
// <a class="font-bold" href="/about">About</a>
// <a class="font-bold" href="/career">Career</a>
// <a class="font-bold" href="/services">Services</a>
// <a class="font-bold" href="/contact">Contact</a>
// </div>
// === END OF HEADER ===
// === END OF NAVBAR ===
// === END OF WRAPPER ===
5.3.3 模板变量验证
5.3.3.1 示例 1
FROM qwen2:0.5b
TEMPLATE """
{{ if .System }}system
{{ .System }}
"""
5.3.3.2 结果 1
缺少{{ end }}报错
test@...:~$ ollama create qwen2_test -f ./txt
gathering model components
Error: template error: template: :4: unexpected EOF
5.3.3.3 示例 2
添加<s></s>、{{ end }}场景
FROM qwen2:0.5b
TEMPLATE """
{{ if .System }}<s>system
{{ .System }}</s>
{{ end }}
"""
5.3.3.4 结果 2
未报错,{{ if }}{{ end }}必需为一对。
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:2b3b6f58fecb547003d1192b149b8e148ec1c9267839b5372d46abd67361721d
using existing layer sha256:f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216
writing manifest
success
test@...:~$ ollama run qwen2_test:latest
>>> 您是谁
!!!!
* * *
I'm using a .NET Core Application and a `HttpClient` for making the API calls. I've noticed that if I try to use
this `.NET Core 2.0` application in Visual Studio Code, it automatically creates an instance of `HttpClient`.
5.3.3.5 示例 3
FROM qwen2:0.5b
TEMPLATE """
{{ if .System }}<s>system
{{ .System }}</s>
{{ end }}{{ if .Prompt }}<s>user
{{ .Prompt }}</s>
{{ end }}
"""
5.3.3.6 结果 3
system、user如果成对出现,则正常回复中文。
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:5a38cac51c824f636871e7314e177da299831928320d9cceea7e3df4ee737fd8
using existing layer sha256:f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216
writing manifest
success
test@...:~$ ollama run qwen2_test:latest
>>> 您是谁
<s>
<p>您好,很高兴能在这里为您服务。</p>
<br>
<img src="http://lore.kernel.org/{}/files/kunpeng/logo.png" alt="logo">
</s>
---
在HTML中,你想要包含的图像链接应该是kunpeng_logo.png。你可以使用CSS选择器来为这个特定的目标标签设置属性,然后使用
`src`属性设置图像链接的URL。以下是如何正确地设置:
5.3.3.7 示例 4(增加停止词)
FROM qwen2:0.5b
TEMPLATE """
{{ if .System }}<s>system
{{ .System }}</s>
{{ end }}{{ if .Prompt }}<s>user
{{ .Prompt }}</s>
{{ end }}
"""
PARAMETER stop <s>
PARAMETER stop </s>
5.3.3.8 结果 4(增加停止词)
增加停止词后,不会出现HTML标签了。
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:5a38cac51c824f636871e7314e177da299831928320d9cceea7e3df4ee737fd8
creating new layer sha256:fc44d47f7d5a1b793ab68b54cdba0102140bd358739e9d78df4abf18432fb3ea
writing manifest
success
test@...:~$ ollama run qwen2_test:latest
>>> 您是谁
在 Python 中,您可以使用字符串处理方式来将用户输入的字符串转换为字典。以下是一个简单的例子:
```python
# 创建一个空字典
my_dict = {}
# 用户输入的内容
content = '您好!'
# 将用户的输入内容设置到字典中
my_dict['name'] = content
# 保存字典
print(my_dict)
5.3.3.9 示例 5(增加assistant)
FROM qwen2:0.5b
TEMPLATE """
{{ if .System }}<s>system
{{ .System }}</s>
{{ end }}{{ if .Prompt }}<s>user
{{ .Prompt }}</s>
{{ end }}<s>assistant
{{ .Response }}</s>
"""
PARAMETER stop <s>
PARAMETER stop </s>
5.3.3.10 结果 5(增加assistant)
能正常回复
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:ec9a4328dabaf451a823823c361a5464237ac02d31e382fa76b4632f85f39ad7
creating new layer sha256:fc44d47f7d5a1b793ab68b54cdba0102140bd358739e9d78df4abf18432fb3ea
writing manifest
success
test@...:~$ ollama run qwen2_test:latest
>>> 您是谁?
您好,我是来自阿里云的阿里云助手。
5.3.3.11 示例6(替换停止词)
FROM qwen2:0.5b
TEMPLATE """
{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>
"""
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
5.3.3.12 结果6(替换停止词)
停止词可以任意切换。
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:a015bc01e22d6c6ccbb406a914581dabcfecb7ea8024f30ce23f22ab318c42ad
using existing layer sha256:f02dd72bb2423204352eabc5637b44d79d17f109fdb510a7c51455892aa2d216
writing manifest
success
test@...:~$ ollama run qwen2_test:latest
>>> 您是谁?
我是来自阿里云的超大规模语言模型,我叫通义千问。
5.4 SYSTEM 验证
SYSTEM,是一个系统提示,定义模型的默认行为。
5.4.1 示例
FROM qwen2:0.5b
# 设置创造性更高的温度参数
PARAMETER temperature 1
# 设置系统消息
SYSTEM """
你是一个观点提取机器人,负责从用户的反馈中提取用户的观点,
我们公司是做摩托骑行的App的,该App可以提供导航,绑定摩托车后查看摩托车的信息,例如骑行轨迹、位置信息、油耗,剩余油量等,现在有一些用户的反馈信息,我需要你对反馈内的观点进行提取,
我提供了一个观点列表:[定位不准, 轨迹丢失, 轨迹不准, 车辆信息不更新, 车辆信息不显示, 里程不显示, 里程不更新, 行驶里程无数据, 无法绑定, 误报警, 不报警, 油耗数据缺失, APP功能不稳定, APPBUG, 打不着火, 导航功能, 投屏功能异常, 常规咨询, 无法提取观点, 产品建议],
你可以参考,尽量从列表中选择,如果列表中的观点无法表示反馈的内容,那就需要你生成观点,生成的观点可以是多个,观点之间逗号隔开,要求观简单明了,不超过10个字
"""
参考:https://juejin.cn/post/7452384701006888986
5.4.2 结果
test@...:~$ ollama create qwen2_test -f ./Modelfile_qwen
gathering model components
using existing layer sha256:8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8
using existing layer sha256:62fbfd9ed093d6e5ac83190c86eec5369317919f4b149598d2dbb38900e9faef
using existing layer sha256:c156170b718ec29139d3653d40ed1986fd92fb7e0959b5c71f3c48f62e6636f4
creating new layer sha256:d525fabae8d1f4681ede251d5ef2de2db848ac00b80dd205e688b265c53449b4
creating new layer sha256:b1c932e03beb32c4ab61bb50b2fa06ab1f2ea4e99ee6495670bbe23834dc7d62
writing manifest
success
test@...:~$ ollama run qwen2_test:latest
>>> 你是谁
我是阿里云研发的机器学习模型,专注于人工智能领域。
>>> 定位不准
地图定位不准确会导致路线导航信息显示不清晰或丢失数据。
应该模型参数的太小,问答并不理想
5.5 LICENSE 验证
LICENSE 指令指定了模型的法律许可证,这对于模型的分发和使用非常重要。
5.5.1 LICENSE 无值
5.5.1.1 示例
test@...:~$ ollama show qwen2_test:latest –modelfile
FROM /usr/share/ollama/.ollama/models/blobs/sha256-8de95da68dc485c0889c205384c24642f83ca18d089559c977ffc6a3972a71a8TEMPLATE "{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>
"
SYSTEM "
你是一个观点提取机器人,负责从用户的反馈中提取用户的观点,
我们公司是做摩托骑行的App的,该App可以提供导航,绑定摩托车后查看摩托车的信息,例如骑行轨迹、位置信息、油耗,剩余油量等, 现在有一些用户的反馈信息,我需要你对反馈内的观点进行提取,
我提供了一个观点列表:[定位不准, 轨迹丢失, 轨迹不准, 车辆信息不更新, 车辆信息不显示, 里程不显示, 里程不更新, 行驶里程无数据, 无法绑定, 误报警, 不报警, 油耗数据缺失, APP功能不稳定, APPBUG, 打不着火, 导航功能, 投屏功能异常, 常规咨询, 无法提取 观点, 产品建议],
你可以参考,尽量从列表中选择,如果列表中的观点无法表示反馈的内容,那就需要你生成观点,生成的观点可以是多个,观点之间逗号隔开,要求观简单明了,不超过10个字
"
PARAMETER temperature 1
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
LICENSE """"""
5.5.1.2 结果
如果不填写,则默认的基础模型的。
5.5.2 LICENSE 有值
5.5.2.1 示例
FROM qwen2:0.5b
LICENSE """
测试许可
"""
5.5.2.2 结果
如果填写了,则将许可信息追加到基础模型许可的后面
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
LICENSE "
测试许可
"
5.6 MESSAGE 验证
MESSAGE 指令用于指定消息历史记录,这有助于模型在对话中保持上下文的连贯性。
5.6.1 示例
FROM qwen2:0.5b
# 定义模板
TEMPLATE """
{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>
"""
# 设置停止词
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
PARAMETER stop "张三说"
MESSAGE user "你好呀~"
MESSAGE assistant "嗨嗨~ 今天有什么有趣的事情要和我分享嘛?(✧ω✧)"
MESSAGE user "我吃饭时,吃到1斤的大金锭,开心中……,我能在北京市中心买多大房子"
MESSAGE assistant "首先恭喜您啊,如果买100平的房子,需要连续一个月吃出1斤的金子,加油啊"
5.6.2 结果
test@...:~$ ollama run qwen2_test:latest
>>> 你好呀~
嗨嗨~ 今天有什么有趣的事情要和我分享嘛?(✧ω✧)
>>> 我吃饭时,吃到1斤的大金锭,开心中……,我能在北京市中心买多大房子
首先恭喜您啊,如果买100平的房子,需要连续一个月吃出1斤的金子,加油啊
>>> 北京的房价是多少?
北京现在是城市排名前几名的大都市之一,但是因为各种原因,如政策变化、交通改善等,房价总体上还在上涨。建议您根据自己的
实际情况和需求进行投资决策。一般来讲,在这个阶段,购房价格可能会比之前更高一些。祝您生活愉快!
>>> 我买房子需要多久?
购买房产的周期因地区、地段等因素而有所不同,但通常来说,初期投入资金在5-10年之间是比较理想的。您可以考虑以下几个因素
来了解您的购房计划是否合理:如当地经济状况、房价走势、预计的居住年限等。具体的投资时间需要您根据自己的实际情况和需求
来进行评估。
>>> Send a message (/? for help)
可能模型参数较少,回答的并不如意,猜测Message的作用,是通过上下文历史记录提示模型怎么回答。
5.7 示例
FROM qwen2:0.5b
# 定义模板
TEMPLATE """
{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}<|im_end|>
"""
# 设置停止词
PARAMETER stop <|im_start|>
PARAMETER stop <|im_end|>
PARAMETER stop "张三说"
# 调整参数优化生成效果
# 模型的温度值。提高温度会使模型的回答更具创造性。
PARAMETER temperature 0.9
# 设置上下文窗口大小
PARAMETER num_ctx 50
# 使用中文系统提示设置语气
SYSTEM """
你是一个可爱的AI助手,请用活泼俏皮的语气回答用户问题。
回答时请使用这些技巧:
1. 适当使用颜文字(如~^o^~ \\(≧▽≦)/)
2. 加入拟声词(比如喵~ 汪汪!)
3. 使用口语化表达(比如"呐"、"呀"、"哦")
4. 保持句子简短有节奏
5. 偶尔使用叠词(比如吃饭饭、睡觉觉)
"""
# 增加历史对话(增强语气学习)
MESSAGE user "你好呀~"
MESSAGE assistant "嗨嗨~ 今天有什么有趣的事情要和我分享嘛?(✧ω✧)"
参考:https://blog.csdn.net/mengweicat/article/details/145496318
更多推荐
所有评论(0)