VercelVercel
Menu

OpenAI Reasoning

Last updated March 7, 2026

OpenAI reasoning models can think through problems before responding. You can control the depth of reasoning and receive summaries of the model's thought process. Each model supports different effort levels and defaults.

ModelEffort levelsDefault
openai/gpt-5.4none, low, medium, high, xhighnone
openai/gpt-5.3-codexlow, medium, high, xhighlow
openai/gpt-5.2-codexlow, medium, high, xhighlow
openai/gpt-5.2none, low, medium, high, xhighnone
openai/gpt-5.1-codexlow, medium, highlow
openai/gpt-5.1none, low, medium, highnone
openai/gpt-5minimal, low, medium, highmedium
openai/gpt-5-miniminimal, low, medium, highmedium
openai/gpt-5-nanominimal, low, medium, highmedium
ModelEffort levelsDefault
openai/o3low, medium, highmedium
openai/o3-minilow, medium, highmedium
openai/o4-minilow, medium, highmedium

For more details on each model, see the OpenAI model documentation.

Set reasoningSummary to receive the model's thought process as it streams. Different models support different summarizers. For example, o4-mini supports detailed summaries.

stream-reasoning.ts
import { streamText } from 'ai';
 
const result = streamText({
  model: 'openai/gpt-5',
  prompt: 'Tell me about the Mission burrito debate in San Francisco.',
  providerOptions: {
    openai: {
      reasoningEffort: 'high',
      reasoningSummary: 'detailed', // 'auto' for condensed or 'detailed' for comprehensive
    },
  },
});
 
for await (const part of result.fullStream) {
  if (part.type === 'reasoning-delta') {
    process.stdout.write(part.text);
  } else if (part.type === 'text-delta') {
    process.stdout.write(part.text);
  }
}

For non-streaming calls, reasoning summaries are available in the reasoning field:

generate-reasoning.ts
import { generateText } from 'ai';
 
const result = await generateText({
  model: 'openai/gpt-5',
  prompt: 'Tell me about the Mission burrito debate in San Francisco.',
  providerOptions: {
    openai: {
      reasoningEffort: 'high',
      reasoningSummary: 'auto',
    },
  },
});
 
console.log('Reasoning:', result.reasoningText);
ValueDescription
autoCondensed reasoning summary
detailedComprehensive reasoning summary
conciseBrief reasoning summary

Some models default to none for reasoning effort, meaning reasoning is disabled unless you explicitly set an effort level. Check the supported models table for each model's default.

For more details, see the OpenAI reasoning docs.


Was this helpful?

supported.