UNPKG

@ai-sdk/openai

Version:

The **[OpenAI provider](https://ai-sdk.dev/providers/ai-sdk-providers/openai)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model support for the OpenAI chat and completion APIs and embedding model support for the OpenAI embeddings API.

55 lines (47 loc) 1.91 kB
export type OpenAILanguageModelCapabilities = { isReasoningModel: boolean; systemMessageMode: 'remove' | 'system' | 'developer'; supportsFlexProcessing: boolean; supportsPriorityProcessing: boolean; /** * Allow temperature, topP, logProbs when reasoningEffort is none. */ supportsNonReasoningParameters: boolean; }; export function getOpenAILanguageModelCapabilities( modelId: string, ): OpenAILanguageModelCapabilities { const supportsFlexProcessing = modelId.startsWith('o3') || modelId.startsWith('o4-mini') || (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat')); const supportsPriorityProcessing = modelId.startsWith('gpt-4') || modelId.startsWith('gpt-5-mini') || (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-nano') && !modelId.startsWith('gpt-5-chat')) || modelId.startsWith('o3') || modelId.startsWith('o4-mini'); // Use allowlist approach: only known reasoning models should use 'developer' role // This prevents issues with fine-tuned models, third-party models, and custom models const isReasoningModel = modelId.startsWith('o1') || modelId.startsWith('o3') || modelId.startsWith('o4-mini') || modelId.startsWith('codex-mini') || modelId.startsWith('computer-use-preview') || (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat')); // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility // GPT-5.1 and GPT-5.2 support temperature, topP, logProbs when reasoningEffort is none const supportsNonReasoningParameters = modelId.startsWith('gpt-5.1') || modelId.startsWith('gpt-5.2'); const systemMessageMode = isReasoningModel ? 'developer' : 'system'; return { supportsFlexProcessing, supportsPriorityProcessing, isReasoningModel, systemMessageMode, supportsNonReasoningParameters, }; }