Hmm... If the goal is to conduct a POC, a model without a dedicated “thinking” protocol might be easier to work with:
For a small tool-calling SFT POC, I would roughly map the current candidates on two axes:
- Vertical: how much explicit reasoning/thinking state the model exposes
- Horizontal: how much model-specific protocol machinery you need to care about
| Reasoning behavior ↓ / Protocol complexity → | Relatively straightforward | Middle ground | More machinery |
|---|---|---|---|
| No explicit thinking state | Granite 4.1 3B — Dense, conventional tool-call SFT baseline (Unsloth) Qwen3 4B Instruct 2507 — non-thinking-only Qwen3; strong clean baseline (Unsloth) Phi-4-mini-instruct — 3.8B Dense; function-calling trained |
OLMo 3 7B Instruct — Think is a separate checkpoint, but tool serialization is model-specific Ministral 3 3B Instruct — Reasoning is a separate checkpoint; Mistral-specific tool stack (Unsloth) LFM2.5 1.2B Instruct — tiny and tool-oriented, but Liquid-specific formatting/architecture (Unsloth) |
— |
| Thinking can be enabled/disabled | — | Gemma 4 E2B-it — thinking OFF is fairly clean; ON adds reasoning/action state and history rules (Unsloth, fine-tuning) Qwen3 4B — hybrid thinking/non-thinking; flexible but adds an experimental variable (Unsloth) |
Qwen3.5 4B — strong tool/agent candidate, but reasoning and tool-call parsing both enter the picture NVIDIA Nemotron 3 Nano 4B — unified reasoning/non-reasoning model; controllable reasoning state (Unsloth) |
| Reasoning-first / reasoning-only | — | — | LFM2.5 2.6B — always-think behavior plus Liquid-specific tool protocol (Unsloth) Qwen3 4B Thinking 2507 — thinking-only sibling of the clean Instruct checkpoint (Unsloth) Ministral 3 3B Reasoning — explicit reasoning plus Mistral's tool protocol (Unsloth) |
| Specialized rather than general-purpose | FunctionGemma 270M — exceptionally clean if the job is mostly API/function routing, but not really a full travel assistant (Unsloth) | — | — |
For an RTX 3090 + Unsloth POC where the first question is simply "does my travel-agent SFT dataset work?", the top-left corner is probably where I would start:
Granite 4.1 3B or Qwen3 4B Instruct 2507.
Then Gemma 4 E2B with thinking disabled is an interesting middle-ground comparison, while Qwen3.5 4B is a good way to test whether accepting the extra reasoning/protocol machinery actually buys anything on dependent multi-tool workflows.
So this is not really a quality ranking: moving to the right mostly means more state/template/parser behavior to validate, not necessarily a worse model.