diff --git a/packages/ai/src/providers/azure-openai-responses.ts b/packages/ai/src/providers/azure-openai-responses.ts index 20c438e67..e119e6929 100644 --- a/packages/ai/src/providers/azure-openai-responses.ts +++ b/packages/ai/src/providers/azure-openai-responses.ts @@ -10,11 +10,11 @@ import { type Api, type AssistantMessage, type Context, - isSpecialServiceTier, type Model, type ServiceTier, type StreamFunction, type StreamOptions, + shouldSendServiceTier, type Tool, type ToolChoice, } from "../types"; @@ -298,7 +298,7 @@ function buildParams( if (options?.repetitionPenalty !== undefined) { params.repetition_penalty = options.repetitionPenalty; } - if (isSpecialServiceTier(options?.serviceTier)) { + if (shouldSendServiceTier(options?.serviceTier, model.provider)) { params.service_tier = options.serviceTier; } diff --git a/packages/ai/src/providers/openai-codex-responses.ts b/packages/ai/src/providers/openai-codex-responses.ts index 30331b8f3..e78663bd1 100644 --- a/packages/ai/src/providers/openai-codex-responses.ts +++ b/packages/ai/src/providers/openai-codex-responses.ts @@ -19,12 +19,12 @@ import { type Api, type AssistantMessage, type Context, - isSpecialServiceTier, type Model, type ProviderSessionState, type ServiceTier, type StreamFunction, type StreamOptions, + shouldSendServiceTier, type TextContent, type ThinkingContent, type Tool, @@ -493,7 +493,7 @@ async function buildTransformedCodexRequestBody( if (options?.repetitionPenalty !== undefined) { params.repetition_penalty = options.repetitionPenalty; } - if (isSpecialServiceTier(options?.serviceTier)) { + if (shouldSendServiceTier(options?.serviceTier, model.provider)) { params.service_tier = options.serviceTier; } if (context.tools && context.tools.length > 0) { diff --git a/packages/ai/src/providers/openai-completions.ts b/packages/ai/src/providers/openai-completions.ts index 5a8897749..d5487bf06 100644 --- a/packages/ai/src/providers/openai-completions.ts +++ b/packages/ai/src/providers/openai-completions.ts @@ -14,7 +14,6 @@ import { getEnvApiKey } from "../stream"; import { type AssistantMessage, type Context, - isSpecialServiceTier, type Message, type MessageAttribution, type Model, @@ -23,6 +22,7 @@ import { type StopReason, type StreamFunction, type StreamOptions, + shouldSendServiceTier, type TextContent, type ThinkingContent, type Tool, @@ -811,7 +811,7 @@ function buildParams( if (options?.repetitionPenalty !== undefined) { params.repetition_penalty = options.repetitionPenalty; } - if (isSpecialServiceTier(options?.serviceTier)) { + if (shouldSendServiceTier(options?.serviceTier, model.provider)) { params.service_tier = options.serviceTier; } diff --git a/packages/ai/src/providers/openai-responses.ts b/packages/ai/src/providers/openai-responses.ts index 9ec2d01f4..5c4111ebf 100644 --- a/packages/ai/src/providers/openai-responses.ts +++ b/packages/ai/src/providers/openai-responses.ts @@ -11,13 +11,13 @@ import { type AssistantMessage, type CacheRetention, type Context, - isSpecialServiceTier, type MessageAttribution, type Model, type ProviderSessionState, type ServiceTier, type StreamFunction, type StreamOptions, + shouldSendServiceTier, type Tool, type ToolChoice, } from "../types"; @@ -384,7 +384,7 @@ function buildParams( if (options?.repetitionPenalty !== undefined) { params.repetition_penalty = options.repetitionPenalty; } - if (isSpecialServiceTier(options?.serviceTier)) { + if (shouldSendServiceTier(options?.serviceTier, model.provider)) { params.service_tier = options.serviceTier; } diff --git a/packages/ai/src/types.ts b/packages/ai/src/types.ts index 6f63f0b73..18855efd0 100644 --- a/packages/ai/src/types.ts +++ b/packages/ai/src/types.ts @@ -152,7 +152,13 @@ export type CacheRetention = "none" | "short" | "long"; /** OpenAI service tier for processing priority. Only applies to OpenAI-compatible APIs. */ export type ServiceTier = "auto" | "default" | "flex" | "scale" | "priority"; -export function isSpecialServiceTier(serviceTier?: ServiceTier | null): serviceTier is "flex" | "scale" | "priority" { +export function shouldSendServiceTier( + serviceTier?: ServiceTier | null, + provider?: Provider, +): serviceTier is "flex" | "scale" | "priority" { + if (provider !== "openai" && provider !== "openai-codex") { + return false; + } return serviceTier === "flex" || serviceTier === "scale" || serviceTier === "priority"; }