【中文 | English】
概述 •
安装 •
模型训练 •
模型下载 •
推理 •
模型评估
- [2025-06-05] 🚀🚀🚀我们开源了基于MiniCPM4-8B构建的MiniCPM4-MCP,能够调用多种MCP工具,性能比肩更大模型。
MiniCPM-4-MCP 是由清华大学自然语言处理实验室(THUNLP)、中国人民大学与 ModelBest 联合开发的开源本地大语言模型智能体,基于 MiniCPM-4,拥有 80 亿参数。它能够通过 MCP 与各种工具和数据资源交互,解决多种真实世界任务。截至目前,MiniCPM4-MCP 已支持:
-
涵盖 16 个 MCP Servers 中工具的使用:这些servers横跨了办公类、生活类、通讯类、资讯类、工作管理类等.
-
单工具使用的能力:可使用符合 MCP 协议的工具进行单一工具的一步或多步调用。
-
跨工具组合使用的能力:可组合使用符合 MCP 协议的不同工具。
演示案例(1 倍速):
所需依赖包版本在 ./requirements.txt 中列出,以确保兼容性。
pip install -r requirements.txt
我们主要采用“示范学习”的方法训练模型。示范数据由大语言模型与 MCP 环境持续交互生成。MiniCPM 通过监督微调(SFT)从这些示范中学习。我们使用 LLaMa-Factory 作为 SFT 框架训练 MiniCPM,适配过后的 LLaMa-Factory 版本会进行发布。
通过此链接下载模型。
{
"conversations": [
{"from": "human", "value": "你好,我想把500美元换成欧元,你能帮我吗?"},
,
{"from": "tool", "value": "{"converted_amount": 425.50, "exchange_rate": 0.851}"},
],
"tools": "[, "to_currency": {"type": "string", "description": "目标货币"}, "amount": {"type": "number", "description": "兑换金额"}}, "required": ["from_currency", "to_currency", "amount"]}}, {"name": "generate_random_password", "description": "生成符合特定要求的随机密码", "parameters": {"type": "object", "properties": {"length": {"type": "integer", "description": "密码长度"}, "include_numbers": {"type": "boolean", "description": "是否包含数字"}, "include_symbols": {"type": "boolean", "description": "是否包含符号"}}, "required": ["length"]}}]",
"system": "你是一个具有函数调用能力的智能助手。请在需要时使用这些函数。"
}
在单台机器上执行训练:
llamafactory-cli train /path/to/config.yaml
示例:
llamafactory-cli train ./LLaMA-Factory/examples/train_full/minicpm4/sft.yaml
所有节点必须满足以下条件:
-
软件环境一致
-
网络可连接(如开放 TCP 端口 29500)
-
可访问相同的训练数据
步骤如下:
- 获取主节点IP(节点0):
hostname -I | awk '{print $1}'
- 启动训练:
主节点(节点0):
export MASTER_ADDR=$(hostname -I | awk '{print $1}')
FORCE_TORCHRUN=1 NNODES=2 RANK=0 MASTER_ADDR=$MASTER_ADDR MASTER_PORT=29500
llamafactory-cli train /path/to/config.yaml
工作节点(节点1):
FORCE_TORCHRUN=1 NNODES=2 RANK=1 MASTER_ADDR=$MASTER_ADDR MASTER_PORT=29500
llamafactory-cli train /path/to/config.yaml
MiniCPM4-MCP 所支持的 MCP Servers 具体包含
Airbnb,
Amap-Maps,
Arxiv-MCP-Server,
Calculator,
Computer-Control-MCP,
Desktop-commander,
Filesystem,
Github,
Gaode,
MCP-Code-Executor,
MCP-DOCx,
PPT,
PPTx,
Simple-Time-Server,
Slack,
Whisper。
根据这些servers的仓库指引即可成功部署。需要注意的是,这些servers中包含的工具并非全部都可以在环境中顺利跑通,有一些工具的波动性较大,会返回例如timeout、http error等报错。在训练数据构造的过程中,失败率过高的工具(例如LLM在上百次尝试后仍无法为该工具构建出一条能将其成功调用的query)会被过滤掉。
我们基于 mcp-cli 仓库已经实现的 MCP Client 进行修改,由此实现 MiniCPM 和 MCP Server 的交互。MCP Client与 Server 进行握手后所获得的server工具列表内容样例如available_tool_example.json所示。获取到available tools以及用户query之后,可按照以下脚本中的逻辑使用指定模型生成结果:
python generate_example.py
--tokenizer_path {minicpm4 tokenizer的路径}
--base_url {vllm部署的url}
--model {vllm部署时的模型名}
--output_path {结果保存路径}
其中,MiniCPM4 以如下格式生成工具调用:
<|tool_call_start|>
```python
read_file(path="/path/to/file")
```
<|tool_call_end|>
可依据此逻辑为 MiniCPM4 工具调用实现自定义解析器,解析逻辑相关代码位于:generate_example.py。
由于 mcp-cli 仓库支持 vllm 推理框架,因此也可以通过修改vllm从而令MiniCPM4-MCP直接适配mcp-cli的运行逻辑。具体而言,可按照此链接所述方式修改vllm从而实现搭载着MiniCPM4-MCP模型的client与server的交互通信。
生成结束后,运行以下脚本进行评估:
python eval_scripts.py
--input_path {generate生成结果的保存路径}
该脚本用于评估模型在单轮工具调用中函数名预测的表现。多轮调用情况下,给定之前步骤的ground-truth信息即可评测模型在当前步骤生成的工具调用指令的准确性,每个步骤的评测逻辑与单轮相同。










