@ai-sdk/openai 3.0.110 → 3.0.112
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 +16 -0
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +17 -1
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +10 -3
- package/dist/internal/index.d.ts +10 -3
- package/dist/internal/index.js +16 -0
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +16 -0
- package/dist/internal/index.mjs.map +1 -1
- package/docs/03-openai.mdx +21 -12
- package/package.json +3 -3
- package/src/chat/openai-chat-language-model.ts +7 -0
- package/src/image/openai-image-model-options.ts +8 -0
- package/src/openai-config.ts +5 -0
- package/src/responses/convert-to-openai-responses-input.ts +6 -0
- package/src/responses/openai-responses-api.ts +3 -0
- package/src/responses/openai-responses-language-model.ts +1 -0
- package/src/tool/image-generation.ts +4 -2
|
@@ -92,6 +92,11 @@ type OpenAIConfig = {
|
|
|
92
92
|
headers: () => Record<string, string | undefined>;
|
|
93
93
|
fetch?: FetchFunction;
|
|
94
94
|
generateId?: () => string;
|
|
95
|
+
/**
|
|
96
|
+
* Whether Responses API message input items must include an explicit
|
|
97
|
+
* `type: 'message'` discriminator.
|
|
98
|
+
*/
|
|
99
|
+
explicitMessageItemType?: boolean;
|
|
95
100
|
/**
|
|
96
101
|
* File ID prefixes used to identify file IDs in Responses API.
|
|
97
102
|
* When undefined, all file data is treated as base64 content.
|
|
@@ -122,7 +127,7 @@ declare class OpenAIEmbeddingModel implements EmbeddingModelV3 {
|
|
|
122
127
|
doEmbed({ values, headers, abortSignal, providerOptions, }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>>;
|
|
123
128
|
}
|
|
124
129
|
|
|
125
|
-
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 & {});
|
|
130
|
+
type OpenAIImageModelId = 'dall-e-3' | 'dall-e-2' | 'gpt-image-1' | 'gpt-image-1-mini' | 'gpt-image-1.5' | 'gpt-image-2' | 'gpt-image-2.5-flare' | 'gpt-image-2.5-flare-2026-09-08' | 'gpt-image-2.5-sunburst' | 'gpt-image-2.5-sunburst-2026-09-08' | 'chatgpt-image-latest' | (string & {});
|
|
126
131
|
declare const modelMaxImagesPerCall: Record<OpenAIImageModelId, number>;
|
|
127
132
|
declare function hasDefaultResponseFormat(modelId: string): boolean;
|
|
128
133
|
declare function getMaxImagesPerCall(modelId: OpenAIImageModelId): number;
|
|
@@ -1179,10 +1184,12 @@ type ImageGenerationArgs = {
|
|
|
1179
1184
|
quality?: 'auto' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
|
|
1180
1185
|
/**
|
|
1181
1186
|
* The size of the generated image.
|
|
1182
|
-
* One of 1024x1024, 1024x1536, 1536x1024, or auto.
|
|
1187
|
+
* One of 1024x1024, 1024x1536, 1536x1024, or auto. GPT Image 2 and 2.5
|
|
1188
|
+
* models also accept arbitrary WIDTHxHEIGHT sizes where both are divisible
|
|
1189
|
+
* by 16, e.g. 1536x864.
|
|
1183
1190
|
* Default: auto.
|
|
1184
1191
|
*/
|
|
1185
|
-
size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';
|
|
1192
|
+
size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | (string & {});
|
|
1186
1193
|
};
|
|
1187
1194
|
declare const imageGeneration: (args?: ImageGenerationArgs) => _ai_sdk_provider_utils.Tool<{}, {
|
|
1188
1195
|
/**
|
package/dist/internal/index.d.ts
CHANGED
|
@@ -92,6 +92,11 @@ type OpenAIConfig = {
|
|
|
92
92
|
headers: () => Record<string, string | undefined>;
|
|
93
93
|
fetch?: FetchFunction;
|
|
94
94
|
generateId?: () => string;
|
|
95
|
+
/**
|
|
96
|
+
* Whether Responses API message input items must include an explicit
|
|
97
|
+
* `type: 'message'` discriminator.
|
|
98
|
+
*/
|
|
99
|
+
explicitMessageItemType?: boolean;
|
|
95
100
|
/**
|
|
96
101
|
* File ID prefixes used to identify file IDs in Responses API.
|
|
97
102
|
* When undefined, all file data is treated as base64 content.
|
|
@@ -122,7 +127,7 @@ declare class OpenAIEmbeddingModel implements EmbeddingModelV3 {
|
|
|
122
127
|
doEmbed({ values, headers, abortSignal, providerOptions, }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>>;
|
|
123
128
|
}
|
|
124
129
|
|
|
125
|
-
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 & {});
|
|
130
|
+
type OpenAIImageModelId = 'dall-e-3' | 'dall-e-2' | 'gpt-image-1' | 'gpt-image-1-mini' | 'gpt-image-1.5' | 'gpt-image-2' | 'gpt-image-2.5-flare' | 'gpt-image-2.5-flare-2026-09-08' | 'gpt-image-2.5-sunburst' | 'gpt-image-2.5-sunburst-2026-09-08' | 'chatgpt-image-latest' | (string & {});
|
|
126
131
|
declare const modelMaxImagesPerCall: Record<OpenAIImageModelId, number>;
|
|
127
132
|
declare function hasDefaultResponseFormat(modelId: string): boolean;
|
|
128
133
|
declare function getMaxImagesPerCall(modelId: OpenAIImageModelId): number;
|
|
@@ -1179,10 +1184,12 @@ type ImageGenerationArgs = {
|
|
|
1179
1184
|
quality?: 'auto' | 'low' | 'medium' | 'high' | 'xhigh' | 'max';
|
|
1180
1185
|
/**
|
|
1181
1186
|
* The size of the generated image.
|
|
1182
|
-
* One of 1024x1024, 1024x1536, 1536x1024, or auto.
|
|
1187
|
+
* One of 1024x1024, 1024x1536, 1536x1024, or auto. GPT Image 2 and 2.5
|
|
1188
|
+
* models also accept arbitrary WIDTHxHEIGHT sizes where both are divisible
|
|
1189
|
+
* by 16, e.g. 1536x864.
|
|
1183
1190
|
* Default: auto.
|
|
1184
1191
|
*/
|
|
1185
|
-
size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';
|
|
1192
|
+
size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | (string & {});
|
|
1186
1193
|
};
|
|
1187
1194
|
declare const imageGeneration: (args?: ImageGenerationArgs) => _ai_sdk_provider_utils.Tool<{}, {
|
|
1188
1195
|
/**
|
package/dist/internal/index.js
CHANGED
|
@@ -1175,6 +1175,12 @@ var OpenAIChatLanguageModel = class {
|
|
|
1175
1175
|
fetch: this.config.fetch
|
|
1176
1176
|
});
|
|
1177
1177
|
const choice = response.choices[0];
|
|
1178
|
+
if (choice == null) {
|
|
1179
|
+
throw new import_provider4.InvalidResponseDataError({
|
|
1180
|
+
data: rawResponse,
|
|
1181
|
+
message: "Response did not contain any choices."
|
|
1182
|
+
});
|
|
1183
|
+
}
|
|
1178
1184
|
const content = [];
|
|
1179
1185
|
const text = choice.message.content;
|
|
1180
1186
|
if (text != null && text.length > 0) {
|
|
@@ -2092,6 +2098,10 @@ var modelMaxImagesPerCall = {
|
|
|
2092
2098
|
"gpt-image-1-mini": 10,
|
|
2093
2099
|
"gpt-image-1.5": 10,
|
|
2094
2100
|
"gpt-image-2": 10,
|
|
2101
|
+
"gpt-image-2.5-flare": 10,
|
|
2102
|
+
"gpt-image-2.5-flare-2026-09-08": 10,
|
|
2103
|
+
"gpt-image-2.5-sunburst": 10,
|
|
2104
|
+
"gpt-image-2.5-sunburst-2026-09-08": 10,
|
|
2095
2105
|
"chatgpt-image-latest": 10
|
|
2096
2106
|
};
|
|
2097
2107
|
var defaultResponseFormatPrefixes = ["chatgpt-image-", "gpt-image-"];
|
|
@@ -3231,6 +3241,7 @@ async function convertToOpenAIResponsesInput({
|
|
|
3231
3241
|
toolNameMapping,
|
|
3232
3242
|
systemMessageMode,
|
|
3233
3243
|
providerOptionsName,
|
|
3244
|
+
explicitMessageItemType = false,
|
|
3234
3245
|
fileIdPrefixes,
|
|
3235
3246
|
passThroughUnsupportedFiles = false,
|
|
3236
3247
|
store,
|
|
@@ -3262,6 +3273,7 @@ async function convertToOpenAIResponsesInput({
|
|
|
3262
3273
|
providerOptionsName
|
|
3263
3274
|
);
|
|
3264
3275
|
input.push({
|
|
3276
|
+
...explicitMessageItemType && { type: "message" },
|
|
3265
3277
|
role: "system",
|
|
3266
3278
|
content: promptCacheBreakpoint == null ? content : [
|
|
3267
3279
|
{
|
|
@@ -3279,6 +3291,7 @@ async function convertToOpenAIResponsesInput({
|
|
|
3279
3291
|
providerOptionsName
|
|
3280
3292
|
);
|
|
3281
3293
|
input.push({
|
|
3294
|
+
...explicitMessageItemType && { type: "message" },
|
|
3282
3295
|
role: "developer",
|
|
3283
3296
|
content: promptCacheBreakpoint == null ? content : [
|
|
3284
3297
|
{
|
|
@@ -3308,6 +3321,7 @@ async function convertToOpenAIResponsesInput({
|
|
|
3308
3321
|
}
|
|
3309
3322
|
case "user": {
|
|
3310
3323
|
input.push({
|
|
3324
|
+
...explicitMessageItemType && { type: "message" },
|
|
3311
3325
|
role: "user",
|
|
3312
3326
|
content: content.map((part, index) => {
|
|
3313
3327
|
var _a3, _b2, _c2;
|
|
@@ -3389,6 +3403,7 @@ async function convertToOpenAIResponsesInput({
|
|
|
3389
3403
|
break;
|
|
3390
3404
|
}
|
|
3391
3405
|
input.push({
|
|
3406
|
+
...explicitMessageItemType && { type: "message" },
|
|
3392
3407
|
role: "assistant",
|
|
3393
3408
|
content: [{ type: "output_text", text: part.text }],
|
|
3394
3409
|
id,
|
|
@@ -6148,6 +6163,7 @@ var OpenAIResponsesLanguageModel = class {
|
|
|
6148
6163
|
toolNameMapping,
|
|
6149
6164
|
systemMessageMode: (_c = openaiOptions == null ? void 0 : openaiOptions.systemMessageMode) != null ? _c : isReasoningModel ? "developer" : modelCapabilities.systemMessageMode,
|
|
6150
6165
|
providerOptionsName,
|
|
6166
|
+
explicitMessageItemType: this.config.explicitMessageItemType,
|
|
6151
6167
|
fileIdPrefixes: this.config.fileIdPrefixes,
|
|
6152
6168
|
passThroughUnsupportedFiles: (_d = openaiOptions == null ? void 0 : openaiOptions.passThroughUnsupportedFiles) != null ? _d : false,
|
|
6153
6169
|
store: (_e = openaiOptions == null ? void 0 : openaiOptions.store) != null ? _e : true,
|