Nanbeige Logo

1. Introduction

Nanbeige4.2-3B is a compact agentic model built on Nanbeige4.2-3B-Base, designed to combine strong agentic behavior with broad reasoning and alignment capabilities. Its Looped Transformer architecture reuses the transformer layers to increase model capacity without adding parameters. With only 3B non-embedding parameters, the model delivers solid performance on general-agent and code-agent tasks.

During supervised fine-tuning (SFT), we expand the diversity of training environments through real-world environment integrations and large-scale environment synthesis. We further diversify task types, task assets, and the agentic scaffolds used for each task. To ensure training data quality, we apply filtering at both the trajectory and turn levels, combining test-case-based validation with rubric-based assessment. During reinforcement learning (RL), we combine outcome and process rewards to improve training stability for the compact model.

Key strengths include:

  • Solid Agentic Behavior at the 3B Scale: Across complex tool-use, office-agent, and code-agent benchmarks, Nanbeige4.2-3B outperforms larger models such as Qwen3.5-9B and Gemma4-12B.

  • Strong Reasoning Capabilities: Nanbeige4.2-3B leads open-source models of comparable size across mathematical, coding, and scientific reasoning tasks, continuing the strong reasoning performance of Nanbeige4.1-3B.

  • Local Personal Assistant: When integrated with an agentic scaffold designed for personal workflows (e.g., OpenClaw), Nanbeige4.2-3B can support extended tasks spanning daily assistance, office work, and deep research.

The accompanying modeling_nanbeige.py also includes our latest architectural improvements, including LoopSplit, mHC with depth attention, and concatenated n-gram embeddings. These features have been incorporated into Nanbeige4.5, whose training is underway for release later in 2026.

2. Model Performance

General and Agentic Capabilities

We compare Nanbeige4.2-3B with Qwen3.5 and Gemma4 models across a diverse benchmark suite covering general agents, code agents, reasoning, and alignment capabilities.

- - Nanbeige4.2-3B1 Qwen3.5-9B Qwen3.5-4B Gemma4-12B Gemma4-E4B
Parameters Total Params4B10B5B12B8B
Non-embedding Params3B8B4B10B4B
General Agent2 GDPval rubrics74.361.946.768.531.5
Agent-IF-Oneday67.560.456.9
Office-QA-Pro321.115.88.315.33.1
Pinch-Bench-V274.768.263.953.833.3
Claw-Gym65.056.153.040.816.4
Claw-Evalpass^352.247.136.925.515.9
MCP-Atlas57.847.440.830.515.0
Code Agent4 SWE-Bench Verified63.653.138.844.214.0
SWE-Bench Pro46.933.829.421.94.0
Terminal-Bench 2.044.129.225.821.112.4
Reasoning HLE w/o Search17.812.56.814.84.0
SciCode35.632.722.738.224.9
GPQA-Diamond87.481.778.278.860.6
HMMT-Feb-202682.869.660.651.524.2
IMO-Answer-Bench67.356.346.854.524.0
LiveCodeBench-V672.565.655.872.055.3
Alignment AA-LCR58.758.052.055.330.7
IF-Bench54.654.141.473.544.0
Recruit-Bench563.359.040.769.457.9
1 All evaluations are conducted in thinking mode with preserve_thinking=true in the chat template.
2 Office and co-work tasks such as GDPval, Office-QA-Pro, and Agent-IF-Oneday are evaluated with our in-house scaffold.
3 For OfficeQA-pro, we follow the most challenging evaluation setup: for each question, we provide all the original PDF materials without giving any hints about the relevant documents.
4 SWE-Bench Verified uses the OpenHands scaffold, SWE-Bench Pro uses the SWE-agent scaffold, and Terminal-Bench 2.0 uses the Terminus 2 scaffold.
5 Recruit-Bench is our in-house benchmark covering enterprise hiring scenarios (B2C) and job-seeking scenarios for candidates (C2B).

The results demonstrate that Nanbeige4.2-3B delivers strong performance well beyond its parameter scale. With only 3B non-embedding parameters, it consistently outperforms larger models, including Qwen3.5-9B and Gemma4-12B, across general-agent, code-agent, and reasoning benchmarks, while remaining competitive on alignment tasks.

Local Personal Assistant

With only 3B non-embedding parameters, Nanbeige4.2-3B is compact enough for local deployment while retaining the agentic capabilities needed for multi-step workflows, making it a natural fit for local personal-assistant applications. To assess this use case in a practical and consistent agent environment, we use OpenClaw, a general-purpose framework that supports daily assistance, office workflows, and deep research tasks. All compared models use the same framework and are evaluated on tasks requiring multi-step interaction with tools and external resources.

Capability Benchmark Nanbeige4.2-3B Qwen3.5-9B Qwen3.5-4B
Daily Tasks Pinch-Bench-V274.768.263.9
Claw-Gym65.056.153.0
Office Tasks GDPval68.838.037.0
Agent-IF-Oneday58.932.127.0
Deep Research DeepResearch Bench II33.428.326.0
ResearchRubrics44.837.235.1

Across all six benchmarks, Nanbeige4.2-3B outperforms both Qwen3.5-4B and the larger Qwen3.5-9B. These results support its use as a compact local personal assistant.

3. Quickstart

The tokenizer provides a configurable chat template for reasoning and tool-use scenarios:

  • enable_thinking controls whether the model generates reasoning for the current response. It is enabled by default; set it to False for non-thinking mode.
  • preserve_thinking controls whether reasoning from previous assistant turns is retained in a multi-turn conversation. We recommend False for general chat and question answering, and True for multi-turn tool use, office tasks, and code-agent workflows.
  • Passing tools enables the tool-use template. We recommend tool_call_format="xml" for the best tool-calling performance; json is also supported for compatibility.

We recommend adjusting the inference settings according to the target scenario:

Scenario Temperature Max New Tokens
Agentic and tool-use tasks 1.0 65,536
Reasoning and chat tasks 0.6 131,072

Huggingface

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "Nanbeige/Nanbeige4.2-3B"

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

messages = [
  {"role": "user", "content": "Which number is bigger, 9.11 or 9.8?"}
]
prompt = tokenizer.apply_chat_template(
  messages,
  add_generation_prompt=True,
  tokenize=False
)
input_ids = tokenizer(
  prompt,
  add_special_tokens=False,
  return_tensors="pt"
).input_ids
output_ids = model.generate(
  input_ids.to("cuda"),
  max_new_tokens=131072,
  temperature=0.6,
  top_p=0.95,
  top_k=20,
  eos_token_id=166101
)
response = tokenizer.decode(
  output_ids[0][len(input_ids[0]):],
  skip_special_tokens=True
)
print(response)

SGLang

Installation

# Clone repository
git clone -b nanbeige42 https://github.com/Nanbeige/sglang.git
cd sglang
pip install -e "python"

Usage

MODEL_PATH=/path/to/your/Nanbeige4.2-3B
python -m sglang.launch_server \
    --model-path ${MODEL_PATH} \
    --host 0.0.0.0 \
    --port 8000 \
    --tp-size 1 \
    --mem-fraction-static 0.8  \
    --reasoning-parser nanbeige \
    --tool-call-parser nanbeige

vLLM

Installation

# Clone repository
git clone -b nanbeige42 https://github.com/Nanbeige/vllm.git
cd vllm
pip install -e .

Usage

MODEL_PATH=/path/to/your/Nanbeige4.2-3B
vllm serve ${MODEL_PATH} \
    --host 0.0.0.0 \
    --port 8000 \
    --tensor-parallel-size 1 \
    --gpu-memory-utilization 0.8  \
    --enable-auto-tool-choice \
    --tool-call-parser nanbeige \
    --reasoning-parser nanbeige

llama.cpp

Installation

# Clone repository
git clone -b nanbeige42 https://github.com/Nanbeige/llama.cpp.git
cd llama.cpp

cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j

Usage

# input: HuggingFace model directory
MODEL_PATH_HF=/path/to/your/Nanbeige4.2-3B
# output: converted / quantized GGUF
MODEL_PATH_BF16_GGUF=/path/to/your/Nanbeige4.2-3B-BF16.gguf
MODEL_PATH_GGUF_Q4_K_M=/path/to/your/Nanbeige4.2-3B-Q4_K_M.gguf

# convert to gguf
python3 convert_hf_to_gguf.py ${MODEL_PATH_HF} \
  --outfile ${MODEL_PATH_BF16_GGUF} \
  --outtype bf16

# quantize to int4
./build/bin/llama-quantize \
  ${MODEL_PATH_BF16_GGUF} \
  ${MODEL_PATH_GGUF_Q4_K_M} \
  Q4_K_M

# run inference
./build/bin/llama-cli \
  -m ${MODEL_PATH_GGUF_Q4_K_M} \
  -ngl 99

ollama

Requirements

  • Go
  • llama.cpp (see the llama.cpp section above)

Installation

# Clone repository
# For llama-server (GGUF) backend only, the official ollama repo also works:
# git clone https://github.com/ollama/ollama.git
git clone -b nanbeige42 https://github.com/Nanbeige/ollama.git
cd ollama

# Full native build (MLX Metal on macOS arm64; llama-server payload included)
# Pick one:
cmake -B build .
cmake --build build --parallel $(sysctl -n hw.ncpu)   # macOS
# cmake --build build --parallel $(nproc)             # Linux

# Copy the llama.cpp build output from the section above into Ollama's runtime payload dir
LLAMA_CPP_PATH=/path/to/your/llama.cpp
cp -r ${LLAMA_CPP_PATH}/build/bin/* build/lib/ollama/

go build .

Ollama supports two local inference backends:

Path Model format Backend Typical use
llama-server GGUF llama.cpp (Metal / CUDA / ...) Traditional GGUF quantized deployment
MLX HuggingFace safetensors MLX (Apple Metal, etc.) Run BF16 or quantized safetensors directly

Usage — llama-server (GGUF)

# Option 1: pull a published model (no Modelfile on the client)
./ollama serve
./ollama run nanbeige/nanbeige4.2:3b-Q4_K_M
# Option 2: create from a local .gguf produced by llama.cpp
# (see convert_hf_to_gguf.py / llama-quantize above)
MODEL_PATH_GGUF_Q4_K_M=/path/to/your/Nanbeige4.2-3B-Q4_K_M.gguf

# Modelfile
cat > Modelfile <<EOF
FROM ${MODEL_PATH_GGUF_Q4_K_M}
PARAMETER temperature 0.6
PARAMETER top_p 0.95
PARAMETER top_k 20
EOF

./ollama serve
./ollama create nanbeige42-local -f Modelfile
./ollama run nanbeige42-local

Usage — MLX (safetensors)

# HuggingFace safetensors directory (config.json + *.safetensors), used directly.
# MLX Metal is for macOS arm64; Linux MLX needs a CUDA MLX backend build.
MODEL_PATH=/path/to/your/Nanbeige4.2-3B

# Modelfile
cat > Modelfile <<EOF
FROM ${MODEL_PATH}
RENDERER nanbeige
PARSER nanbeige
EOF

# Start server (from repo root so it finds build/lib/ollama)
./ollama serve

# Import safetensors model (requires --experimental)
./ollama create nanbeige42-mlx -f Modelfile --experimental

# Optional: quantize on import (int4 / int8 / mxfp4 / mxfp8 / nvfp4)
./ollama create nanbeige42-mlx-q4 -f Modelfile --experimental --quantize int4

# Run
./ollama run nanbeige42-mlx-q4

4. Limitations

While we place great emphasis on model safety throughout the training process, the model may still generate unexpected or inappropriate outputs due to its probabilistic nature. Such outputs may include inaccurate information, bias, discrimination, or other harmful content. Please do not propagate such content. We do not assume responsibility for consequences of disseminating inappropriate information.

5. Citation

If you find our model useful or would like to use it in your own work, please cite this Hugging Face project:

@misc{nanbeige2026,
  title        = {Nanbeige4.2-3B},
  author       = {Nanbeige Team},
  year         = {2026},
  publisher    = {Hugging Face},
  howpublished = {\url{https://huggingface.co/Nanbeige/Nanbeige4.2-3B}}
}

6. Contact

If you have any questions, please open an issue in this repository or contact us at nanbeige@kanzhun.com.

Downloads last month
-
Safetensors
Model size
4B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 8 Ask for provider support

Model tree for Nanbeige/Nanbeige4.2-3B

Finetuned
(1)
this model
Finetunes
1 model
Quantizations
17 models

Space using Nanbeige/Nanbeige4.2-3B 1