gguf如何组装才能在ollama中可以启用上网功能
·
1.背景和问题
huggingface上下载的gguf一般不能直接被ollama启动,需要编写Modelfile文件,再由ollama组装后,ollama才能启动这样的大模型。当然ollama本身就可以直接一键下载并启动大模型。
以qwen3.5为例,ollama一键下载的,在ollama的GUI界面几乎都有个“上网按钮”。但是我自行下载的gguf,加手写的Modelfile,组装后,ollama处就没有“上网按钮”。
2.解法
Modelfile参考下文编写即可
FROM ./Qwen3.5-9B-IQ4_XS.gguf
# 增强型模板,加入了 [AVAILABLE_TOOLS] 和 [TOOL_CALLS] 逻辑
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}{{ end }}{{ if .Tools }}
# Tools
You may call one or more functions to assist with the user query.
You are provided with function signatures within <tools></tools> XML tags:
<tools>
{{ range .Tools }}
{{ . }}
{{ end }}
</tools>
For each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:
<tool_call>
{"name": <function-name>, "arguments": <args-json-object>}
</tool_call>{{ end }}<|im_end|>
{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
{{ if .Messages }}
{{- range $index, $_ := .Messages }}
{{- if eq .Role "assistant" -}}
<|im_start|>assistant
{{ if .Content }}{{ .Content }}{{ end }}
{{- if .ToolCalls }}
<tool_call>
{{ range .ToolCalls }}
{"name": "{{ .Function.Name }}", "arguments": {{ .Function.Arguments }}}
{{ end }}
</tool_call>
{{- end }}<|im_end|>
{{- else if eq .Role "user" -}}
<|im_start|>user
{{ .Content }}<|im_end|>
{{- else if eq .Role "tool" -}}
<|im_start|>user
<tool_response>
{{ .Content }}
</tool_response><|im_end|>
{{- end }}
{{- end }}
{{- end }}<|im_start|>assistant
{{ .Response }}<|im_end|>"""
3.原理
3.1能否上网,本质上在于大模型当初在训练时,是否训练了tool的能力
qwen3.5猜测都是具备了的,无论参数是100B还是2B。所以ollama上我自动下载的很多qwen3.5的子型号,都是有上网按钮的。
3.2 Modelfile要声明大模型具备这种能力
例如,查看这个从ollama下载的大模型的信息:
ollama show qwen3.5:2b-bf16
Model
architecture qwen35
parameters 2.3B
context length 262144
embedding length 2048
quantization F16
requires 0.17.1
Capabilities
completion
vision
tools
thinking
Parameters
presence_penalty 1.5
temperature 1
top_k 20
top_p 0.95
License
Apache License
Version 2.0, January 2004
关键就在于这里的字段
Capabilities
completion
vision
tools
thinking
4.经验
这个问题,qwen3.5-plus,豆包思考,kimi2.5都不能准确地回答,它们基本都认为是网络环境问题。
智谱GLM5可以认识到关键在于tool,但是他思考太慢了,就没继续询问它。
chatgpt基本都能答出来,但是最后的Modelfile还是没有给对,没有写出关键的tools字段
gemini给了解决问题的Modelfile,即上文的。
吐槽一下trae调用qwen3.5-plus,给它两天的时间,还是没搞定这个问题,它倒是坚持认为我下载的gguf模型不具备tool能力。
这里有很多Modelfile可以参考github.com/sammcj/llm-templates/blob/main/Modelfile-qwen2.5-coder
更多推荐



所有评论(0)