Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Implements the NOWAIT technique for efficient reasoning in R1-style LLMs. Use when optimizing inference of reasoning models (QwQ, DeepSeek-R1, Phi4-Reasoning, Qwen3, Kimi-VL, QvQ), reducing chain-of-thought token usage by 27-51% while preserving accuracy. Triggers on "optimize reasoning", "reduce thinking tokens", "efficient inference", "suppress reflection tokens", or when working with verbose CoT outputs.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -32% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 101% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 7% | 0% |
Implements the NOWAIT technique from the paper "Wait, We Don't Need to 'Wait'! Removing Thinking Tokens Improves Reasoning Efficiency" (Wang et al., 2025).
NOWAIT is a training-free inference-time intervention that suppresses self-reflection tokens (e.g., "Wait", "Hmm", "Alternatively") during generation, reducing chain-of-thought (CoT) trajectory length by 27-51% without compromising model utility.
| Model Series | Type | Token Reduction | |--------------|------|-----------------| | QwQ-32B | RL-based | 16-31% | | Phi4-Reasoning-Plus | RL-based | 23-28% | | Qwen3-32B | RL-based | 13-16% | | Kimi-VL-A3B | Multimodal | 40-60% | | QvQ-72B-Preview | Multimodal | 20-30% |
Important: NOWAIT works best with RL-based models. Distilled models (Qwen3-4B/8B/14B) show degraded performance when reflection tokens are suppressed.
pythonfrom scripts.nowait_processor import NOWAITLogitProcessor # Initialize processor for your model's tokenizer processor = NOWAITLogitProcessor(tokenizer) # Use during generation outputs = model.generate( inputs, logits_processor=[processor], max_new_tokens=32768 )
See references/keywords.md for the complete list. Core keywords:
wait, alternatively, hmm, but, however, check,
double-check, maybe, verify, again, oh, ahLogits (Before) Logits (After)
Wait 0.8 → Wait -inf
First 0.6 → First 0.6
Hmm 0.5 → Hmm -inf
Let 0.4 → Let 0.4| Model Type | NOWAIT Effect | Recommendation | |------------|---------------|----------------| | RL-based (QwQ, Phi4, Qwen3-32B) | Stable accuracy, significant token reduction | ✅ Recommended | | Distilled (Qwen3-4B/8B/14B) | Accuracy degradation on hard tasks | ⚠️ Use with caution |
Distilled models rely heavily on CoT structure from training data—removing reflection tokens disrupts their reasoning patterns.
pythonfrom transformers import AutoModelForCausalLM, AutoTokenizer from scripts.nowait_processor import NOWAITLogitProcessor model = AutoModelForCausalLM.from_pretrained("Qwen/QwQ-32B") tokenizer = AutoTokenizer.from_pretrained("Qwen/QwQ-32B") processor = NOWAITLogitProcessor(tokenizer) response = model.generate( tokenizer(prompt, return_tensors="pt").input_ids, logits_processor=[processor], max_new_tokens=32768, do_sample=True, temperature=0.7 )
pythonfrom vllm import LLM, SamplingParams from scripts.nowait_processor import get_nowait_bad_words_ids llm = LLM(model="Qwen/QwQ-32B") bad_words_ids = get_nowait_bad_words_ids(llm.get_tokenizer()) sampling_params = SamplingParams( max_tokens=32768, bad_words_ids=bad_words_ids )
| Task Type | Original Tokens | NOWAIT Tokens | Reduction | |-----------|-----------------|---------------|-----------| | Math (AIME) | 15,000 | 10,500 | 30% | | Visual QA (MMMU) | 2,900 | 1,450 | 50% | | Video QA (MMVU) | 1,700 | 1,250 | 27% |
references/keywords.mdscripts/nowait_processor.pyOther measured skills in the registry, with their headline benchmark lift.