Configuration Parsing Warning:Invalid JSON for config file config.json

Ruhui · 如晦

A non-autoregressive System 1 decision engine for Chinese & multilingual text, with calibrated probabilities.

Named after Du Ruhui (杜如晦, courtesy name Keming 克明) of the "Fang Mou Du Duan" (房谋杜断) pair — Fang Xuanling was the strategist, Du Ruhui the decisive judge. Ruhui inherits the "decisive" half: a fast System 1 decision maker that generates no text, has nothing to parse, and therefore cannot hallucinate.

Architecture forked from Laya (Apache 2.0), with two key changes:

  • Chinese/multilingual backbone: mmBERT-base (100+ languages) instead of English-only ModernBERT.
  • Bilingual soft-label fine-tuning: 30+ domain datasets (intent / sentiment / safety / agent decision / tool-calling / …).

Model Details

Item Value
Parameters 322M (mmBERT-base + decision head)
Context length 1024
Head budget 256
Languages Chinese, English, and 100+
Training RLCD (proper-scoring-rule policy gradient) + soft distillation + temperature calibration

Capabilities

Three decision primitives, evaluated in a single parallel forward pass:

Primitive Output Use cases
choice top label + full distribution + confidence intent, routing, categorization
score expected level on an ordinal rubric urgency, frustration, severity
noul calibrated P(true) spam, phishing, jailbreak, churn risk

Probabilities are trained with strictly proper scoring rules, so confidence is statistically meaningful and safe for confidence gating:

if conf >= 0.85:
    route_automatically(dept)   # high confidence, no human in the loop
else:
    escalate_to_human(dept)     # low confidence, escalate

Quick Start

Install the package first:

pip install ruhui

Then load the model and run typed decisions. Ruhui reads Chinese and English (100+ languages) in the same checkpoint — no separate English/multilingual models:

import ruhui

agent = ruhui.load("anyforge/ruhui")

# Chinese input
result_zh = agent.predict(
    {"message": "我被重复扣款了,请退款"},
    {
        "intent": {
            "type": "choice",
            "instructions": "客户想做什么?",
            "criteria": {"refund": "退款", "technical": "技术问题", "billing": "账单咨询"},
        },
        "churn_risk": {"type": "noul", "instructions": "客户是否威胁要离开?"},
    },
)

# English input — same model, no switch
result_en = agent.predict(
    {"message": "I was charged twice, please refund me."},
    {
        "intent": {
            "type": "choice",
            "instructions": "What does the customer want?",
            "criteria": {"refund": "money back", "technical": "bug or outage", "billing": "invoice question"},
        },
        "churn_risk": {"type": "noul", "instructions": "Does the customer threaten to leave?"},
    },
)

print(result_zh["answers"])
print(result_en["answers"])

Fine-Tuning

# 1. soft labels -> training items
python scripts/prepare_train_data.py --model_dir <base> --soft_dir <soft_labels> --out train_items.pt

# 2. train (RLCD + soft distillation + temperature calibration)
python scripts/train.py --model_dir <base> --train_items train_items.pt --output_dir output/ruhui --epochs 4

# 3. evaluate (Laya-aligned metrics)
python scripts/evaluate.py --model_dir output/ruhui --device cuda

See the anyforge/ruhui repository for details.


License

Apache 2.0 (inherited from Laya). Developed by AnyForge.

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