@ai-sdk/openai 3.0.108 → 3.0.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ai-sdk/openai
2
2
 
3
+ ## 3.0.109
4
+
5
+ ### Patch Changes
6
+
7
+ - 7f3b8f0: feat(openai): add GPT-6 reasoning configuration updates
8
+
3
9
  ## 3.0.108
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -9,7 +9,7 @@ declare const openaiLanguageModelChatOptions: _ai_sdk_provider_utils.LazySchema<
9
9
  logprobs?: number | boolean | undefined;
10
10
  parallelToolCalls?: boolean | undefined;
11
11
  user?: string | undefined;
12
- reasoningEffort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | undefined;
12
+ reasoningEffort?: "low" | "medium" | "high" | "xhigh" | "max" | "none" | "minimal" | undefined;
13
13
  maxCompletionTokens?: number | undefined;
14
14
  store?: boolean | undefined;
15
15
  metadata?: Record<string, string> | undefined;
@@ -48,7 +48,7 @@ type OpenAIEmbeddingModelOptions = InferSchema<typeof openaiEmbeddingModelOption
48
48
 
49
49
  type OpenAIImageModelId = 'dall-e-3' | 'dall-e-2' | 'gpt-image-1' | 'gpt-image-1-mini' | 'gpt-image-1.5' | 'gpt-image-2' | 'chatgpt-image-latest' | (string & {});
50
50
  declare const openaiImageModelOptions: _ai_sdk_provider_utils.LazySchema<{
51
- quality?: "auto" | "low" | "medium" | "high" | "standard" | "hd" | undefined;
51
+ quality?: "low" | "medium" | "high" | "auto" | "standard" | "hd" | undefined;
52
52
  background?: "auto" | "transparent" | "opaque" | undefined;
53
53
  outputFormat?: "png" | "jpeg" | "webp" | undefined;
54
54
  outputCompression?: number | undefined;
@@ -56,17 +56,17 @@ declare const openaiImageModelOptions: _ai_sdk_provider_utils.LazySchema<{
56
56
  }>;
57
57
  type OpenAIImageModelOptions = InferSchema<typeof openaiImageModelOptions>;
58
58
  declare const openaiImageModelGenerationOptions: _ai_sdk_provider_utils.LazySchema<{
59
- quality?: "auto" | "low" | "medium" | "high" | "standard" | "hd" | undefined;
59
+ quality?: "low" | "medium" | "high" | "auto" | "standard" | "hd" | undefined;
60
60
  background?: "auto" | "transparent" | "opaque" | undefined;
61
61
  outputFormat?: "png" | "jpeg" | "webp" | undefined;
62
62
  outputCompression?: number | undefined;
63
63
  user?: string | undefined;
64
64
  style?: "vivid" | "natural" | undefined;
65
- moderation?: "auto" | "low" | undefined;
65
+ moderation?: "low" | "auto" | undefined;
66
66
  }>;
67
67
  type OpenAIImageModelGenerationOptions = InferSchema<typeof openaiImageModelGenerationOptions>;
68
68
  declare const openaiImageModelEditOptions: _ai_sdk_provider_utils.LazySchema<{
69
- quality?: "auto" | "low" | "medium" | "high" | "standard" | "hd" | undefined;
69
+ quality?: "low" | "medium" | "high" | "auto" | "standard" | "hd" | undefined;
70
70
  background?: "auto" | "transparent" | "opaque" | undefined;
71
71
  outputFormat?: "png" | "jpeg" | "webp" | undefined;
72
72
  outputCompression?: number | undefined;
@@ -1111,6 +1111,7 @@ declare const openaiLanguageModelResponsesOptionsSchema: _ai_sdk_provider_utils.
1111
1111
  } | undefined;
1112
1112
  promptCacheRetention?: "in_memory" | "24h" | null | undefined;
1113
1113
  reasoningEffort?: string | null | undefined;
1114
+ reasoningEffortUpdate?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
1114
1115
  reasoningMode?: "standard" | "pro" | undefined;
1115
1116
  reasoningContext?: "auto" | "current_turn" | "all_turns" | undefined;
1116
1117
  reasoningSummary?: string | null | undefined;
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@ declare const openaiLanguageModelChatOptions: _ai_sdk_provider_utils.LazySchema<
9
9
  logprobs?: number | boolean | undefined;
10
10
  parallelToolCalls?: boolean | undefined;
11
11
  user?: string | undefined;
12
- reasoningEffort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" | undefined;
12
+ reasoningEffort?: "low" | "medium" | "high" | "xhigh" | "max" | "none" | "minimal" | undefined;
13
13
  maxCompletionTokens?: number | undefined;
14
14
  store?: boolean | undefined;
15
15
  metadata?: Record<string, string> | undefined;
@@ -48,7 +48,7 @@ type OpenAIEmbeddingModelOptions = InferSchema<typeof openaiEmbeddingModelOption
48
48
 
49
49
  type OpenAIImageModelId = 'dall-e-3' | 'dall-e-2' | 'gpt-image-1' | 'gpt-image-1-mini' | 'gpt-image-1.5' | 'gpt-image-2' | 'chatgpt-image-latest' | (string & {});
50
50
  declare const openaiImageModelOptions: _ai_sdk_provider_utils.LazySchema<{
51
- quality?: "auto" | "low" | "medium" | "high" | "standard" | "hd" | undefined;
51
+ quality?: "low" | "medium" | "high" | "auto" | "standard" | "hd" | undefined;
52
52
  background?: "auto" | "transparent" | "opaque" | undefined;
53
53
  outputFormat?: "png" | "jpeg" | "webp" | undefined;
54
54
  outputCompression?: number | undefined;
@@ -56,17 +56,17 @@ declare const openaiImageModelOptions: _ai_sdk_provider_utils.LazySchema<{
56
56
  }>;
57
57
  type OpenAIImageModelOptions = InferSchema<typeof openaiImageModelOptions>;
58
58
  declare const openaiImageModelGenerationOptions: _ai_sdk_provider_utils.LazySchema<{
59
- quality?: "auto" | "low" | "medium" | "high" | "standard" | "hd" | undefined;
59
+ quality?: "low" | "medium" | "high" | "auto" | "standard" | "hd" | undefined;
60
60
  background?: "auto" | "transparent" | "opaque" | undefined;
61
61
  outputFormat?: "png" | "jpeg" | "webp" | undefined;
62
62
  outputCompression?: number | undefined;
63
63
  user?: string | undefined;
64
64
  style?: "vivid" | "natural" | undefined;
65
- moderation?: "auto" | "low" | undefined;
65
+ moderation?: "low" | "auto" | undefined;
66
66
  }>;
67
67
  type OpenAIImageModelGenerationOptions = InferSchema<typeof openaiImageModelGenerationOptions>;
68
68
  declare const openaiImageModelEditOptions: _ai_sdk_provider_utils.LazySchema<{
69
- quality?: "auto" | "low" | "medium" | "high" | "standard" | "hd" | undefined;
69
+ quality?: "low" | "medium" | "high" | "auto" | "standard" | "hd" | undefined;
70
70
  background?: "auto" | "transparent" | "opaque" | undefined;
71
71
  outputFormat?: "png" | "jpeg" | "webp" | undefined;
72
72
  outputCompression?: number | undefined;
@@ -1111,6 +1111,7 @@ declare const openaiLanguageModelResponsesOptionsSchema: _ai_sdk_provider_utils.
1111
1111
  } | undefined;
1112
1112
  promptCacheRetention?: "in_memory" | "24h" | null | undefined;
1113
1113
  reasoningEffort?: string | null | undefined;
1114
+ reasoningEffortUpdate?: "low" | "medium" | "high" | "xhigh" | "max" | undefined;
1114
1115
  reasoningMode?: "standard" | "pro" | undefined;
1115
1116
  reasoningContext?: "auto" | "current_turn" | "all_turns" | undefined;
1116
1117
  reasoningSummary?: string | null | undefined;
package/dist/index.js CHANGED
@@ -59,14 +59,17 @@ function getOpenAILanguageModelCapabilities(modelId) {
59
59
  const gptVersion = getGptVersion(modelId);
60
60
  const isGptChatModel = (gptVersion == null ? void 0 : gptVersion.minor) == null && ((_b = (_a2 = gptVersion == null ? void 0 : gptVersion.variant) == null ? void 0 : _a2.startsWith("chat")) != null ? _b : false);
61
61
  const isGptNanoModel = (_d = (_c = gptVersion == null ? void 0 : gptVersion.variant) == null ? void 0 : _c.startsWith("nano")) != null ? _d : false;
62
+ const isGpt6OrLaterModel = gptVersion != null && gptVersion.major >= 6;
62
63
  const supportsFlexProcessing = oSeriesVersion != null && oSeriesVersion >= 3 || gptVersion != null && gptVersion.major >= 5 && !isGptChatModel;
63
64
  const supportsPriorityProcessing = modelId.startsWith("gpt-4") || gptVersion != null && gptVersion.major >= 5 && !isGptNanoModel && !isGptChatModel || oSeriesVersion != null && oSeriesVersion >= 3;
64
65
  const isReasoningModel = oSeriesVersion != null || gptVersion != null && gptVersion.major >= 5 && !isGptChatModel;
65
- const supportsNonReasoningParameters = gptVersion != null && (gptVersion.major > 5 || gptVersion.major === 5 && ((_e = gptVersion.minor) != null ? _e : 0) >= 1);
66
+ const supportsNonReasoningParameters = !isGpt6OrLaterModel && gptVersion != null && (gptVersion.major > 5 || gptVersion.major === 5 && ((_e = gptVersion.minor) != null ? _e : 0) >= 1);
66
67
  const systemMessageMode = isReasoningModel ? "developer" : "system";
67
68
  return {
68
69
  supportsFlexProcessing,
69
70
  supportsPriorityProcessing,
71
+ supportsConfigurationUpdate: isGpt6OrLaterModel,
72
+ supportedReasoningEfforts: isGpt6OrLaterModel ? ["low", "medium", "high", "xhigh", "max"] : void 0,
70
73
  isReasoningModel,
71
74
  systemMessageMode,
72
75
  supportsNonReasoningParameters
@@ -740,6 +743,7 @@ var openaiLanguageModelChatOptions = (0, import_provider_utils4.lazySchema)(
740
743
  user: import_v43.z.string().optional(),
741
744
  /**
742
745
  * Reasoning effort for reasoning models. Defaults to `medium`.
746
+ * GPT-6 and later models support 'low' | 'medium' | 'high' | 'xhigh' | 'max'.
743
747
  */
744
748
  reasoningEffort: import_v43.z.enum(["none", "minimal", "low", "medium", "high", "xhigh", "max"]).optional(),
745
749
  /**
@@ -936,6 +940,17 @@ var OpenAIChatLanguageModel = class {
936
940
  })) != null ? _a2 : {};
937
941
  const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);
938
942
  const isReasoningModel = (_b = openaiOptions.forceReasoning) != null ? _b : modelCapabilities.isReasoningModel;
943
+ let resolvedReasoningEffort = openaiOptions.reasoningEffort;
944
+ if (resolvedReasoningEffort != null && modelCapabilities.supportedReasoningEfforts != null && !modelCapabilities.supportedReasoningEfforts.includes(
945
+ resolvedReasoningEffort
946
+ )) {
947
+ warnings.push({
948
+ type: "unsupported",
949
+ feature: "reasoningEffort",
950
+ details: `${this.modelId} only supports the following reasoning efforts: ${modelCapabilities.supportedReasoningEfforts.join(", ")}`
951
+ });
952
+ resolvedReasoningEffort = void 0;
953
+ }
939
954
  if (topK != null) {
940
955
  warnings.push({ type: "unsupported", feature: "topK" });
941
956
  }
@@ -980,7 +995,7 @@ var OpenAIChatLanguageModel = class {
980
995
  store: openaiOptions.store,
981
996
  metadata: openaiOptions.metadata,
982
997
  prediction: openaiOptions.prediction,
983
- reasoning_effort: openaiOptions.reasoningEffort,
998
+ reasoning_effort: resolvedReasoningEffort,
984
999
  service_tier: openaiOptions.serviceTier,
985
1000
  prompt_cache_key: openaiOptions.promptCacheKey,
986
1001
  prompt_cache_options: openaiOptions.promptCacheOptions,
@@ -989,6 +1004,14 @@ var OpenAIChatLanguageModel = class {
989
1004
  // messages:
990
1005
  messages
991
1006
  };
1007
+ if (modelCapabilities.supportedReasoningEfforts != null && baseArgs.prompt_cache_retention != null) {
1008
+ baseArgs.prompt_cache_retention = void 0;
1009
+ warnings.push({
1010
+ type: "unsupported",
1011
+ feature: "promptCacheRetention",
1012
+ details: "promptCacheRetention is not supported by GPT-6 and later models; use promptCacheOptions instead"
1013
+ });
1014
+ }
992
1015
  if (isReasoningModel) {
993
1016
  if (openaiOptions.reasoningEffort !== "none" || !modelCapabilities.supportsNonReasoningParameters) {
994
1017
  if (baseArgs.temperature != null) {
@@ -5120,9 +5143,19 @@ var openaiLanguageModelResponsesOptionsSchema = (0, import_provider_utils29.lazy
5120
5143
  * Reasoning effort for reasoning models. Defaults to `medium`. If you use
5121
5144
  * `providerOptions` to set the `reasoningEffort` option, this model setting will be ignored.
5122
5145
  * GPT-5.6 supports 'none' | 'low' | 'medium' | 'high' | 'xhigh' | 'max'.
5146
+ * GPT-6 and later models support 'low' | 'medium' | 'high' | 'xhigh' | 'max'.
5123
5147
  * Supported values vary by model.
5124
5148
  */
5125
5149
  reasoningEffort: import_v423.z.string().nullish(),
5150
+ /**
5151
+ * Updates the reasoning effort for GPT-6 and later models starting with this response
5152
+ * without changing the request-level reasoning effort. This preserves the
5153
+ * request prefix for prompt caching.
5154
+ *
5155
+ * Only supported by GPT-6 and later models in standard, single-agent mode. Cannot be
5156
+ * combined with automatic truncation.
5157
+ */
5158
+ reasoningEffortUpdate: import_v423.z.enum(["low", "medium", "high", "xhigh", "max"]).optional(),
5126
5159
  /**
5127
5160
  * Controls how much model work GPT-5.6 performs before returning a final answer.
5128
5161
  * `standard` is the default. `pro` increases quality, latency, and token usage.
@@ -5720,7 +5753,7 @@ var OpenAIResponsesLanguageModel = class {
5720
5753
  toolChoice,
5721
5754
  responseFormat
5722
5755
  }) {
5723
- var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
5756
+ var _a2, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
5724
5757
  const warnings = [];
5725
5758
  const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);
5726
5759
  if (topK != null) {
@@ -5752,6 +5785,17 @@ var OpenAIResponsesLanguageModel = class {
5752
5785
  });
5753
5786
  }
5754
5787
  const isReasoningModel = (_a2 = openaiOptions == null ? void 0 : openaiOptions.forceReasoning) != null ? _a2 : modelCapabilities.isReasoningModel;
5788
+ let resolvedReasoningEffort = openaiOptions == null ? void 0 : openaiOptions.reasoningEffort;
5789
+ if (resolvedReasoningEffort != null && modelCapabilities.supportedReasoningEfforts != null && !modelCapabilities.supportedReasoningEfforts.includes(
5790
+ resolvedReasoningEffort
5791
+ )) {
5792
+ warnings.push({
5793
+ type: "unsupported",
5794
+ feature: "reasoningEffort",
5795
+ details: `${this.modelId} only supports the following reasoning efforts: ${modelCapabilities.supportedReasoningEfforts.join(", ")}`
5796
+ });
5797
+ resolvedReasoningEffort = void 0;
5798
+ }
5755
5799
  if ((openaiOptions == null ? void 0 : openaiOptions.conversation) && (openaiOptions == null ? void 0 : openaiOptions.previousResponseId)) {
5756
5800
  warnings.push({
5757
5801
  type: "unsupported",
@@ -5804,6 +5848,20 @@ var OpenAIResponsesLanguageModel = class {
5804
5848
  customProviderToolNames: customProviderToolNames.size > 0 ? customProviderToolNames : void 0
5805
5849
  });
5806
5850
  warnings.push(...inputWarnings);
5851
+ const reasoningEffortUpdate = openaiOptions == null ? void 0 : openaiOptions.reasoningEffortUpdate;
5852
+ const configurationUpdateIsSupported = reasoningEffortUpdate == null || modelCapabilities.supportsConfigurationUpdate && (openaiOptions == null ? void 0 : openaiOptions.reasoningMode) !== "pro" && (openaiOptions == null ? void 0 : openaiOptions.truncation) !== "auto";
5853
+ if (reasoningEffortUpdate != null && !configurationUpdateIsSupported) {
5854
+ warnings.push({
5855
+ type: "unsupported",
5856
+ feature: "reasoningEffortUpdate",
5857
+ details: !modelCapabilities.supportsConfigurationUpdate ? "reasoningEffortUpdate is only supported by GPT-6 and later models" : "reasoningEffortUpdate requires standard reasoning mode without automatic truncation"
5858
+ });
5859
+ } else if (reasoningEffortUpdate != null) {
5860
+ input.unshift({
5861
+ type: "configuration_update",
5862
+ reasoning: { effort: reasoningEffortUpdate }
5863
+ });
5864
+ }
5807
5865
  const strictJsonSchema = (_f = openaiOptions == null ? void 0 : openaiOptions.strictJsonSchema) != null ? _f : true;
5808
5866
  let include = openaiOptions == null ? void 0 : openaiOptions.include;
5809
5867
  function addInclude(key) {
@@ -5877,10 +5935,10 @@ var OpenAIResponsesLanguageModel = class {
5877
5935
  top_logprobs: topLogprobs,
5878
5936
  truncation: openaiOptions == null ? void 0 : openaiOptions.truncation,
5879
5937
  // model-specific settings:
5880
- ...isReasoningModel && ((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningMode) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningContext) != null) && {
5938
+ ...isReasoningModel && (resolvedReasoningEffort != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningMode) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningContext) != null) && {
5881
5939
  reasoning: {
5882
- ...(openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null && {
5883
- effort: openaiOptions.reasoningEffort
5940
+ ...resolvedReasoningEffort != null && {
5941
+ effort: resolvedReasoningEffort
5884
5942
  },
5885
5943
  ...(openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null && {
5886
5944
  summary: openaiOptions.reasoningSummary
@@ -5894,6 +5952,14 @@ var OpenAIResponsesLanguageModel = class {
5894
5952
  }
5895
5953
  }
5896
5954
  };
5955
+ if (modelCapabilities.supportsConfigurationUpdate && baseArgs.prompt_cache_retention != null) {
5956
+ baseArgs.prompt_cache_retention = void 0;
5957
+ warnings.push({
5958
+ type: "unsupported",
5959
+ feature: "promptCacheRetention",
5960
+ details: "promptCacheRetention is not supported by GPT-6 and later models; use promptCacheOptions instead"
5961
+ });
5962
+ }
5897
5963
  if (isReasoningModel) {
5898
5964
  if (!((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) === "none" && modelCapabilities.supportsNonReasoningParameters)) {
5899
5965
  if (baseArgs.temperature != null) {
@@ -5913,6 +5979,18 @@ var OpenAIResponsesLanguageModel = class {
5913
5979
  });
5914
5980
  }
5915
5981
  }
5982
+ if (modelCapabilities.supportedReasoningEfforts != null && (baseArgs.top_logprobs != null || ((_i = baseArgs.include) == null ? void 0 : _i.includes("message.output_text.logprobs")))) {
5983
+ baseArgs.top_logprobs = void 0;
5984
+ const filteredInclude = (_j = baseArgs.include) == null ? void 0 : _j.filter(
5985
+ (value) => value !== "message.output_text.logprobs"
5986
+ );
5987
+ baseArgs.include = filteredInclude != null && filteredInclude.length > 0 ? filteredInclude : void 0;
5988
+ warnings.push({
5989
+ type: "unsupported",
5990
+ feature: "logprobs",
5991
+ details: "logprobs is not supported for reasoning models"
5992
+ });
5993
+ }
5916
5994
  } else {
5917
5995
  if ((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null) {
5918
5996
  warnings.push({
@@ -5959,9 +6037,9 @@ var OpenAIResponsesLanguageModel = class {
5959
6037
  });
5960
6038
  delete baseArgs.service_tier;
5961
6039
  }
5962
- const shellToolEnvType = (_k = (_j = (_i = tools == null ? void 0 : tools.find(
6040
+ const shellToolEnvType = (_m = (_l = (_k = tools == null ? void 0 : tools.find(
5963
6041
  (tool) => tool.type === "provider" && tool.id === "openai.shell"
5964
- )) == null ? void 0 : _i.args) == null ? void 0 : _j.environment) == null ? void 0 : _k.type;
6042
+ )) == null ? void 0 : _k.args) == null ? void 0 : _l.environment) == null ? void 0 : _m.type;
5965
6043
  const isShellProviderExecuted = shellToolEnvType === "containerAuto" || shellToolEnvType === "containerReference";
5966
6044
  return {
5967
6045
  webSearchToolName,
@@ -7962,7 +8040,7 @@ var OpenAITranscriptionModel = class {
7962
8040
  };
7963
8041
 
7964
8042
  // src/version.ts
7965
- var VERSION = true ? "3.0.108" : "0.0.0-test";
8043
+ var VERSION = true ? "3.0.109" : "0.0.0-test";
7966
8044
 
7967
8045
  // src/openai-provider.ts
7968
8046
  function createOpenAI(options = {}) {