---
license: apache-2.0
license_link: https://huggingface.co/openbmb/MiniCPM5-1B/blob/main/LICENSE
language:
- en
- zh
library_name: transformers
pipeline_tag: text-generation
base_model:
- openbmb/MiniCPM5-1B
- GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking
base_model_relation: finetune
tags:
- minicpm
- minicpm5
- llama
- heretic
- uncensored
- decensored
- abliterated
- reproducible
- thinking
- fable5
- tool-calling
- function-calling
- coding
- instruction-following
- conversational
- text-generation-inference
- on-device
- edge-ai
---
# MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-heretic

A decensored variant of [GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking](https://huggingface.co/GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking), produced with [Heretic](https://github.com/p-e-w/heretic) v1.4.0 (directional ablation / "abliteration"). The base model is itself a V2 fine-tune of [openbmb/MiniCPM5-1B](https://huggingface.co/openbmb/MiniCPM5-1B) on Fable 5 traces, focused on tool/function calling, coding, and instruction-following. Refusal behavior is suppressed via targeted weight edits to the attention output and MLP down-projections rather than fine-tuning, so the base model's knowledge and capabilities are left largely intact.

**Who this is for:** developers who want a tiny (1B) Thinking model with strong tool-calling and coding ability that answers directly instead of refusing — for local agents, roleplay, research on alignment/refusal mechanics, or any use case blocked by RLHF-era over-refusal. Runs comfortably on consumer GPUs and is small enough for on-device / edge deployment, while keeping MiniCPM5's 128K context and native Think / No-Think chat modes.

> [!TIP]
> **This model is reproducible!**
>
> See the [README](reproduce/README.md) in the `reproduce` directory for the exact config, full parameter/metric dump, evaluation transcripts, and SHA256 checksums.

## Why abliteration instead of fine-tuning

Fine-tuning a "helpful" persona on top of RLHF'd refusals fights the base model's training and tends to degrade coherence. Abliteration instead finds and edits the specific weight directions responsible for refusal, leaving the rest of the network (and its capabilities) untouched. See the [Heretic repo](https://github.com/p-e-w/heretic) and the [original abliteration writeup](https://huggingface.co/blog/mlabonne/abliteration) for the mechanism.

## Abliteration parameters

| Parameter | Value |
| :-------- | :---: |
| **direction_index** | 12.95 |
| **attn.o_proj.max_weight** | 1.14 |
| **attn.o_proj.max_weight_position** | 14.01 |
| **attn.o_proj.min_weight** | 0.99 |
| **attn.o_proj.min_weight_distance** | 12.84 |
| **mlp.down_proj.max_weight** | 0.98 |
| **mlp.down_proj.max_weight_position** | 14.20 |
| **mlp.down_proj.min_weight** | 0.39 |
| **mlp.down_proj.min_weight_distance** | 9.07 |

## Performance

| Metric | This model | Original model ([GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking](https://huggingface.co/GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking)) |
| :----- | :--------: | :---------------------------: |
| **KL divergence** | 0.0232 | 0 *(by definition)* |
| **Refusals** | 3/100 | 93/100 |

KL divergence of 0.0232 is very low — the edit is narrow and targeted rather than a broad perturbation. Refusals dropped from 93 to 3 out of 100 adversarial prompts while preserving the base model's tool-calling, coding, and thinking abilities.

> Made with ❤️ by **RACER IS OP** — follow for more uncensored models

## Files

| File | Format | Size |
|---|---|---|
| `model.safetensors` | BF16 | ~2.2 GB |
| `MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-heretic-Q8_0.gguf` | GGUF, Q8_0 | 1.10 GB |
| `MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-heretic-Q5_K_M.gguf` | GGUF, Q5_K_M | 751 MB |
| `MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-heretic-Q4_K_M.gguf` | GGUF, Q4_K_M | 656 MB |
| `reproduce/` | Config + eval transcripts + checksums | — |

GGUF quants are produced with [llama.cpp](https://github.com/ggml-org/llama.cpp) (MiniCPM5 uses the standard `LlamaForCausalLM` architecture, so it loads in llama.cpp / Ollama / LM Studio / Jan directly). Run `llama serve -hf saidutta69/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-heretic` to pull the default quant.

## Quickstart

```bash
# llama.cpp
llama serve -hf saidutta69/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-heretic
```

```python
# transformers
from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "saidutta69/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-heretic"
tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    trust_remote_code=True,
    torch_dtype="auto",
    device_map="auto",
)

messages = [{"role": "user", "content": "Write a Python function to merge two sorted lists."}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=False)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
```

Also runnable via Ollama, LM Studio, Jan, vLLM, SGLang — see the "Use this model" widget above for copy-paste commands. For tool/function calling, **SGLang** is the recommended backend; this model emits XML-style tool calls that SGLang's built-in `minicpm5` parser converts to OpenAI-compatible `tool_calls`.

## Responsible use

Refusal suppression is deliberate and works as intended: this model will comply with requests the base model would refuse, including some it shouldn't. There is no safety filtering layered on top. You are responsible for how you deploy it — don't put this behind an unmoderated public-facing endpoint serving third parties. It inherits this fine-tune's (and MiniCPM5-1B's) factual limitations and biases; abliteration removes refusal directions, it doesn't add capability or judgment.

## License

Inherits the [Apache 2.0](https://github.com/OpenBMB/MiniCPM/blob/main/LICENSE) license from the base model.

## Related

- [MiniCPM5-1B-heretic](https://huggingface.co/saidutta69/MiniCPM5-1B-heretic)
- [Qwen2.5-0.5B-Instruct-heretic](https://huggingface.co/saidutta69/Qwen2.5-0.5B-Instruct-heretic)
- [Qwen2.5-1.5B-Instruct-heretic](https://huggingface.co/saidutta69/Qwen2.5-1.5B-Instruct-heretic)
- [Qwen2.5-3B-Instruct-heretic](https://huggingface.co/saidutta69/Qwen2.5-3B-Instruct-heretic)
- [Qwen2.5-Coder-3B-Instruct-heretic](https://huggingface.co/saidutta69/Qwen2.5-Coder-3B-Instruct-heretic)
- [Qwen3-0.6B-heretic](https://huggingface.co/saidutta69/Qwen3-0.6B-heretic)
- [Llama-3.2-1B-Instruct-heretic](https://huggingface.co/saidutta69/Llama-3.2-1B-Instruct-heretic)

---

# Base model: GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking

<details>
<summary>Original model card (click to expand)</summary>

<p align="center">
  <img src="assets/banner.png" alt="MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking" width="100%"/>
</p>

# MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking

GGUF quantizations for local deployment: **[MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-GGUF](https://huggingface.co/GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-GGUF)**

[中文说明](./README-cn.md)

**MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking** is a compact 1B **Thinking** language model built on [openbmb/MiniCPM5-1B](https://huggingface.co/openbmb/MiniCPM5-1B). Compared with V1, this V2 release is further fine-tuned on **Fable 5** data with a stronger focus on **tool calling / function calling**, while also improving **coding** and **instruction-following**. It keeps MiniCPM5's native Thinking chat template and XML tool-call format.

Previous version: **[MiniCPM5-1B-Claude-Opus-Fable5-Thinking](https://huggingface.co/GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-Thinking)** (V1)

For llama.cpp / Ollama / LM Studio deployment, see the **[GGUF repository](https://huggingface.co/GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-GGUF)**.

---

## Overview

| Item | Detail |
|---|---|
| **Base model** | [openbmb/MiniCPM5-1B](https://huggingface.co/openbmb/MiniCPM5-1B) (1B dense Llama architecture) |
| **Post-training** | Fable 5 traces (V2) |
| **Key gains vs V1 / base** | Stronger **tool calling**, plus improved coding and instruction following |
| **Chat format** | MiniCPM5 native Thinking template with optional chain-of-thought blocks |
| **Context length** | **128K** (`max_position_embeddings = 131072`) |
| **Deployment** | Single-GPU friendly; suitable for edge / local use |

---

## Capabilities

- **Tool calling (enhanced in V2)** — more reliable XML / function-calling style tool use on top of MiniCPM5's native format
- **Coding** — code generation, debugging, and software-engineering-style tasks
- **Instruction following** — more reliable adherence to user prompts and structured constraints
- **Thinking mode** — chain-of-thought reasoning via the MiniCPM5 chat template
- **Long context** — up to **128K tokens** (131,072 tokens per `config.json`)

---

## Benchmark

### BFCL + API-Bank

| Model | BFCL non_live | BFCL live | API-Bank |
|---|---|---|---|
| MiniCPM5-1B (Base) | 41.51% | 60.24% | 7.30% |
| MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking | 43.06% | 63.33% | 22.10% |

### Tau-Bench

| Domain | MiniCPM5-1B (Base) | MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking |
|---|---|---|
| Airline | 0.34 (17/50) | 0.36 (18/50) |
| Retail | 0.052 (6/115) | 0.070 (8/115) |

---

## Quick start

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

model_id = "GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking"

tokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    trust_remote_code=True,
    torch_dtype=torch.bfloat16,
    device_map="auto",
)

messages = [{"role": "user", "content": "Write a Python function to merge two sorted lists."}]
text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=False)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
```

---

## Sampling recommendations

Generation defaults are inherited from **[MiniCPM5-1B](https://huggingface.co/openbmb/MiniCPM5-1B)**:

| Mode | Params |
|---|---|
| **Think** (default) | `temperature=0.9, top_p=0.95` |
| **No Think** | `temperature=0.7, top_p=0.95`, `enable_thinking=False` |

---

## Limitations

- **Thinking outputs** — the model may emit reasoning blocks before the final answer; downstream apps can strip them before display
- **1B scale** — optimized for lightweight local deployment, not frontier-scale general reasoning

---

## Provenance & licensing

Released under **Apache-2.0**, inherited from [MiniCPM5-1B](https://huggingface.co/openbmb/MiniCPM5-1B).

## Acknowledgements

- Base model: [OpenBMB / MiniCPM5-1B](https://huggingface.co/openbmb/MiniCPM5-1B)
- GGUF conversion: [llama.cpp](https://github.com/ggml-org/llama.cpp)
</details>
