@ai-sdk/openai 3.0.0-beta.84 → 3.0.0-beta.85

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.
@@ -31,13 +31,20 @@ var openaiFailedResponseHandler = createJsonErrorResponseHandler({
31
31
  errorToMessage: (data) => data.error.message
32
32
  });
33
33
 
34
- // src/openai-is-reasoning-model.ts
35
- function isReasoningModel(modelId) {
36
- if (modelId.startsWith("gpt-3")) return false;
37
- if (modelId.startsWith("gpt-4")) return false;
38
- if (modelId.startsWith("chatgpt-4o")) return false;
39
- if (modelId.startsWith("gpt-5-chat")) return false;
40
- return true;
34
+ // src/openai-language-model-capabilities.ts
35
+ function getOpenAILanguageModelCapabilities(modelId) {
36
+ const supportsFlexProcessing = modelId.startsWith("o3") || modelId.startsWith("o4-mini") || modelId.startsWith("gpt-5") && !modelId.startsWith("gpt-5-chat");
37
+ 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");
38
+ const isReasoningModel = !(modelId.startsWith("gpt-3") || modelId.startsWith("gpt-4") || modelId.startsWith("chatgpt-4o") || modelId.startsWith("gpt-5-chat"));
39
+ const supportsNonReasoningParameters = modelId.startsWith("gpt-5.1");
40
+ const systemMessageMode = isReasoningModel ? "developer" : "system";
41
+ return {
42
+ supportsFlexProcessing,
43
+ supportsPriorityProcessing,
44
+ isReasoningModel,
45
+ systemMessageMode,
46
+ supportsNonReasoningParameters
47
+ };
41
48
  }
42
49
 
43
50
  // src/chat/convert-to-openai-chat-messages.ts
@@ -591,13 +598,14 @@ var OpenAIChatLanguageModel = class {
591
598
  providerOptions,
592
599
  schema: openaiChatLanguageModelOptions
593
600
  })) != null ? _a : {};
601
+ const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);
594
602
  if (topK != null) {
595
603
  warnings.push({ type: "unsupported", feature: "topK" });
596
604
  }
597
605
  const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(
598
606
  {
599
607
  prompt,
600
- systemMessageMode: getSystemMessageMode(this.modelId)
608
+ systemMessageMode: modelCapabilities.systemMessageMode
601
609
  }
602
610
  );
603
611
  warnings.push(...messageWarnings);
@@ -643,22 +651,31 @@ var OpenAIChatLanguageModel = class {
643
651
  // messages:
644
652
  messages
645
653
  };
646
- if (isReasoningModel(this.modelId)) {
647
- if (baseArgs.temperature != null) {
648
- baseArgs.temperature = void 0;
649
- warnings.push({
650
- type: "unsupported",
651
- feature: "temperature",
652
- details: "temperature is not supported for reasoning models"
653
- });
654
- }
655
- if (baseArgs.top_p != null) {
656
- baseArgs.top_p = void 0;
657
- warnings.push({
658
- type: "unsupported",
659
- feature: "topP",
660
- details: "topP is not supported for reasoning models"
661
- });
654
+ if (modelCapabilities.isReasoningModel) {
655
+ if (openaiOptions.reasoningEffort !== "none" || !modelCapabilities.supportsNonReasoningParameters) {
656
+ if (baseArgs.temperature != null) {
657
+ baseArgs.temperature = void 0;
658
+ warnings.push({
659
+ type: "unsupported",
660
+ feature: "temperature",
661
+ details: "temperature is not supported for reasoning models"
662
+ });
663
+ }
664
+ if (baseArgs.top_p != null) {
665
+ baseArgs.top_p = void 0;
666
+ warnings.push({
667
+ type: "unsupported",
668
+ feature: "topP",
669
+ details: "topP is not supported for reasoning models"
670
+ });
671
+ }
672
+ if (baseArgs.logprobs != null) {
673
+ baseArgs.logprobs = void 0;
674
+ warnings.push({
675
+ type: "other",
676
+ message: "logprobs is not supported for reasoning models"
677
+ });
678
+ }
662
679
  }
663
680
  if (baseArgs.frequency_penalty != null) {
664
681
  baseArgs.frequency_penalty = void 0;
@@ -683,13 +700,6 @@ var OpenAIChatLanguageModel = class {
683
700
  message: "logitBias is not supported for reasoning models"
684
701
  });
685
702
  }
686
- if (baseArgs.logprobs != null) {
687
- baseArgs.logprobs = void 0;
688
- warnings.push({
689
- type: "other",
690
- message: "logprobs is not supported for reasoning models"
691
- });
692
- }
693
703
  if (baseArgs.top_logprobs != null) {
694
704
  baseArgs.top_logprobs = void 0;
695
705
  warnings.push({
@@ -713,7 +723,7 @@ var OpenAIChatLanguageModel = class {
713
723
  });
714
724
  }
715
725
  }
716
- if (openaiOptions.serviceTier === "flex" && !supportsFlexProcessing(this.modelId)) {
726
+ if (openaiOptions.serviceTier === "flex" && !modelCapabilities.supportsFlexProcessing) {
717
727
  warnings.push({
718
728
  type: "unsupported",
719
729
  feature: "serviceTier",
@@ -721,7 +731,7 @@ var OpenAIChatLanguageModel = class {
721
731
  });
722
732
  baseArgs.service_tier = void 0;
723
733
  }
724
- if (openaiOptions.serviceTier === "priority" && !supportsPriorityProcessing(this.modelId)) {
734
+ if (openaiOptions.serviceTier === "priority" && !modelCapabilities.supportsPriorityProcessing) {
725
735
  warnings.push({
726
736
  type: "unsupported",
727
737
  feature: "serviceTier",
@@ -1040,15 +1050,6 @@ var OpenAIChatLanguageModel = class {
1040
1050
  };
1041
1051
  }
1042
1052
  };
1043
- function supportsFlexProcessing(modelId) {
1044
- return modelId.startsWith("o3") || modelId.startsWith("o4-mini") || modelId.startsWith("gpt-5") && !modelId.startsWith("gpt-5-chat");
1045
- }
1046
- function supportsPriorityProcessing(modelId) {
1047
- return 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");
1048
- }
1049
- function getSystemMessageMode(modelId) {
1050
- return isReasoningModel(modelId) ? "developer" : "system";
1051
- }
1052
1053
 
1053
1054
  // src/completion/openai-completion-language-model.ts
1054
1055
  import {
@@ -4049,7 +4050,7 @@ var OpenAIResponsesLanguageModel = class {
4049
4050
  }) {
4050
4051
  var _a, _b, _c, _d;
4051
4052
  const warnings = [];
4052
- const modelConfig = getResponsesModelConfig(this.modelId);
4053
+ const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);
4053
4054
  if (topK != null) {
4054
4055
  warnings.push({ type: "unsupported", feature: "topK" });
4055
4056
  }
@@ -4094,7 +4095,7 @@ var OpenAIResponsesLanguageModel = class {
4094
4095
  const { input, warnings: inputWarnings } = await convertToOpenAIResponsesInput({
4095
4096
  prompt,
4096
4097
  toolNameMapping,
4097
- systemMessageMode: modelConfig.systemMessageMode,
4098
+ systemMessageMode: modelCapabilities.systemMessageMode,
4098
4099
  fileIdPrefixes: this.config.fileIdPrefixes,
4099
4100
  store: (_a = openaiOptions == null ? void 0 : openaiOptions.store) != null ? _a : true,
4100
4101
  hasLocalShellTool: hasOpenAITool("openai.local_shell"),
@@ -4128,7 +4129,7 @@ var OpenAIResponsesLanguageModel = class {
4128
4129
  addInclude("code_interpreter_call.outputs");
4129
4130
  }
4130
4131
  const store = openaiOptions == null ? void 0 : openaiOptions.store;
4131
- if (store === false && modelConfig.isReasoningModel) {
4132
+ if (store === false && modelCapabilities.isReasoningModel) {
4132
4133
  addInclude("reasoning.encrypted_content");
4133
4134
  }
4134
4135
  const baseArgs = {
@@ -4170,7 +4171,7 @@ var OpenAIResponsesLanguageModel = class {
4170
4171
  top_logprobs: topLogprobs,
4171
4172
  truncation: openaiOptions == null ? void 0 : openaiOptions.truncation,
4172
4173
  // model-specific settings:
4173
- ...modelConfig.isReasoningModel && ((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null) && {
4174
+ ...modelCapabilities.isReasoningModel && ((openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null || (openaiOptions == null ? void 0 : openaiOptions.reasoningSummary) != null) && {
4174
4175
  reasoning: {
4175
4176
  ...(openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) != null && {
4176
4177
  effort: openaiOptions.reasoningEffort
@@ -4181,7 +4182,7 @@ var OpenAIResponsesLanguageModel = class {
4181
4182
  }
4182
4183
  }
4183
4184
  };
4184
- if (modelConfig.isReasoningModel) {
4185
+ if (modelCapabilities.isReasoningModel || (openaiOptions == null ? void 0 : openaiOptions.reasoningEffort) === "none" && modelCapabilities.supportsNonReasoningParameters) {
4185
4186
  if (baseArgs.temperature != null) {
4186
4187
  baseArgs.temperature = void 0;
4187
4188
  warnings.push({
@@ -4214,7 +4215,7 @@ var OpenAIResponsesLanguageModel = class {
4214
4215
  });
4215
4216
  }
4216
4217
  }
4217
- if ((openaiOptions == null ? void 0 : openaiOptions.serviceTier) === "flex" && !modelConfig.supportsFlexProcessing) {
4218
+ if ((openaiOptions == null ? void 0 : openaiOptions.serviceTier) === "flex" && !modelCapabilities.supportsFlexProcessing) {
4218
4219
  warnings.push({
4219
4220
  type: "unsupported",
4220
4221
  feature: "serviceTier",
@@ -4222,7 +4223,7 @@ var OpenAIResponsesLanguageModel = class {
4222
4223
  });
4223
4224
  delete baseArgs.service_tier;
4224
4225
  }
4225
- if ((openaiOptions == null ? void 0 : openaiOptions.serviceTier) === "priority" && !modelConfig.supportsPriorityProcessing) {
4226
+ if ((openaiOptions == null ? void 0 : openaiOptions.serviceTier) === "priority" && !modelCapabilities.supportsPriorityProcessing) {
4226
4227
  warnings.push({
4227
4228
  type: "unsupported",
4228
4229
  feature: "serviceTier",
@@ -5355,18 +5356,6 @@ function isResponseAnnotationAddedChunk(chunk) {
5355
5356
  function isErrorChunk(chunk) {
5356
5357
  return chunk.type === "error";
5357
5358
  }
5358
- function getResponsesModelConfig(modelId) {
5359
- const supportsFlexProcessing2 = modelId.startsWith("o3") || modelId.startsWith("o4-mini") || modelId.startsWith("gpt-5") && !modelId.startsWith("gpt-5-chat");
5360
- const supportsPriorityProcessing2 = 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");
5361
- const isReasoningModel2 = isReasoningModel(modelId);
5362
- const systemMessageMode = isReasoningModel2 ? "developer" : "system";
5363
- return {
5364
- systemMessageMode,
5365
- supportsFlexProcessing: supportsFlexProcessing2,
5366
- supportsPriorityProcessing: supportsPriorityProcessing2,
5367
- isReasoningModel: isReasoningModel2
5368
- };
5369
- }
5370
5359
  function mapWebSearchOutput(action) {
5371
5360
  var _a;
5372
5361
  switch (action.type) {