File size: 12,870 Bytes
b746456
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ed23be2
 
 
b8ed16e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ed23be2
b746456
9d8e3b1
b746456
9d8e3b1
b746456
9d8e3b1
b746456
9d8e3b1
 
 
 
 
 
 
 
 
b746456
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ed23be2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b3fcb74
b746456
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b8ed16e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b746456
 
17244e9
b746456
17244e9
 
 
 
 
b746456
17244e9
 
 
 
 
 
 
b746456
 
 
 
b8ed16e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
---

license: apache-2.0
base_model: openbmb/MiniCPM5-1B
tags:
- gguf
- llama.cpp
- llama-cpp
- ollama
- lm-studio
- minicpm
- minicpm5
- minicpm5-1b
- tool-calling
- function-calling
- tool-use
- agentic
- agentic-ai
- ai-agent
- xml-tool-calling
- json-function-calling
- quantized
- quantization
- q4_k_m
- q8_0
- f16
- gguf-my-repo
- small-language-model
- slm
- edge-ai
- on-device
- local-llm
- offline-ai
- privacy
- openbmb
language:
- en
pipeline_tag: text-generation
datasets:
- Team-ACE/ToolACE
model-index:
- name: MiniCPM5-1B-Agentic-Tooluse-v3
  results:
  - task:
      type: text-generation
      name: Tool calling
    dataset:
      name: External ToolACE-derived first-call evaluation (held-out 300 examples)
      type: Team-ACE/ToolACE
    metrics:
    - type: parseable_rate
      value: 1.0000
      name: Parseable tool-call rate
    - type: valid_name_rate
      value: 0.9867
      name: Valid available-tool name rate
    - type: expected_name_rate
      value: 0.9533
      name: Expected tool-name rate
    - type: args_exact_rate
      value: 0.7467
      name: Exact-arguments rate
    - type: arg_key_overlap
      value: 0.9388
      name: Argument-key overlap
    - type: no_schema_copy_rate
      value: 0.9967
      name: No-schema-copy rate
    - type: no_repetition_rate
      value: 0.3400
      name: No-repetition rate
    - type: stopped_cleanly_rate
      value: 0.0000
      name: Stopped-cleanly rate
---


# MiniCPM5-1B-Agentic-Tooluse-v3-GGUF β€” Local Function-Calling LLM (llama.cpp / Ollama / LM Studio)

**MiniCPM5-1B-Agentic-Tooluse-v3** is a **1-billion-parameter open-weight function-calling model** you can run entirely offline on a CPU β€” no GPU, no cloud API, no data leaving your machine. It is quantized to GGUF format and works out of the box with [llama.cpp](https://github.com/ggerganov/llama.cpp), [Ollama](https://ollama.com/), [LM Studio](https://lmstudio.ai/), koboldcpp, and text-generation-webui.

If you are looking for a **local LLM for tool calling**, a **small function-calling model for Raspberry Pi or a laptop**, a **private offline AI agent backbone**, or a **free alternative to GPT-4o / Claude function calling** that runs on your own hardware, this is it.

> **74.67% exact-argument accuracy** on a held-out 300-example benchmark β€” trained with QLoRA supervised fine-tuning followed by GRPO reinforcement learning, rewarding exact function-name and argument-value correctness. No GPU required at Q4_K_M.

## Why this model

MiniCPM5-1B-Agentic-Tooluse-v3 is fine-tuned specifically to parse a tool schema and a natural-language user request, then emit a structured, correctly-named, correctly-valued function call β€” the exact skill that powers LangChain agents, LlamaIndex pipelines, AutoGen, CrewAI, MCP tool servers, ReAct loops, and home-automation assistants.

Unlike most small open tool-calling models that stop at supervised fine-tuning, this model goes further with **GRPO reinforcement learning** on top of the SFT checkpoint, specifically rewarding the two hardest parts of tool calling: choosing the right function name and getting every argument value exactly right.

**Compared to GPT-4o / Claude for function calling:** this model is 100% free, runs locally, keeps all data private, has zero per-call cost, and is fine-tunable β€” it trades some absolute accuracy for massive gains in cost, latency, and privacy.
## Why this model

MiniCPM5-1B-Agentic-Tooluse-v3 is a compact **1B-parameter** model fine-tuned specifically for agentic tool/function calling: it parses a tool schema plus a user request and reliably emits a structured, correctly-named, correctly-valued function call β€” the core capability behind LangChain agents, MCP servers, ReAct loops, home-automation assistants, and any app that needs an LLM to reliably drive external APIs and tools.

Unlike most small open tool-calling models, this one went through a **two-stage pipeline**: QLoRA supervised fine-tuning followed by **GRPO reinforcement learning**, specifically rewarding exact function-name and exact argument-value correctness.

## Results

Evaluated on a held-out 300-example test slice drawn from a **seeded shuffle** of ToolACE (see *Split integrity*).
The base-model column is the same model with the same prompt and no adapter.

The **published weights are SFT + GRPO** (see *GRPO / RLVR*). The SFT column is kept because every
negative result below is measured against it.

| metric | v2 (previous release) | SFT retrain (pre-GRPO) | **v3 = SFT + GRPO (published)** |
|---|---|---|---|
| `parseable` β€” output is a well-formed call | 0.9933 | 1.0000 | **1.0000** |
| `valid_name` β€” name exists among the offered tools | 0.9700 | 0.9867 | **0.9867** |
| `expected_name` β€” name matches gold | 0.9067 | 0.9567 | **0.9533** |
| `args_exact` β€” *every* argument value matches gold | 0.6133 | 0.7367 | **0.7467** |
| `arg_key_overlap` β€” F1 over argument keys | 0.8757 | 0.9422 | **0.9388** |
| **mean of 5** | 0.8718 | 0.9245 | **0.9251** |

GRPO buys +0.0100 on `args_exact`, the metric that matters here, and gives back 0.0034 (one test example
each) on `expected_name` and `arg_key_overlap`. That trade is reported rather than hidden: the mean moves
only +0.0006, so this is a targeted gain on the hardest metric, not a broad improvement.

## Full 8-metric benchmark (held-out test set, n=300)

This table mirrors the evaluation format from v2 and shows Base, v2, and v3 side-by-side
across all 8 metrics using a single consistent harness and held-out test slice:

| Metric | Base MiniCPM5-1B | v2 (previous release) | v3 (this model) | Delta (v2 β†’ v3) |
|---|---:|---:|---:|---:|
| parseable_rate | 0.0133 | 0.9933 | 1.0000 | +0.0067 |

| valid_name_rate | 0.0133 | 0.9700 | 0.9867 | +0.0167 |

| expected_name_rate | 0.0133 | 0.9267 | 0.9533 | +0.0267 |

| args_exact_rate | 0.1500 | 0.6533 | 0.7467 | +0.0934 |

| arg_key_overlap | 0.0033 | 0.7517 | 0.9388 | +0.1871 |

| no_schema_copy_rate | 1.0000 | 1.0000 | 0.9967 | -0.0033 |
| no_repetition_rate | 0.9967 | 1.0000 | 0.3400 | -0.6600 |
| stopped_cleanly_rate | 0.0000 | 0.1500 | 0.0000 | -0.1500 |

**What the additional metrics mean:**
- `no_schema_copy_rate` β€” the model did **not** copy the tool schema's own field description
  verbatim into an argument value.
- `no_repetition_rate` β€” the completion did not contain a duplicated function-call block or
  degenerate repeated-phrase loop. This model has a known weakness here: it often continues
  generating filler content after the tool call completes. Use a parser that extracts the first
  completed `<function>...</function>` block.
- `stopped_cleanly_rate` β€” the model naturally stopped immediately after the completed
  `</function>` tag with no trailing tokens. Use a parser that treats the first completed
  `<function>...</function>` block as the action boundary β€” do not rely on natural end-of-generation.

## Available quantizations

| File | Quant | Size | Best for |
|------|-------|------|----------|
| `MiniCPM5-1B-Agentic-Tooluse-v3.F16.gguf`    | F16    | ~2.02 GB | Maximum quality, GPU or high-RAM CPU inference |
| `MiniCPM5-1B-Agentic-Tooluse-v3.Q8_0.gguf`   | Q8_0   | ~1.07 GB | Near-lossless quality, recommended default for most users |

| `MiniCPM5-1B-Agentic-Tooluse-v3.Q4_K_M.gguf` | Q4_K_M | ~656 MB  | Smallest, fastest β€” best for edge devices, phones, and CPU-only/low-RAM machines |



## Quickstart



**llama.cpp:**



```bash



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

```



**llama-server (OpenAI-compatible API, works with most agent frameworks):**



```bash



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



```

**Ollama:**

```bash



# Create a Modelfile:



#   FROM ./MiniCPM5-1B-Agentic-Tooluse-v3.Q8_0.gguf



ollama create minicpm5-tooluse-v3 -f Modelfile



ollama run minicpm5-tooluse-v3



```

**LM Studio:** just download one of the `.gguf` files above directly through the LM Studio search/download UI.

## Ideal use cases

- Fully local / offline / private AI agents (no data leaves your machine)

- Home automation and smart-home voice assistants

- Mobile, browser-extension, and embedded/IoT tool-calling agents

- Cost-sensitive, high-volume backend services that can't afford large-model API costs per call

- Drop-in function-calling backbone for LangChain, LlamaIndex, AutoGen, CrewAI, and MCP-based agent stacks

- Hobbyist and researcher experimentation with small-model agentic reasoning

## FAQ

**Which quant should I use?** Q8_0 for the best quality-to-size tradeoff on most machines; Q4_K_M if you need the smallest possible footprint or are running on a phone/Raspberry Pi-class device; F16 if you have plenty of RAM/VRAM and want maximum fidelity.



**Do I need a GPU?** No β€” that's the point of this model. All three quantizations run well on CPU; a GPU just makes it faster.



**How was this trained?** QLoRA supervised fine-tuning on tool-calling trajectories, followed by GRPO (Group Relative Policy Optimization) reinforcement-learning refinement targeting exact argument correctness.



## Base model architecture



MiniCPM5-1B uses a standard `LlamaForCausalLM` architecture:



| Property | Value |

|---|---|

| Parameters (total) | 1,080,632,832 |

| Parameters (non-embedding) | 679,552,512 |

| Architecture | `LlamaForCausalLM` |

| Layers | 24 |

| Attention heads (GQA) | 16 Q / 2 KV |

| Context length | 131,072 tokens |

| Training | SFT β†’ RL (GRPO) fine-tune on [openbmb/MiniCPM5-1B](https://huggingface.co/openbmb/MiniCPM5-1B) |



## Thinking mode



MiniCPM5-1B has a built-in `<think>...</think>` chat template. The same checkpoint can act as a fast assistant **or** a deliberate chain-of-thought reasoner β€” controlled by a single flag:



```python

# Fast mode β€” recommended for tool calling (thinking OFF)

prompt = tokenizer.apply_chat_template(

    messages, tools=tools, add_generation_prompt=True,

    enable_thinking=False,
    tokenize=False,

)


# Reasoning mode (thinking ON β€” NOT recommended for tool calling)
prompt = tokenizer.apply_chat_template(
    messages, tools=tools, add_generation_prompt=True,

    enable_thinking=True,

    tokenize=False,

)

```


> **Important:** always use `enable_thinking=False` for tool/function calling. With thinking ON the model spends its token budget inside `<think>...</think>` and may not reach a completed function call. All benchmark numbers in this card use thinking OFF.



## Citation



If you use this model, please cite the base model paper:



```bibtex

@article{minicpm4,

  title   = {MiniCPM4: Ultra-Efficient LLMs on End Devices},

  author  = {MiniCPM Team},

  journal = {arXiv preprint arXiv:2506.07900},

  year    = {2025}

}

```



And the ToolACE dataset used for fine-tuning:



```bibtex

@article{toolace,

  title   = {ToolACE: Winning the Points of LLM Function Calling},

  author  = {Liu, Ying and others},

  journal = {arXiv preprint arXiv:2409.00920},

  year    = {2024}

}

```



## ModelScope



The base model is also available on ModelScope (for users in China and East Asia):



- [OpenBMB/MiniCPM5-1B on ModelScope](https://www.modelscope.cn/models/OpenBMB/MiniCPM5-1B)



*(The fine-tuned adapter/GGUF builds are currently HuggingFace-only.)*

## Related repos



### v3 model family (this release)



| Format | Repository |

|--------|-----------|

| LoRA adapter (PEFT, smallest download, fine-tune further) | [MiniCPM5-1B-Agentic-Tooluse-QLoRA-v3](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-QLoRA-v3) |

| Merged full-weight FP16 (transformers / vLLM / SGLang serving) | [MiniCPM5-1B-Agentic-Tooluse-v3-Merged-FP16](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-v3-Merged-FP16) |

| GGUF quantizations (llama.cpp / Ollama / LM Studio, CPU-friendly) | [MiniCPM5-1B-Agentic-Tooluse-v3-GGUF](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-v3-GGUF) |



### Previous releases



| Format | Repository |

|--------|-----------|

| v2 LoRA adapter | [MiniCPM5-1B-Agentic-Tooluse-QLoRA-v2](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-QLoRA-v2) |

| v2 Merged FP16 | [MiniCPM5-1B-Agentic-Tooluse-Merged-FP16](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-Merged-FP16) |

| v2 GGUF | [MiniCPM5-1B-Agentic-Tooluse-GGUF](https://huggingface.co/ewinregirgojr/MiniCPM5-1B-Agentic-Tooluse-GGUF) |

## Base model



Built on [MiniCPM5-1B](https://huggingface.co/openbmb/MiniCPM5-1B) by OpenBMB, fine-tuned for agentic tool/function calling and refined with GRPO reinforcement learning.



## Limitations