尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

llama.cpp function calling 三步实操:如何让 Qwen2.5 的工具调用真正生效

llama.cpp function calling 三步实操:如何让 Qwen2.5 的工具调用真正生效 llama.cpp function calling 三步实操如何让 Qwen2.5 的工具调用真正生效【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp下面带你用 3 个步骤跑通 llama.cpp 的 function calling工具调用让 Qwen2.5 收到查天气的问题时自动返回结构化的tool_calls而不是凭记忆编一个答案。你只需要准备一个编译好的llama-server和一个 Qwen2.5 GGUF 模型。准备清单跑通 llama.cpp function calling 需要什么先确认手头有这几样东西缺哪样先补哪样。llama-server 二进制按 安装文档 用 CMake 编译或直接取对应平台的预编译产物。模型文件任一规格的 Qwen2.5 Instruct 版 GGUFQ4_K_M 量化在 CPU 上也能跑。版本要求Jinja 模板引擎与 Qwen2.5 原生工具调用支持已合入主线取近一年的发布版本即可。网络用-hf自动拉模型时需要能访问 HuggingFace已有本地 GGUF 则不需要。硬件无 GPU 要求CPU 即可跑通功能验证。执行步骤llama-server 工具调用三步命令三步走完一条请求就能让模型返回工具调用。第 1 步启动服务务必带上--jinja开关——这个开关让服务端用 Jinja 模板把tools数组包装成 Qwen2.5 认识的格式它是工具调用生效的前提服务端会强制校验它。llama-server --jinja -fa -hf bartowski/Qwen2.5-7B-Instruct-GGUF:Q4_K_M \ --host 0.0.0.0 --port 8080已有本地 GGUF 的话把-hf换成-m 你的模型.gguf即可。第 2 步确认模板支持工具调用——执行curl -s http://localhost:8080/props只要响应里chat_template_tool_use不是空值就说明模板具备工具调用能力可以进入下一步。第 3 步向/v1/chat/completions发一条带tools的请求——payload 按 OpenAI 兼容格式写模型就会按模板生成调用指令。curl -s http://localhost:8080/v1/chat/completions -d { model: qwen2.5, tools: [{type:function,function:{name:get_current_weather,description:Get the current weather in a given location,parameters:{type:object,properties:{location:{type:string,description:City name, e.g. Beijing, China}},required:[location]}}}], messages:[{role:user,content:What is the weather in Istanbul?}] }参数速查--jinja 与相关开关对照表对照你的启动命令和请求逐项确认这些参数起没起作用。参数作用不设置会怎样--jinja启用 Jinja 模板引擎是tools/tool_choice的前置开关带 tools 的请求直接被拒绝报tools param requires --jinja flag-hf从 HuggingFace 自动下载并加载指定 GGUF与-m二选一都没有则服务无法加载模型-fa开启 flash attention 加速推理略慢不影响工具调用功能--host/--port指定监听地址与端口默认127.0.0.1:8080外部机器访问不到--chat-template-file显式指定支持工具调用的 Jinja 模板文件回落到 GGUF 内置模板若内置模板不支持工具则调用失效parallel_tool_calls请求字段允许模型一次返回多个工具调用默认关闭一次只返回一个调用 结果验证如何确认 Qwen2.5 成功返回 tool_calls成功的判定标准只有一个响应 JSON 里choices[0].finish_reason等于tool且message.tool_calls非空、包含get_current_weather和参数{location: Istanbul}同时message.content为空。看到这三点就说明 function calling 已生效反之若拿到一段自然语言回复且finish_reason为stop去下面避坑表里对号入座。 避坑速查工具调用常见问题的症状-原因-修法对照遇到以下任何一种情况按症状 → 原因 → 修法三列直接查。症状原因修法请求报tools param requires --jinja flag启动命令漏了--jinja加上--jinja重启服务模型直接回答今天晴tool_calls为空GGUF 内置模板缺失或不含工具格式模型退化成普通聊天用--chat-template-file指定 tool_use 模板至少试--chat-template chatml工具参数 JSON 被截断、拼错或乱码极端 KV 量化如-ctk q4_0明显伤工具调用表现量化时 KV 用更高精度如q8_0或 f16或换主流量化模型想一次调多个工具模型只返回一个parallel_tool_calls默认关闭请求 payload 里传parallel_tool_calls: true仅部分模型模板支持模型时而调用时而不调用部分小参数指令遵循较弱加一条 system 消息明确请通过工具回答或换更大规格 Instruct 模型延伸方向从 function calling 到自建工具闭环跑通单轮调用后沿这三条线继续深入。查看 docs/function-calling.md对照原生支持列表确认你用的模型走的是哪种格式处理器。用 scripts/get_chat_template.py 拉取任意 HuggingFace 模型的官方 tool_use 模板解决内置模板不匹配的模型。按 OpenAI 兼容协议把/v1/chat/completions接入你自己的应用实现模型发调用 → 本地执行 → 结果写回 messages的自动工具闭环。【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表