跳到主要内容
返回开发者精选

MiniCPM5-1B Agentic Tool-Use v3:可离线运行的 1B 函数调用模型

作者:ewinregirgojr模型:MiniCPM5-1B

SFT + GRPO 的 1B 函数调用模型,CPU 离线运行

MiniCPM5-1B-Agentic-Tooluse-v3 是在 MiniCPM5-1B 上微调出来的 1B 函数调用模型,开放权重,量化成 GGUF,CPU 上就能完全离线跑。不需要 GPU,不调云端 API,数据不出本机。它可以直接用在 llama.cpp、Ollama、LM Studio、koboldcpp 和 text-generation-webui 里。

模型专门学过读工具 schema 和自然语言请求,然后输出函数名正确、参数值正确的结构化调用。LangChain Agent、LlamaIndex 流水线、AutoGen、CrewAI、MCP 工具服务器、ReAct 循环、智能家居助手,靠的都是这个能力。在 300 条留出测试样本上,参数完全正确率 74.67%。

训练方法​

大多数小型工具调用模型做到监督微调就停了,这个模型用了两阶段:

  1. QLoRA 监督微调(SFT):在 ToolACE 的工具调用轨迹上训练。
  2. GRPO 强化学习:在 SFT 检查点之上接着训,只奖励工具调用里最难的两点,函数名选对,每个参数值都完全正确。

作者自己也说了,和 GPT-4o / Claude 的函数调用比,这个模型牺牲了一部分绝对精度,换回来的是免费、本地运行、数据私密、零调用成本,还能接着微调。

结果​

评测用的是 ToolACE 经固定种子打乱后切出的 300 条留出样本。基座列是同一个模型、同一套提示词、不加适配器的结果。发布权重是 SFT + GRPO,保留 SFT 列,是因为下面所有负面结果都拿它做参照。

指标v2(上一版本)SFT 重训(GRPO 前)v3 = SFT + GRPO(发布版)
parseable:输出为格式正确的调用0.99331.00001.0000
valid_name:函数名存在于提供的工具中0.97000.98670.9867
expected_name:函数名与标准答案一致0.90670.95670.9533
args_exact:每个参数值都与标准答案一致0.61330.73670.7467
arg_key_overlap:参数键的 F10.87570.94220.9388
5 项平均0.87180.92450.9251

GRPO 在最关键的 args_exact 上提升 +0.0100,代价是 expected_name 和 arg_key_overlap 各掉 0.0034(各一个测试样本)。作者把这个取舍写得很清楚:平均值只涨了 +0.0006,所以这是对最难指标的定向增益,不是全面提升。

完整 8 项指标(留出测试集,n=300)​

沿用 v2 的评测格式,用同一套工具和留出集对比 Base、v2、v3:

指标Base MiniCPM5-1Bv2(上一版本)v3(本模型)变化(v2 → v3)
parseable_rate0.01330.99331.0000+0.0067
valid_name_rate0.01330.97000.9867+0.0167
expected_name_rate0.01330.92670.9533+0.0267
args_exact_rate0.15000.65330.7467+0.0934
arg_key_overlap0.00330.75170.9388+0.1871
no_schema_copy_rate1.00001.00000.9967-0.0033
no_repetition_rate0.99671.00000.3400-0.6600
stopped_cleanly_rate0.00000.15000.0000-0.1500

注:模型卡里两张表的 v2 数值(expected_name、args_exact、arg_key_overlap)对不上,这里按原文照录。

附加指标含义:

  • no_schema_copy_rate:模型没有把工具 schema 里的字段描述原样抄进参数值。
  • no_repetition_rate:输出里没有重复的函数调用块,也没有退化的重复短语循环。这是这个模型的已知弱点,它经常在工具调用结束后继续生成填充内容。
  • stopped_cleanly_rate:模型在完整的 </function> 标签之后立刻停下,没有多余 token。

所以用的时候,请用解析器截出第一个完整的 <function>...</function> 块作为动作边界,不要指望模型自己停下来。

量化版本​

文件量化大小适用场景
MiniCPM5-1B-Agentic-Tooluse-v3.F16.ggufF16约 2.02 GB最高质量,GPU 或大内存 CPU 推理
MiniCPM5-1B-Agentic-Tooluse-v3.Q8_0.ggufQ8_0约 1.07 GB接近无损,推荐大多数用户默认使用
MiniCPM5-1B-Agentic-Tooluse-v3.Q4_K_M.ggufQ4_K_M约 656 MB最小最快,适合边缘设备、手机和低内存纯 CPU 机器

三种量化在 CPU 上都能跑得不错,GPU 只是让它更快。

快速开始​

llama.cpp:

Bash
./llama-cli -m MiniCPM5-1B-Agentic-Tooluse-v3.Q8_0.gguf -p "Your prompt with tool schema here"

llama-server(OpenAI 兼容 API,适配大多数 Agent 框架):

Bash
./llama-server -m MiniCPM5-1B-Agentic-Tooluse-v3.Q4_K_M.gguf --port 8080

Ollama:

Bash
# 创建 Modelfile,内容为:
# FROM ./MiniCPM5-1B-Agentic-Tooluse-v3.Q8_0.gguf
ollama create minicpm5-tooluse-v3 -f Modelfile
ollama run minicpm5-tooluse-v3

LM Studio: 直接在 LM Studio 的搜索 / 下载界面里下载上面任意一个 .gguf 文件。

关闭思考模式​

MiniCPM5-1B 内置 <think>...</think> 对话模板。工具调用时务必设 enable_thinking=False。开着思考,模型会把 token 预算花在思考内容上,可能来不及输出完整的函数调用。本页所有评测数据都是关掉思考测的。

Python
prompt = tokenizer.apply_chat_template(
messages, tools=tools, add_generation_prompt=True,
enable_thinking=False,
tokenize=False,
)

适用场景​

  • 完全本地 / 离线 / 私密的 AI Agent
  • 智能家居与语音助手
  • 移动端、浏览器扩展和嵌入式 / IoT 工具调用 Agent
  • 对成本敏感、调用量大、负担不起大模型 API 费用的后端服务
  • LangChain、LlamaIndex、AutoGen、CrewAI 及基于 MCP 的 Agent 栈的函数调用底座
  • 小模型 Agent 推理的个人实验与研究

相关仓库​

格式仓库
v3 LoRA 适配器(PEFT,下载最小,可继续微调)MiniCPM5-1B-Agentic-Tooluse-QLoRA-v3
v3 合并后全量 FP16(transformers / vLLM / SGLang)MiniCPM5-1B-Agentic-Tooluse-v3-Merged-FP16
v3 GGUF 量化(llama.cpp / Ollama / LM Studio)MiniCPM5-1B-Agentic-Tooluse-v3-GGUF
v2 LoRA 适配器MiniCPM5-1B-Agentic-Tooluse-QLoRA-v2
v2 合并 FP16MiniCPM5-1B-Agentic-Tooluse-Merged-FP16
v2 GGUFMiniCPM5-1B-Agentic-Tooluse-GGUF

链接​

项目信息

基于模型
MiniCPM5-1B
作者
ewinregirgojr