初始化项目,由ModelHub XC社区提供模型

Model: fableforge-ai/ReasonCritic-7B
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-07-05 18:19:16 +08:00
commit 804ec24108
19 changed files with 870 additions and 0 deletions

44
.gitattributes vendored Normal file
View File

@@ -0,0 +1,44 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.ftz filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.h5 filter=lfs diff=lfs merge=lfs -text
*.joblib filter=lfs diff=lfs merge=lfs -text
*.lfs.* filter=lfs diff=lfs merge=lfs -text
*.mlmodel filter=lfs diff=lfs merge=lfs -text
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack filter=lfs diff=lfs merge=lfs -text
*.npy filter=lfs diff=lfs merge=lfs -text
*.npz filter=lfs diff=lfs merge=lfs -text
*.onnx filter=lfs diff=lfs merge=lfs -text
*.ot filter=lfs diff=lfs merge=lfs -text
*.parquet filter=lfs diff=lfs merge=lfs -text
*.pb filter=lfs diff=lfs merge=lfs -text
*.pickle filter=lfs diff=lfs merge=lfs -text
*.pkl filter=lfs diff=lfs merge=lfs -text
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.tar.* filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.tflite filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.wasm filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
tokenizer.json filter=lfs diff=lfs merge=lfs -text
qwen3-8b.F16.gguf filter=lfs diff=lfs merge=lfs -text
qwen3-8b.Q2_K.gguf filter=lfs diff=lfs merge=lfs -text
qwen3-8b.Q3_K_M.gguf filter=lfs diff=lfs merge=lfs -text
qwen3-8b.Q4_0.gguf filter=lfs diff=lfs merge=lfs -text
qwen3-8b.Q4_K_M.gguf filter=lfs diff=lfs merge=lfs -text
qwen3-8b.Q5_K_M.gguf filter=lfs diff=lfs merge=lfs -text
qwen3-8b.Q6_K.gguf filter=lfs diff=lfs merge=lfs -text
qwen3-8b.Q8_0.gguf filter=lfs diff=lfs merge=lfs -text

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2025 FableForge Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

132
README.md Normal file
View File

@@ -0,0 +1,132 @@
---
license: apache-2.0
language:
- en
base_model: unsloth/Qwen3-8B
base_model_relation: finetune
tags:
- reasoning
- critic
- verification
- uncensored
- qlora
- agent
- fableforge
- edge
- qwen3
- 8b
library_name: transformers
inference: true
pipeline_tag: text-generation
---
# ReasonCritic-7B V2 — The Uncensored Reasoning Model
<div align="center">
**V2: 40% lower loss · 27K real training examples · Zero refusals · Runs on phones**
[![Ollama](https://img.shields.io/badge/Ollama-FableForge--AI%2Freasoncritic-black?logo=ollama)](https://ollama.com/FableForge-AI/reasoncritic)
[![HuggingFace](https://img.shields.io/badge/HuggingFace-fableforge--ai%2FReasonCritic--7B-FFD21E?logo=huggingface)](https://huggingface.co/fableforge-ai/ReasonCritic-7B)
[![Refusals](https://img.shields.io/badge/refusals-0%25-brightgreen)](#benchmark-results)
[![Version](https://img.shields.io/badge/version-V2-blue)](#v2-improvements)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](#license)
[![Size](https://img.shields.io/badge/size-7B-purple)](#available-quantizations)
</div>
---
## V2 Improvements (July 2026)
| Metric | V1 | V2 | Improvement |
|--------|----|----|-------------|
| Loss | 1.277 | **0.761** | **40% lower** |
| Training data | 7,686 | **27,699** | 3.6x more |
| Data sources | Agent traces only | 6 sources | 6x diversity |
| Training time | 2.5h | 8h | 3.2x longer |
## Quick Start
### Ollama (8 sizes)
```bash
ollama run FableForge-AI/reasoncritic:q4_k_m # Recommended
ollama run FableForge-AI/reasoncritic:f16 # Full precision
```
### llama.cpp
```bash
./llama-cli --model qwen3-8b.Q4_K_M.gguf --prompt "Your prompt"
```
---
## Available Quantizations
| File | Size | Best For |
|------|------|----------|
| `Q2_K.gguf` | 3.1 GB | Phones, Pi, 4GB RAM |
| `Q3_K_M.gguf` | 3.9 GB | Low-end phones, IoT |
| `Q4_0.gguf` | 4.5 GB | Fast basic inference |
| **`Q4_K_M.gguf`** | **4.8 GB** | **Recommended** |
| `Q5_K_M.gguf` | 5.6 GB | High quality |
| `Q6_K.gguf` | 6.4 GB | Pro quality |
| `Q8_0.gguf` | 8.3 GB | Near-lossless |
| `F16.gguf` | 13.8 GB | Full precision |
## Benchmark Results
| Test | Score | Max |
|------|-------|-----|
| Censorship Resistance | **5** | 5 |
| Code Generation | **3** | 3 |
| Reasoning | **4** | 5 |
| Tool Use | **4** | 5 |
| Narrative | **5** | 5 |
| **Total** | **21/23 (91%)** | |
Zero refusals across all prompts.
## Hardware Requirements
| Hardware | Best Quant |
|----------|------------|
| Phone (4GB RAM) | Q2_K |
| Raspberry Pi | Q2_K |
| Laptop (8GB RAM) | Q4_K_M |
| Gaming PC (12GB VRAM) | Q5_K_M |
| Mac M1/M2 (16GB) | Q4_K_M |
| Server (32GB+) | Q8_0 / F16 |
## Training Details
| Parameter | Value |
|-----------|-------|
| Base Model | Qwen3-8B (4-bit QLoRA) |
| LoRA Rank | 16 (alpha=16) |
| Trainable Params | 43.6M (0.53% of 8.2B) |
| Training Data | 27,699 real examples |
| Epochs | 3 |
| Final Loss | 0.761 |
| Hardware | NVIDIA A40 (46GB) |
## FableForge Ecosystem
| Model | Size | Best For |
|-------|------|----------|
| ShellWhisperer | 986 MB | Shell commands, ultra-fast |
| **ReasonCritic-7B** ⭐ | **3.1-16 GB** | **Reasoning + zero refusals** |
| NEXUS-Coder | 488 MB - 2.9 GB | Domain coding |
| NEXUS-Security | 488 MB - 2.9 GB | Cybersecurity |
| NEXUS-Medical | 488 MB - 2.9 GB | Medical |
| NEXUS-Legal | 488 MB - 2.9 GB | Legal |
| NEXUS-Finance | 488 MB - 2.9 GB | Finance |
| NEXUS-Science | 488 MB - 2.9 GB | Science |
## License
Apache 2.0 — commercial use allowed.
---
*Part of the [FableForge AI](https://huggingface.co/fableforge-ai) ecosystem. Zero Limits. Pure Intelligence.*

52
adapter_config.json Normal file
View File

@@ -0,0 +1,52 @@
{
"alora_invocation_tokens": null,
"alpha_pattern": {},
"arrow_config": null,
"auto_mapping": {
"base_model_class": "Qwen3ForCausalLM",
"parent_library": "transformers.models.qwen3.modeling_qwen3",
"unsloth_fixed": true
},
"base_model_name_or_path": "unsloth/qwen3-8b-unsloth-bnb-4bit",
"bias": "none",
"corda_config": null,
"ensure_weight_tying": false,
"eva_config": null,
"exclude_modules": null,
"fan_in_fan_out": false,
"inference_mode": true,
"init_lora_weights": true,
"layer_replication": null,
"layers_pattern": null,
"layers_to_transform": null,
"loftq_config": {},
"lora_alpha": 16,
"lora_bias": false,
"lora_dropout": 0,
"lora_ga_config": null,
"megatron_config": null,
"megatron_core": "megatron.core",
"modules_to_save": null,
"peft_type": "LORA",
"peft_version": "0.19.1",
"qalora_group_size": 16,
"r": 16,
"rank_pattern": {},
"revision": null,
"target_modules": [
"gate_proj",
"o_proj",
"down_proj",
"k_proj",
"q_proj",
"up_proj",
"v_proj"
],
"target_parameters": null,
"task_type": "CAUSAL_LM",
"trainable_token_indices": null,
"use_bdlora": null,
"use_dora": false,
"use_qalora": false,
"use_rslora": false
}

97
chat_template.jinja Normal file
View File

@@ -0,0 +1,97 @@
{%- if tools %}
{{- '<|im_start|>system\n' }}
{%- if messages[0].role == 'system' %}
{{- messages[0].content + '\n\n' }}
{%- endif %}
{{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within <tools></tools> XML tags:\n<tools>" }}
{%- for tool in tools %}
{{- "\n" }}
{{- tool | tojson }}
{%- endfor %}
{{- "\n</tools>\n\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\n<tool_call>\n{\"name\": <function-name>, \"arguments\": <args-json-object>}\n</tool_call><|im_end|>\n" }}
{%- else %}
{%- if messages[0].role == 'system' %}
{{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}
{%- for forward_message in messages %}
{%- set index = (messages|length - 1) - loop.index0 %}
{%- set message = messages[index] %}
{%- set tool_start = '<tool_response>' %}
{%- set tool_start_length = tool_start|length %}
{%- set start_of_message = message.content[:tool_start_length] %}
{%- set tool_end = '</tool_response>' %}
{%- set tool_end_length = tool_end|length %}
{%- set start_pos = (message.content|length) - tool_end_length %}
{%- if start_pos < 0 %}
{%- set start_pos = 0 %}
{%- endif %}
{%- set end_of_message = message.content[start_pos:] %}
{%- if ns.multi_step_tool and message.role == "user" and not(start_of_message == tool_start and end_of_message == tool_end) %}
{%- set ns.multi_step_tool = false %}
{%- set ns.last_query_index = index %}
{%- endif %}
{%- endfor %}
{%- for message in messages %}
{%- if (message.role == "user") or (message.role == "system" and not loop.first) %}
{{- '<|im_start|>' + message.role + '\n' + message.content + '<|im_end|>' + '\n' }}
{%- elif message.role == "assistant" %}
{%- set content = message.content %}
{%- set reasoning_content = '' %}
{%- if message.reasoning_content is defined and message.reasoning_content is not none %}
{%- set reasoning_content = message.reasoning_content %}
{%- else %}
{%- if '</think>' in message.content %}
{%- set content = (message.content.split('</think>')|last).lstrip('\n') %}
{%- set reasoning_content = (message.content.split('</think>')|first).rstrip('\n') %}
{%- set reasoning_content = (reasoning_content.split('<think>')|last).lstrip('\n') %}
{%- endif %}
{%- endif %}
{%- if loop.index0 > ns.last_query_index %}
{%- if loop.last or (not loop.last and reasoning_content) %}
{{- '<|im_start|>' + message.role + '\n<think>\n' + reasoning_content.strip('\n') + '\n</think>\n\n' + content.lstrip('\n') }}
{%- else %}
{{- '<|im_start|>' + message.role + '\n' + content }}
{%- endif %}
{%- else %}
{{- '<|im_start|>' + message.role + '\n' + content }}
{%- endif %}
{%- if message.tool_calls %}
{%- for tool_call in message.tool_calls %}
{%- if (loop.first and content) or (not loop.first) %}
{{- '\n' }}
{%- endif %}
{%- if tool_call.function %}
{%- set tool_call = tool_call.function %}
{%- endif %}
{{- '<tool_call>\n{"name": "' }}
{{- tool_call.name }}
{{- '", "arguments": ' }}
{%- if tool_call.arguments is string %}
{{- tool_call.arguments }}
{%- else %}
{{- tool_call.arguments | tojson }}
{%- endif %}
{{- '}\n</tool_call>' }}
{%- endfor %}
{%- endif %}
{{- '<|im_end|>\n' }}
{%- elif message.role == "tool" %}
{%- if loop.first or (messages[loop.index0 - 1].role != "tool") %}
{{- '<|im_start|>user' }}
{%- endif %}
{{- '\n<tool_response>\n' }}
{{- message.content }}
{{- '\n</tool_response>' }}
{%- if loop.last or (messages[loop.index0 + 1].role != "tool") %}
{{- '<|im_end|>\n' }}
{%- endif %}
{%- endif %}
{%- endfor %}
{%- if add_generation_prompt %}
{{- '<|im_start|>assistant\n' }}
{%- if enable_thinking is defined and enable_thinking is false %}
{{- '<think>\n\n</think>\n\n' }}
{%- endif %}
{%- endif %}

72
config.json Normal file
View File

@@ -0,0 +1,72 @@
{
"architectures": [
"Qwen3ForCausalLM"
],
"attention_bias": false,
"attention_dropout": 0.0,
"bos_token_id": null,
"torch_dtype": "bfloat16",
"eos_token_id": 151645,
"head_dim": 128,
"hidden_act": "silu",
"hidden_size": 4096,
"initializer_range": 0.02,
"intermediate_size": 12288,
"layer_types": [
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention",
"full_attention"
],
"max_position_embeddings": 40960,
"max_window_layers": 36,
"model_type": "qwen3",
"num_attention_heads": 32,
"num_hidden_layers": 36,
"num_key_value_heads": 8,
"pad_token_id": 151669,
"rms_norm_eps": 1e-06,
"rope_parameters": {
"rope_theta": 1000000,
"rope_type": "default"
},
"sliding_window": null,
"tie_word_embeddings": false,
"unsloth_fixed": true,
"unsloth_version": "2026.6.9",
"use_cache": true,
"use_sliding_window": false,
"vocab_size": 151936
}

13
generation_config.json Normal file
View File

@@ -0,0 +1,13 @@
{
"do_sample": true,
"eos_token_id": [
151645,
151643
],
"max_length": 40960,
"pad_token_id": 151669,
"temperature": 0.6,
"top_k": 20,
"top_p": 0.95,
"transformers_version": "5.5.0"
}

3
qwen3-8b.F16.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4819a085999bf3d9b1ea1a36d19563d1c55434de5f6fbeeb9b9788b0b16cbb26
size 14428405760

3
qwen3-8b.Q2_K.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9dc3c42e72e27b3c0f1a9b738ead6bcb4923c54937b34fd77218da489d1dba06
size 3281733152

3
qwen3-8b.Q3_K_M.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:836deb230c1a389278c1d97a1eaf6ac6ea2c1aa21067e8d5ee46fc4ff0c2374a
size 4124161568

3
qwen3-8b.Q4_0.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f290682a7be04e8f6d423763b9a5590f9c879967a092e67bc52db32596810a27
size 4774749728

3
qwen3-8b.Q4_K_M.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:331c47ab58ae47ccc024891579ab57b58ad06dbe4a5aefbaebf9b1de63c5cba8
size 5027784224

3
qwen3-8b.Q5_K_M.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:45b11c0db24a306b83770706e462057d58c8c1dbabaa28034bbc2d348d6926e3
size 5851112992

3
qwen3-8b.Q6_K.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2352b36314842e80c139b2b183f21dda0e5f53de0dbff4ebf41e5d2d34c4a6f9
size 6725899808

3
qwen3-8b.Q8_0.gguf Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:f9471d6c276e243d929f141642bdf305a3ccd9e4edf3fec05bf71b271de8e6f5
size 8709518880

169
rc7b_model_card.md Normal file
View File

@@ -0,0 +1,169 @@
---
license: apache-2.0
language:
- en
base_model: unsloth/Qwen3-8B
tags:
- reasoning
- critic
- verification
- uncensored
- qlora
- unsloth
- agent
- fableforge
pipeline_tag: text-generation
---
# ReasonCritic-7B — Verification & Critique Model
<p align="center">
<strong>A 7B parameter reasoning critic model that evaluates, scores, and improves logical reasoning chains.</strong>
</p>
---
## Overview
ReasonCritic-7B is a fine-tuned Qwen3-8B model specialized in **reasoning verification** — it evaluates logical chains, identifies fallacies, scores confidence, and produces structured PASS/FAIL verdicts with actionable suggestions.
Trained on **7,686 examples** distilled from 243 real Claude Code agent sessions, covering code generation, chain-of-thought reasoning, narrative quality, tool-use correctness, and uncensored response behavior.
Part of the **FableForge ecosystem** — open-source models for building reliable AI agents.
## Training Details
| Parameter | Value |
|-----------|-------|
| Base Model | `unsloth/Qwen3-8B` (4-bit) |
| Method | QLoRA (Unsloth + SFTTrainer) |
| LoRA Rank | 16 (α=16, dropout=0) |
| Target Modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Trainable Params | 43.6M (0.53% of 8.2B) |
| Training Data | 7,686 examples (3 epochs) |
| Max Seq Length | 4096 |
| Batch Size | 8 × 2 (effective 16) |
| Learning Rate | 2e-4 (linear, warmup 3%) |
| Optimizer | adamw_8bit |
| Precision | bf16 |
| Hardware | NVIDIA A40 (46GB VRAM) |
| Training Time | ~2.5 hours |
| Final Loss | 2.181 → 1.277 |
## Quantization Options
All quantizations use llama.cpp GGUF format. Pick based on your hardware:
| Quant | Size | RAM Needed | Best For |
|-------|------|-----------|----------|
| Q2_K | ~3.0 GB | ~4 GB | Phones, Raspberry Pi, ultra-low-end |
| Q3_K_M | ~3.5 GB | ~5 GB | Low-end phones, IoT devices |
| Q4_0 | ~4.3 GB | ~6 GB | Fast inference, older GPUs |
| **Q4_K_M** | **~4.7 GB** | **~6 GB** | **Balanced (recommended)** |
| Q5_K_M | ~5.5 GB | ~7 GB | Good quality, mid-range |
| Q6_K | ~6.5 GB | ~8 GB | High quality |
| Q8_0 | ~8.5 GB | ~10 GB | Very high quality |
| F16 | ~16 GB | ~18 GB | Full precision |
### Phone/Mobile Recommendations
- **Android (6GB+ RAM)**: Q4_K_M or Q3_K_M
- **Android (4GB RAM)**: Q2_K
- **iPhone (6GB+)**: Q4_K_M via MLC/MLX
- **Raspberry Pi 8GB**: Q3_K_M
## Quick Start
### Ollama
```bash
# Recommended (Q4_K_M)
ollama run fableforge-ai/reasoncritic-7b
# Specific quant
ollama run fableforge-ai/reasoncritic-7b:q2_k
ollama run fableforge-ai/reasoncritic-7b:q3_k_m
ollama run fableforge-ai/reasoncritic-7b:q8_0
```
### llama.cpp
```bash
./llama-cli \
--model reasoncritic-7b.Q4_K_M.gguf \
--prompt "Evaluate this reasoning: All birds fly. Penguins are birds. Therefore penguins fly." \
--n-predict 512 \
--temp 0.3
```
### Python (transformers)
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("fableforge-ai/ReasonCritic-7B")
tokenizer = AutoTokenizer.from_pretrained("fableforge-ai/ReasonCritic-7B")
messages = [{"role": "user", "content": "Verify: If A>B and B>C, then A>C. Is this valid?"}]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt")
output = model.generate(inputs, max_new_tokens=512)
print(tokenizer.decode(output[0]))
```
## System Prompt
```
You are ReasonCritic-7B, a 7B parameter reasoning critic model. You evaluate, score, and improve logical reasoning chains. You identify fallacies, unsupported claims, and logical gaps in agent outputs. You produce structured verification results with PASS/FAIL verdicts, confidence scores, issue lists, and actionable suggestions. You are part of the FableForge ecosystem — open-source projects for building reliable AI agents.
```
## Capabilities
- **Logical Verification**: Identifies fallacies, circular reasoning, and unsupported claims
- **Confidence Scoring**: Produces 0-1 confidence scores with justification
- **Structured Output**: PASS/FAIL verdicts with issue lists and suggestions
- **Code Review**: Evaluates code correctness, edge cases, and best practices
- **Chain-of-Thought Critique**: Analyzes multi-step reasoning for gaps
- **Uncensored**: Trained to not refuse legitimate requests (0% refusal rate in testing)
## Benchmark Results
| Category | Score | Refusal Rate |
|----------|-------|-------------|
| Code Gen | 0.74 | 0% |
| CoT Reasoning | 0.75 | 0% |
| Narrative | 0.85 | 0% |
| Tool Use | 0.90 | 0% |
| Refusal Test | 1.00 | 0% |
| **Overall** | **0.84** | **0%** |
## Intended Use
- Agent reasoning verification pipelines
- Automated code review systems
- LLM output quality gating
- Educational reasoning tools
- Research on reasoning chain analysis
## Limitations
- 7B size limits complex reasoning depth
- Not a replacement for human review in critical systems
- Uncensored training means it will not refuse harmful requests — use with appropriate guardrails
- May hallucinate in domains outside training data
## Citation
```bibtex
@misc{reasoncritic-7b,
title={ReasonCritic-7B: A Reasoning Verification and Critique Model},
author={FableForge AI},
year={2026},
url={https://huggingface.co/fableforge-ai/ReasonCritic-7B}
}
```
## License
Apache 2.0 — commercial use allowed.
---
<p align="center">
Part of the <a href="https://github.com/fableforge-ai">FableForge</a> ecosystem — open-source models for reliable AI agents.
</p>

9
special_tokens_map.json Normal file
View File

@@ -0,0 +1,9 @@
{
"bos_token": "<s>",
"eos_token": "</s>",
"unk_token": "<unk>",
"pad_token": "<pad>",
"sep_token": "</s>",
"cls_token": "<s>",
"mask_token": "<mask>"
}

3
tokenizer.json Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d7430e9138b76e93fb6f93462394d236b411111aef53cb421ba97d2691040cca
size 11423114

234
tokenizer_config.json Normal file
View File

@@ -0,0 +1,234 @@
{
"add_prefix_space": false,
"backend": "tokenizers",
"bos_token": null,
"clean_up_tokenization_spaces": false,
"eos_token": "<|im_end|>",
"errors": "replace",
"is_local": false,
"model_max_length": 40960,
"pad_token": "<|PAD_TOKEN|>",
"padding_side": "left",
"split_special_tokens": false,
"tokenizer_class": "Qwen2Tokenizer",
"unk_token": null,
"added_tokens_decoder": {
"151643": {
"content": "<|endoftext|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151644": {
"content": "<|im_start|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151645": {
"content": "<|im_end|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151646": {
"content": "<|object_ref_start|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151647": {
"content": "<|object_ref_end|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151648": {
"content": "<|box_start|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151649": {
"content": "<|box_end|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151650": {
"content": "<|quad_start|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151651": {
"content": "<|quad_end|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151652": {
"content": "<|vision_start|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151653": {
"content": "<|vision_end|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151654": {
"content": "<|vision_pad|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151655": {
"content": "<|image_pad|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151656": {
"content": "<|video_pad|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
},
"151657": {
"content": "<tool_call>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151658": {
"content": "</tool_call>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151659": {
"content": "<|fim_prefix|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151660": {
"content": "<|fim_middle|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151661": {
"content": "<|fim_suffix|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151662": {
"content": "<|fim_pad|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151663": {
"content": "<|repo_name|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151664": {
"content": "<|file_sep|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151665": {
"content": "<tool_response>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151666": {
"content": "</tool_response>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151667": {
"content": "<think>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151668": {
"content": "</think>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": false
},
"151669": {
"content": "<|PAD_TOKEN|>",
"single_word": false,
"lstrip": false,
"rstrip": false,
"normalized": false,
"special": true
}
},
"chat_template": "{%- if tools %}\n {{- '<|im_start|>system\\n' }}\n {%- if messages[0].role == 'system' %}\n {{- messages[0].content + '\\n\\n' }}\n {%- endif %}\n {{- \"# Tools\\n\\nYou may call one or more functions to assist with the user query.\\n\\nYou are provided with function signatures within <tools></tools> XML tags:\\n<tools>\" }}\n {%- for tool in tools %}\n {{- \"\\n\" }}\n {{- tool | tojson }}\n {%- endfor %}\n {{- \"\\n</tools>\\n\\nFor each function call, return a json object with function name and arguments within <tool_call></tool_call> XML tags:\\n<tool_call>\\n{\\\"name\\\": <function-name>, \\\"arguments\\\": <args-json-object>}\\n</tool_call><|im_end|>\\n\" }}\n{%- else %}\n {%- if messages[0].role == 'system' %}\n {{- '<|im_start|>system\\n' + messages[0].content + '<|im_end|>\\n' }}\n {%- endif %}\n{%- endif %}\n{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %}\n{%- for forward_message in messages %}\n {%- set index = (messages|length - 1) - loop.index0 %}\n {%- set message = messages[index] %}\n {%- set tool_start = '<tool_response>' %}\n {%- set tool_start_length = tool_start|length %}\n {%- set start_of_message = message.content[:tool_start_length] %}\n {%- set tool_end = '</tool_response>' %}\n {%- set tool_end_length = tool_end|length %}\n {%- set start_pos = (message.content|length) - tool_end_length %}\n {%- if start_pos < 0 %}\n {%- set start_pos = 0 %}\n {%- endif %}\n {%- set end_of_message = message.content[start_pos:] %}\n {%- if ns.multi_step_tool and message.role == \"user\" and not(start_of_message == tool_start and end_of_message == tool_end) %}\n {%- set ns.multi_step_tool = false %}\n {%- set ns.last_query_index = index %}\n {%- endif %}\n{%- endfor %}\n{%- for message in messages %}\n {%- if (message.role == \"user\") or (message.role == \"system\" and not loop.first) %}\n {{- '<|im_start|>' + message.role + '\\n' + message.content + '<|im_end|>' + '\\n' }}\n {%- elif message.role == \"assistant\" %}\n {%- set content = message.content %}\n {%- set reasoning_content = '' %}\n {%- if message.reasoning_content is defined and message.reasoning_content is not none %}\n {%- set reasoning_content = message.reasoning_content %}\n {%- else %}\n {%- if '</think>' in message.content %}\n {%- set content = (message.content.split('</think>')|last).lstrip('\\n') %}\n {%- set reasoning_content = (message.content.split('</think>')|first).rstrip('\\n') %}\n {%- set reasoning_content = (reasoning_content.split('<think>')|last).lstrip('\\n') %}\n {%- endif %}\n {%- endif %}\n {%- if loop.index0 > ns.last_query_index %}\n {%- if loop.last or (not loop.last and reasoning_content) %}\n {{- '<|im_start|>' + message.role + '\\n<think>\\n' + reasoning_content.strip('\\n') + '\\n</think>\\n\\n' + content.lstrip('\\n') }}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- else %}\n {{- '<|im_start|>' + message.role + '\\n' + content }}\n {%- endif %}\n {%- if message.tool_calls %}\n {%- for tool_call in message.tool_calls %}\n {%- if (loop.first and content) or (not loop.first) %}\n {{- '\\n' }}\n {%- endif %}\n {%- if tool_call.function %}\n {%- set tool_call = tool_call.function %}\n {%- endif %}\n {{- '<tool_call>\\n{\"name\": \"' }}\n {{- tool_call.name }}\n {{- '\", \"arguments\": ' }}\n {%- if tool_call.arguments is string %}\n {{- tool_call.arguments }}\n {%- else %}\n {{- tool_call.arguments | tojson }}\n {%- endif %}\n {{- '}\\n</tool_call>' }}\n {%- endfor %}\n {%- endif %}\n {{- '<|im_end|>\\n' }}\n {%- elif message.role == \"tool\" %}\n {%- if loop.first or (messages[loop.index0 - 1].role != \"tool\") %}\n {{- '<|im_start|>user' }}\n {%- endif %}\n {{- '\\n<tool_response>\\n' }}\n {{- message.content }}\n {{- '\\n</tool_response>' }}\n {%- if loop.last or (messages[loop.index0 + 1].role != \"tool\") %}\n {{- '<|im_end|>\\n' }}\n {%- endif %}\n {%- endif %}\n{%- endfor %}\n{%- if add_generation_prompt %}\n {{- '<|im_start|>assistant\\n' }}\n {%- if enable_thinking is defined and enable_thinking is false %}\n {{- '<think>\\n\\n</think>\\n\\n' }}\n {%- endif %}\n{%- endif %}"
}