Reasoning Effort Controls
When solving a problem, you can tell an AI to think quickly and cheaply, or you can give it a massive compute budget to rigorously double-check its work. Effort controls make intelligence a scalable commodity.
Why Does This Exist?
With standard LLMs, intelligence is fixed. You ask GPT-4o a question, and it gives you its best answer immediately. You cannot pay GPT-4o more money to "think harder" about your specific problem.
Reasoning models (like OpenAI's o1) introduced the paradigm of Test-Time Compute, where the model generates a long, hidden chain of intermediate thoughts before answering. Because generating these thoughts requires generating tokens, the intelligence of the output scales directly with how many tokens the model is allowed to generate.
Reasoning Effort Controls expose this dynamic to the user as a dial. You can explicitly set a compute budget for your prompt, allowing you to fluidly trade time and money for intelligence based on the exact needs of your task.
Think of It Like This
Hiring a consultant
Using a standard LLM is like asking a consultant a question as you pass them in the hallway. They give you their immediate, gut reaction. It's fast and free, but shallow.
Using a reasoning model with effort controls is like hiring a consultant by the hour.
- Low Effort: You pay them for 1 hour. They outline a basic plan.
- Medium Effort: You pay them for 10 hours. They draft a plan, realize a flaw, and rewrite it.
- High Effort: You pay them for 100 hours. They draft a plan, run a simulation, find three edge cases, consult the literature, and present a bulletproof, peer-reviewed strategy.
You control the budget; the consultant scales their rigorousness to match.
How It Actually Works
When you adjust a reasoning effort dial in an API (usually set to low, medium, or high), you are interacting with two underlying mechanisms:
1. The Token Budget
The most direct mechanism is an internal cap on the maximum number of reasoning tokens the model is allowed to generate.
- A
lowsetting might cap the hidden reasoning chain at 500 tokens. The model knows this budget and aims for a quick, direct path to the answer. - A
highsetting might grant a budget of 32,000 tokens.
2. The Search Depth
When given a massive token budget, the model doesn't just write a longer first draft. The underlying system uses that budget to expand its internal search tree. It will:
- Generate multiple parallel hypotheses.
- Attempt to verify each hypothesis using a Process Reward Model.
- Actively prompt itself to look for counter-examples.
- Perform heavy backtracking (e.g., "Wait, this branch leads to a contradiction. Let me discard the last 4,000 tokens of thought and try the other path.")
The Inference Scaling Law
Researchers have discovered that performance on hard benchmarks (like competitive programming or advanced mathematics) scales logarithmically with the amount of test-time compute. A smaller, cheaper base model given a "High" reasoning budget will consistently outperform a massive, expensive base model that is forced to answer immediately.
Show Me the Code
In modern APIs, reasoning effort is often exposed as a single parameter. Note that you pay for every single reasoning token generated, making "high" effort requests significantly more expensive.
import openai
client = openai.Client()
# Example: A simple categorization task. We don't want to waste money.cheap_response = client.chat.completions.create( model="o1", messages=[{"role": "user", "content": "Sort these 5 words alphabetically."}], reasoning_effort="low" )
# Example: A complex, multi-file architecture refactor. # We want the model to spend 5 minutes thinking and double-checking its logic.expensive_response = client.chat.completions.create( model="o1", messages=[{"role": "user", "content": "Rewrite this distributed locking mechanism..."}], reasoning_effort="high" )
print(f"Tokens used (Low): {cheap_response.usage.completion_tokens_details.reasoning_tokens}")print(f"Tokens used (High): {expensive_response.usage.completion_tokens_details.reasoning_tokens}")Watch Out For
Diminishing Returns on Simple Tasks
Setting reasoning_effort="high" on a simple task like "Translate this sentence to French" is a complete waste of money. The model cannot invent complexity where none exists. It will likely generate a few hundred tokens of unnecessary internal monologue and then output the exact same French translation it would have produced on low, but you will be billed for the extra compute time. Match the budget to the problem complexity.
The Quick Version
- Reasoning effort controls allow you to explicitly define how much time and money an AI should spend "thinking" before it answers.
- It acts as a dial for Test-Time Compute.
- Low effort forces the model to take a direct, immediate path to the answer.
- High effort gives the model a massive token budget, allowing it to explore multiple paths, backtrack from mistakes, and double-check its logic.
- Intelligence is no longer fixed; it is a scalable commodity you purchase per-prompt.
What to Read Next
- Test-Time Compute explains the broader paradigm of spending compute during inference rather than training.
- Reasoning Models are the underlying architecture that support these dynamic token budgets.