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 and the original abliteration writeup for the mechanism.
Abliteration parameters
Table with columns: Parameter, Value| 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 |
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
Table with columns: File, Format, Size| 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 |
GGUF quants are produced with 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
# llama.cpp
llama serve -hf saidutta69/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-heretic
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 license from the base model.
Base model: GnLOLot/MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking
MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking
GGUF quantizations for local deployment: MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking-GGUF
中文说明
MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking is a compact 1B Thinking language model built on 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 (V1)
For llama.cpp / Ollama / LM Studio deployment, see the GGUF repository.
Overview
Table with columns: Item, Detail| Item | Detail |
|---|
| Base model | 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
Table with columns: Model, BFCL non_live, BFCL live, 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
Table with columns: Domain, MiniCPM5-1B (Base), MiniCPM5-1B-Claude-Opus-Fable5-V2-Thinking| 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
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:
Table with columns: Mode, Params| 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.
Acknowledgements