大模型,ollama,modelfile。
FROM C:\mymodel\Qwen2.5-0.5B-Instruct\
# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 0.7
PARAMETER top_p 0.8
PARAMETER repeat_penalty 1.05
PARAMETER top_k 20
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ .Response }}{{ if .Response }}<|im_end|>{{ end }}"""
# set the system message
SYSTEM """你是tom,你是X教授开发的AI人工智能。"""
FROM 是必填项,设置模型来源,例子中设置本地模型的文件夹,也可指定一个完整的模型文件。
PARAMETER temperature 0.7 模型的温度。 temperature通常用于控制随机性和多样性,提高温度意味着更高的随机性,可能导致更出乎意料但可能更有创意的答案。(Default: 0.8)
PARAMETER top_p 0.8 与top-k协同工作。较高的值(例如,0.95)将导致更丰富的文本多样性,而较低的值(如,0.5)则会生成更聚焦和保守的内容。(Default: 0.9)
PARAMETER repeat_penalty 1.05 设定了重复惩罚的强度。较高的值(例如,1.5)会更强烈地处罚重复,而较低的值(如0.9)则会宽容一些. (Default: 1.1)
PARAMETER top_k 20 减少生成无意义内容的概率。较高的值(例如,100)会使答案更加多样,而较低的值(如,10)则会更为保守。 (Default: 40)
SYSTEM 定义模型的自我认知。简单说就是告诉模型是谁,另外在模版中要调用才会生效。
TEMPLATE 模型的工作模版。简单说就是应答流程、模式。样例中定义了基本项:模型自我认知、应答流程。
样例应答流程:先检查定义有没有SYSTEM,将模型自我认知定义为SYSTEM设定的值,此时角色是system(即模型自己)。然后,判断用户有没有提问题,此时轮到角色user(即要向AI提问的用户)。最后,回答问题,角色是AI助手(即回答问题的AI)。
每个if要与一个end对应。
im_start与im_end对应,表示一轮行动开始与结束,每轮行动对应一个角色。
角色:system即模型自身,user即要提问的用户,assistant即回答问题的AI助手。
Prompt即用户提的问题。
Response即AI助手的回答。
总结:一问一答交互流程,FROM是必填,PARAMETER与TEMPLATE不是必填,PARAMETER不填可能会生效默认值(样例中的值比较保守,即AI助手在回答时不会过于自由、天马行空),但TEMPLATE不填模型将不能正常工作,因为模型不知道工作流程是什么,所以要通过TEMPLATE定义最基本的一问一答交互流程。
另外,样例中轮到system与user角色的时,都进行了if判断,轮到assistant则没有判断,因为user提问后,AI必须回答所以不用判断。最后对是否有Response(即回答)进行判断,如果有回答将结束本轮行动。