十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

让LFM2.5-350M-6bit学会调用工具:Function Calling函数调用从入门到精通

让LFM2.5-350M-6bit学会调用工具:Function Calling函数调用从入门到精通 让LFM2.5-350M-6bit学会调用工具Function Calling函数调用从入门到精通【免费下载链接】LFM2.5-350M-6bit项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/LFM2.5-350M-6bitLFM2.5-350M-6bit是一款由 Liquid AI 打造、转为 MLX 格式的轻量级大模型仅 3.54 亿参数、约 288MB 体积却原生支持Function Calling函数调用能在端侧设备上自主调用外部工具。本教程将从零开始带你完整掌握让 LFM2.5-350M-6bit 学会调用工具的每一个步骤从环境安装、聊天模板原理到天气查询工具的完整实战新手也能一次跑通。一、什么是 Function Calling为什么大模型需要它Function Calling函数调用是指大模型在回答问题时不只输出文字还能输出一条结构化的工具调用指令由你的程序去真正执行这个函数比如查天气、算数学、查数据库再把执行结果交还给模型让它继续生成最终答案。举个例子你问模型北京明天适合出门吗模型自己不知道天气但通过 Function Calling 它可以调用函数 get_weather(city北京, date明天)你的程序拿到这个指令后去天气 API 查询把晴22°C返回给模型模型再基于真实数据给出适合出门的结论。这样一个只会说话的模型就变成了会做事的 AI 助手。这也是构建 Agent智能体的核心能力。二、LFM2.5-350M-6bit 模型速览小身材也有大能力 LFM2.5-350M-6bit 是 LiquidAI/LFM2.5-350M 中直接查看特性参数参数量3.54 亿354M量化精度6-bitgroup_size64affine文件大小约 288MBmodel.safetensors上下文窗口128K tokens词表大小65536支持语言中、英、日、韩、法、德、西、葡、阿 9 种运行框架MLXApple Silicon 原生加速它采用 Liquid AI 特色的卷积 全注意力混合架构见 config.json 中的layer_types在保持低延迟、低内存占用的同时支持 128K 超长上下文非常适合边缘设备与端侧部署。最关键的是它原生训练支持 Function Calling这在同体量模型中非常难得。三、第一步快速搭建 MLX 运行环境 ️LFM2.5-350M-6bit 的官方使用方式是 mlx-lm一行命令即可安装pip install mlx-lm如果你希望先下载仓库再本地加载可以执行git clone https://gitcode.com/hf_mirrors/mlx-community/LFM2.5-350M-6bit 提示mlx-lm 会自动从 Hugging Face 或本地目录加载模型即使不手动 clone直接写模型名mlx-community/LFM2.5-350M-6bit也能自动下载。四、第二步读懂聊天模板看透工具注入的机关 要掌握 Function Calling必须先理解模型如何看见工具。答案就在项目根目录的 chat_template.jinja 中。这是一个 ChatML 风格的模板负责把对话消息拼成模型认识的格式。其中最关键的是第 19-31 行当传入tools参数时模板会把工具列表自动拼进 system 提示词List of tools: [{工具1的JSON定义}, {工具2的JSON定义}]同时tokenizer 内部还内置了 6 个工具专用标记定义在 tokenizer.json 中标记含义|tool_list_start|/|tool_list_end|工具列表的开始与结束|tool_call_start|/|tool_call_end|模型发出工具调用指令|tool_response_start|/|tool_response_end|包裹工具返回的结果 顺带一提模板第 57-61 行还会自动剪掉历史对话中的思考过程/think之后的内容避免思维链污染上下文这个设计对长对话非常友好。五、第三步实战让模型调用你的第一个工具 ️现在我们写一个经典的天气查询例子。工具定义采用通用的 OpenAI 风格 JSON Schema任何框架都通用。1. 定义工具并构造提示词from mlx_lm import load, generate model, tokenizer load(mlx-community/LFM2.5-350M-6bit) # 定义工具查询天气 tools [{ type: function, function: { name: get_weather, description: 查询指定城市的实时天气, parameters: { type: object, properties: { city: {type: string, description: 城市名称如北京} }, required: [city] } } }] messages [{role: user, content: 北京今天天气怎么样}] # 关键把 tools 传给 apply_chat_template prompt tokenizer.apply_chat_template( messages, toolstools, add_generation_promptTrue )2. 生成并解析工具调用指令response generate(model, tokenizer, promptprompt, max_tokens200, verboseTrue)模型会输出类似下面的结构化调用指令注意被|tool_call_start|包裹|tool_call_start| {name: get_weather, arguments: {city: 北京}} |tool_call_end|用简单的字符串解析就能取出函数名和参数import json, re match re.search( r\|tool_call_start\|(.*?)\|tool_call_end\|, response, re.S ) call json.loads(match.group(1)) print(call[name], call[arguments][city]) # 输出get_weather 北京3. 把工具结果交还给模型生成最终回答你的程序真正调用天气 API 后把结果按模板约定的|tool_response_start|包裹好作为新的消息追加回对话再让模型生成最终答案result {city: 北京, weather: 晴, temp: 32} messages.append({role: assistant, content: response}) messages.append({ role: user, content: f|tool_response_start|{result}|tool_response_end| }) final_prompt tokenizer.apply_chat_template( messages, add_generation_promptTrue ) answer generate(model, tokenizer, promptfinal_prompt, verboseTrue)模型就会基于真实天气数据回答北京今天晴气温 32°C适合外出…… —— 一次完整的Function Calling 闭环就打通了六、进阶技巧让函数调用更稳定可靠 掌握了基础流程后这几个进阶技巧能显著提升调用成功率1. 一次性定义多个工具把多个工具 JSON 放进tools列表模型会自动挑选合适的工具非常适合构建多功能 Agent。2. 参数描述写清楚description字段写得越具体模型选参越准。比如city的描述写明中文城市名比只写城市效果好得多。3. 增加兜底逻辑模型偶尔会幻觉出不存在的函数名建议用try/except解析解析失败时告诉模型工具调用格式错误请重新调用。4. 控制生成长度工具调用指令通常很短把max_tokens设置在 128~256 之间即可既能省钱又避免模型画蛇添足。七、常见问题 FAQ ❓Q模型输出的工具调用不是标准 JSON 怎么办A模板约定|tool_call_start|内就是标准 JSON若偶尔解析失败可先做re.sub(r\s, , ...)清洗后再json.loads。Q可以不传 tools 直接问吗A可以。不传tools时模板不会注入工具列表模型退化为普通对话模式两种模式可以自由切换。Q288MB 的模型跑函数调用会不会很吃力A完全不会。LFM2.5 系列本身就是为边缘场景设计配合 MLX 在 Apple Silicon 上可流畅实时推理这也是它最大的卖点之一。Q工具结果应该用哪个 role 传回A本项目的 chat_template.jinja 会把 role 原样拼入|im_start|实践中用user或toolrole 均可只要内容用|tool_response_start|包裹即可。八、总结从会聊天到会办事的最后一公里 本教程带你完整走通了 LFM2.5-350M-6bit 的 Function Calling 全流程用 mlx-lm 一行命令加载模型理解 chat_template.jinja 中tools参数的注入机制定义 OpenAI 风格的工具 JSON传给apply_chat_template解析|tool_call_start|包裹的调用指令并执行真实函数用|tool_response_start|把结果交还模型生成最终回答。掌握了这套流程你就可以让这个仅 288MB 的小模型帮你查天气、做计算、检索数据库甚至搭建一个完整的本地 AI 智能体。LFM2.5-350M-6bit 用实力证明轻量模型同样可以玩转工具调用。现在就去试试吧【免费下载链接】LFM2.5-350M-6bit项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/LFM2.5-350M-6bit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表