216 lines
8.3 KiB
Markdown
216 lines
8.3 KiB
Markdown
|
|
---
|
||
|
|
license: apache-2.0
|
||
|
|
base_model: openbmb/MiniCPM5-1B
|
||
|
|
library_name: transformers
|
||
|
|
pipeline_tag: text-generation
|
||
|
|
model-index:
|
||
|
|
- name: MiniCPM5-1B Agentic Tooluse Merged FP16
|
||
|
|
results:
|
||
|
|
- task:
|
||
|
|
type: text-generation
|
||
|
|
name: Tool calling
|
||
|
|
dataset:
|
||
|
|
name: External ToolACE-derived first-call evaluation
|
||
|
|
type: Team-ACE/ToolACE
|
||
|
|
metrics:
|
||
|
|
- type: parseable_rate
|
||
|
|
value: 0.9933333333333333
|
||
|
|
name: Parseable tool-call rate
|
||
|
|
- type: valid_name_rate
|
||
|
|
value: 0.97
|
||
|
|
name: Available-tool name rate
|
||
|
|
- type: expected_name_rate
|
||
|
|
value: 0.9266666666666666
|
||
|
|
name: Expected tool-name rate
|
||
|
|
- type: args_exact_rate
|
||
|
|
value: 0.6533333333333333
|
||
|
|
name: Exact-arguments rate
|
||
|
|
tags:
|
||
|
|
- minicpm
|
||
|
|
- minicpm5
|
||
|
|
- minicpm5-1b
|
||
|
|
- tool-calling
|
||
|
|
- function-calling
|
||
|
|
- tool-use
|
||
|
|
- agentic
|
||
|
|
- xml-tool-calling
|
||
|
|
- transformers
|
||
|
|
- sglang
|
||
|
|
- vllm
|
||
|
|
- safetensors
|
||
|
|
- merged-model
|
||
|
|
- nemotron
|
||
|
|
- dpo
|
||
|
|
- openbmb
|
||
|
|
widget:
|
||
|
|
- text: "Use the available tool to create a note titled Team Meeting Agenda."
|
||
|
|
- text: "Run tests for the calculator bug using the available tool."
|
||
|
|
---
|
||
|
|
|
||
|
|
# MiniCPM5-1B Agentic Tooluse Merged FP16
|
||
|
|
|
||
|
|
Standalone merged FP16 checkpoint of
|
||
|
|
[`openbmb/MiniCPM5-1B`](https://huggingface.co/openbmb/MiniCPM5-1B)
|
||
|
|
and the latest
|
||
|
|
[`MiniCPM5-1B-Agentic-Tooluse-QLoRA-v2`](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-QLoRA-v2)
|
||
|
|
adapter after the July 2026 Nemotron SFT+DPO repair.
|
||
|
|
|
||
|
|
This repository contains the complete model. It is **not** an adapter and does not require PEFT at inference time.
|
||
|
|
|
||
|
|
## Repositories
|
||
|
|
|
||
|
|
| Format | Repository |
|
||
|
|
|---|---|
|
||
|
|
| Merged FP16 Transformers model | This repository |
|
||
|
|
| LoRA/PEFT adapter | [`MiniCPM5-1B-Agentic-Tooluse-QLoRA-v2`](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-QLoRA-v2) |
|
||
|
|
| F16, Q8_0 and Q4_K_M GGUF | [`MiniCPM5-1B-Agentic-Tooluse-GGUF`](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-GGUF) |
|
||
|
|
|
||
|
|
## Current Files
|
||
|
|
|
||
|
|
The current model weights are one indexed checkpoint:
|
||
|
|
|
||
|
|
- `model-00001-of-00002.safetensors`
|
||
|
|
- `model-00002-of-00002.safetensors`
|
||
|
|
- `model.safetensors.index.json`
|
||
|
|
|
||
|
|
The repository also includes the matching tokenizer, `chat_template.jinja`, model configuration, generation configuration and external evaluation artifacts. The previous single-file model remains recoverable from Hub history but is not part of the current branch.
|
||
|
|
|
||
|
|
## Tool-Calling Behavior
|
||
|
|
|
||
|
|
MiniCPM5-1B natively emits XML-style calls:
|
||
|
|
|
||
|
|
```xml
|
||
|
|
<function name="tool_name"><param name="parameter">value</param></function>
|
||
|
|
```
|
||
|
|
|
||
|
|
The fine-tuning specializes first-call tool selection, function-name accuracy, argument selection, schema-copy avoidance and repeated-call suppression.
|
||
|
|
|
||
|
|
An application remains responsible for parsing and validating calls, executing tools externally, and returning tool results in a new turn.
|
||
|
|
|
||
|
|
## Recommended Tool-Calling Deployment
|
||
|
|
|
||
|
|
OpenBMB recommends SGLang with its built-in MiniCPM5 parser:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
pip install "sglang[srt]>=0.5.12"
|
||
|
|
|
||
|
|
python -m sglang.launch_server \
|
||
|
|
--model-path ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-Merged-FP16 \
|
||
|
|
--port 30000 \
|
||
|
|
--tool-call-parser minicpm5
|
||
|
|
```
|
||
|
|
|
||
|
|
The parser converts a completed `<function ...>...</function>` block into an OpenAI-compatible `tool_calls` response.
|
||
|
|
|
||
|
|
## Transformers
|
||
|
|
|
||
|
|
```python
|
||
|
|
import torch
|
||
|
|
from transformers import AutoModelForCausalLM, AutoTokenizer
|
||
|
|
|
||
|
|
model_id = "ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-Merged-FP16"
|
||
|
|
|
||
|
|
tokenizer = AutoTokenizer.from_pretrained(model_id)
|
||
|
|
model = AutoModelForCausalLM.from_pretrained(
|
||
|
|
model_id,
|
||
|
|
dtype=torch.float16,
|
||
|
|
device_map="auto",
|
||
|
|
)
|
||
|
|
model.eval()
|
||
|
|
```
|
||
|
|
|
||
|
|
Use `tokenizer.apply_chat_template(...)` and the repository's matching chat template. For deterministic tool selection, override the sampling defaults:
|
||
|
|
|
||
|
|
```python
|
||
|
|
outputs = model.generate(
|
||
|
|
**inputs,
|
||
|
|
do_sample=False,
|
||
|
|
max_new_tokens=128,
|
||
|
|
pad_token_id=tokenizer.pad_token_id,
|
||
|
|
eos_token_id=tokenizer.eos_token_id,
|
||
|
|
)
|
||
|
|
```
|
||
|
|
|
||
|
|
Remove `token_type_ids` from `inputs` if the installed Transformers/tokenizer combination returns them, because this Llama model does not consume that argument.
|
||
|
|
|
||
|
|
## vLLM
|
||
|
|
|
||
|
|
The merged safetensors checkpoint is the preferred format for vLLM:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
vllm serve ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-Merged-FP16
|
||
|
|
```
|
||
|
|
|
||
|
|
Parser availability depends on the installed vLLM release. Use SGLang's official `minicpm5` parser path when OpenAI-compatible tool-call extraction is required and the vLLM build does not provide an equivalent parser.
|
||
|
|
|
||
|
|
## External Evaluation
|
||
|
|
|
||
|
|
The final adapter and this merged checkpoint have identical weights for evaluation purposes. Evaluation used 300 examples derived from the external
|
||
|
|
[`Team-ACE/ToolACE`](https://huggingface.co/datasets/Team-ACE/ToolACE)
|
||
|
|
dataset, deterministic decoding, and the same cases for both models. This is not an official ToolACE or BFCL leaderboard submission.
|
||
|
|
|
||
|
|
| Metric | Base MiniCPM5-1B | Repaired model | Delta |
|
||
|
|
|---|---:|---:|---:|
|
||
|
|
| Parseable tool call | 0.0133 | 0.9933 | +0.9800 |
|
||
|
|
| Valid available-tool name | 0.0133 | 0.9700 | +0.9567 |
|
||
|
|
| Expected tool name | 0.0133 | 0.9267 | +0.9133 |
|
||
|
|
| Exact arguments | 0.1500 | 0.6533 | +0.5033 |
|
||
|
|
| Argument-key overlap | 0.0033 | 0.7517 | +0.7484 |
|
||
|
|
| No schema copying | 1.0000 | 1.0000 | +0.0000 |
|
||
|
|
| No repetition | 0.9967 | 1.0000 | +0.0033 |
|
||
|
|
| Natural clean termination | 0.0000 | 0.1500 | +0.1500 |
|
||
|
|
|
||
|
|
The full rows and metrics are published in:
|
||
|
|
|
||
|
|
- `external_toolace_base_vs_nemotron_dpo_eval.json`
|
||
|
|
- `EVAL_RESULTS.md`
|
||
|
|
|
||
|
|
## Understanding the 15% Termination Metric
|
||
|
|
|
||
|
|
`stopped_cleanly_rate=0.15` is a strict natural-termination metric. It measures whether the model naturally ended immediately after a completed function call without runtime intervention.
|
||
|
|
|
||
|
|
It does **not** mean that only 15% of cases produced usable calls. In the same evaluation, 99.33% were parseable, 97% used an available tool name, and 92.67% selected the expected tool.
|
||
|
|
|
||
|
|
MiniCPM5's deployment contract uses a parser to extract the completed XML function block. Production should treat the first completed `</function>` as the action boundary and prevent generated synthetic tool responses or later dialogue from being interpreted as additional actions.
|
||
|
|
|
||
|
|
## Training Lineage
|
||
|
|
|
||
|
|
The current adapter was produced by:
|
||
|
|
|
||
|
|
1. Earlier xLAM/Glaive SFT and preference-repair stages.
|
||
|
|
2. Targeted Nemotron SFT continuation from the previous DPO adapter.
|
||
|
|
3. DPO preference optimization over valid versus corrupted tool calls.
|
||
|
|
4. Merge into `openbmb/MiniCPM5-1B`.
|
||
|
|
|
||
|
|
Nemotron sources used in the repair:
|
||
|
|
|
||
|
|
- `nvidia/Nemotron-SFT-Agentic-v2`
|
||
|
|
- `nvidia/Nemotron-RL-Agentic-Function-Calling-Pivot-v1`
|
||
|
|
- `nvidia/Nemotron-RL-Agentic-Conversational-Tool-Use-Pivot-v1`
|
||
|
|
|
||
|
|
The data pipeline inspected physical dataset files, skipped one malformed JSONL row in the SFT tool-calling file, removed oversized policy text where needed, preserved tool schemas and recent context, and rejected unknown arguments, schema-copy placeholders and invalid expected tools.
|
||
|
|
|
||
|
|
## Measured Improvements and Scope
|
||
|
|
|
||
|
|
This merged checkpoint contains the same repaired adapter behavior and improved every reported task-quality metric over base MiniCPM5-1B:
|
||
|
|
|
||
|
|
- Parseable calls: **1.33% -> 99.33%**
|
||
|
|
- Valid available-tool names: **1.33% -> 97.00%**
|
||
|
|
- Expected-tool selection: **1.33% -> 92.67%**
|
||
|
|
- Exact arguments: **15.00% -> 65.33%**
|
||
|
|
- Argument-key overlap: **0.33% -> 75.17%**
|
||
|
|
- No repetition: **99.67% -> 100.00%**
|
||
|
|
- Natural clean termination: **0.00% -> 15.00%**
|
||
|
|
|
||
|
|
The remaining gap to 100% is residual error after a large improvement, not evidence that merging or fine-tuning degraded the base model.
|
||
|
|
|
||
|
|
## Deployment Notes
|
||
|
|
|
||
|
|
- Schema validation, permission checks and confirmation for sensitive actions are standard requirements for every tool-calling model.
|
||
|
|
- Exact-argument accuracy improved by **50.33 percentage points**; applications should still validate generated values before execution.
|
||
|
|
- Valid-name accuracy improved by **95.67 percentage points**; rare near misses can remain on unseen tool libraries.
|
||
|
|
- Natural termination improved from 0% to 15%. MiniCPM5's parser-based serving contract extracts the completed call, so this metric is separate from the 99.33% parseable-call rate.
|
||
|
|
- The external evaluation is custom rather than an official ToolACE/BFCL leaderboard submission.
|
||
|
|
- GGUF quantizations may differ slightly from FP16 and are published separately.
|
||
|
|
|