Skip to content

feat(core): add top-level thinking configuration to language model calls#12593

Open
giulio-leone wants to merge 1 commit intovercel:mainfrom
giulio-leone:codex/issue-12516-top-level-thinking
Open

feat(core): add top-level thinking configuration to language model calls#12593
giulio-leone wants to merge 1 commit intovercel:mainfrom
giulio-leone:codex/issue-12516-top-level-thinking

Conversation

@giulio-leone
Copy link

@giulio-leone giulio-leone commented Feb 14, 2026

Summary

  • add a top-level thinking field to LanguageModelV3CallOptions and AI SDK CallSettings
  • forward thinking through generateText, streamText, generateObject, streamObject, and ToolLoopAgent
  • map top-level thinking to provider-specific reasoning controls in OpenAI chat, OpenAI responses, OpenAI-compatible chat, and Anthropic
  • keep provider-specific options backward compatible while giving precedence to top-level thinking
  • document the new option in core references and provider docs

Details

  • Added LanguageModelV3Thinking type:
    • { type: 'enabled', effort?: 'low' | 'medium' | 'high', budgetTokens?: number }
    • { type: 'disabled' }
  • Added runtime validation for thinking in prepareCallSettings.
  • Added telemetry hardening for object-valued call settings (serializes plain objects).
  • Added warnings when thinking.budgetTokens is used with OpenAI/OpenAI-compatible where unsupported.

Tests

  • pnpm --filter ai exec vitest --config vitest.node.config.js --run src/prompt/prepare-call-settings.test.ts src/middleware/default-settings-middleware.test.ts src/agent/tool-loop-agent.test.ts src/generate-text/generate-text.test.ts src/generate-text/stream-text.test.ts src/generate-object/generate-object.test.ts src/generate-object/stream-object.test.ts
  • pnpm --filter @ai-sdk/openai exec vitest --config vitest.node.config.js --run src/chat/openai-chat-language-model.test.ts src/responses/openai-responses-language-model.test.ts
  • pnpm --filter @ai-sdk/openai-compatible exec vitest --config vitest.node.config.js --run src/chat/openai-compatible-chat-language-model.test.ts
  • pnpm --filter @ai-sdk/anthropic exec vitest --config vitest.node.config.js --run src/anthropic-messages-language-model.test.ts
  • pnpm --filter ai type-check
  • pnpm --filter @ai-sdk/provider type-check
  • pnpm --filter @ai-sdk/openai type-check
  • pnpm --filter @ai-sdk/openai-compatible type-check
  • pnpm --filter @ai-sdk/anthropic type-check
  • package-level eslint checks on all touched source/test files

Closes #12516

Attribution request

If this pull request is merged, I would be grateful if contributor credit could be included in the related changelog or release notes for implementing this fix (@g97iulio1609).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Make reasoning / thinking configuration part of top-level spec

1 participant