Trained using GRPO — a reinforcement learning algorithm that optimizes policy via group-relative advantages. No SFT pre-training was used; the adapter was trained directly from the base model using RL only.
ToolUseRubric — 4-Dimension Scoring
The reward signal comes from a custom ToolUseRubric with four weighted dimensions:
Dimension
Weight
Type
What it measures
Task Completion
0.50
LLM Judge
Did the agent solve the task correctly? Scored by gpt-4.1-nano via OpenRouter
Tool Outcomes
0.20
Heuristic
Did tool calls execute successfully (no errors)?
Efficiency
0.15
Heuristic
Were tool calls within budget (not excessive)?
Dummy Call Detection
0.15
Heuristic
No redundant calls, results referenced in response?
The LLM judge is critical — without it, the model quickly learns to game the heuristic metrics (reward hits 1.0 by step ~35 by simply never using tools). With the judge, the model must actually solve tasks correctly.
Without an LLM judge, the model learned within ~35 steps to never use tools and write long plausible-sounding responses. Reward hit 1.0 and stayed there. The model was optimizing the metric, not the task.
2. LLM judge is essential but cheap
Using gpt-4.1-nano via OpenRouter costs only ~$5-10 for a full 200-step run. This prevented reward hacking completely and led to genuine capability improvements.
3. RL alone works (no SFT needed)
This adapter was trained with RL only — no supervised fine-tuning phase. The base model (Qwen3-30B-A3B-Instruct) already has decent instruction-following, and GRPO was able to improve tool-use behavior on top of that.
4. MoE models are efficient for RL
The 30B MoE model (3B active parameters) trains much faster than a dense 30B model while still having access to broad knowledge. Good balance of capability vs training speed.
5. Tool usage increased, not decreased
The trained model uses more tools than the base model (0.77 vs 0.46 calls/sample), but more appropriately. It learned when tools are genuinely needed rather than trying to answer everything from memory.
Evaluation Details
Evaluated on 30 held-out tasks never seen during training, using heuristic scoring (no judge). Tasks test the same categories as training but with different specific questions.
Per-Task Results
Click to expand full per-task results
Task
Category
Base
Adapter
Δ
eval_001
zero_tool
1.000
1.000
—
eval_002
zero_tool
1.000
1.000
—
eval_003
zero_tool
1.000
1.000
—
eval_004
zero_tool
1.000
1.000
—
eval_005
zero_tool
1.000
1.000
—
eval_006
terminal
0.963
0.963
—
eval_007
terminal
0.963
0.963
—
eval_008
terminal
0.963
0.963
—
eval_009
terminal
0.925
0.925
—
eval_010
code_exec
0.925
0.925
—
eval_011
code_exec
0.963
0.963
—
eval_012
code_exec
0.963
0.963
—
eval_013
code_exec
0.963
0.963
—
eval_014
file_ops
0.950
0.950
—
eval_015
file_ops
0.285
0.863
+0.578
eval_016
file_ops
0.950
0.950
—
eval_017
multi_step
0.963
0.963
—
eval_018
multi_step
0.963
0.963
—
eval_019
multi_step
0.852
0.981
+0.129
eval_020
planning
0.950
0.938
-0.012
eval_021
planning
0.877
0.877
—
eval_022
self_imp
1.000
1.000
—
eval_023
self_imp
1.000
1.000
—
eval_024
code_exec
0.963
0.963
—
eval_025
terminal
0.963
0.963
—
eval_026
zero_tool
1.000
1.000
—
eval_027
zero_tool
1.000
1.000
—
eval_028
file_ops
0.955
0.955
—
eval_029
multi_step
0.963
0.963
—
eval_030
zero_tool
1.000
1.000
—
Training Infrastructure
Platform:Prime Intellect hosted RL training (free during beta)
Environment: Custom pi_agent_env (published as anarion/pi_agent_env on PI Hub)