@ai-sdk/openai 2.0.2 → 2.0.4
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 +13 -0
- package/dist/index.js +27 -23
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +9 -5
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +19 -15
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +9 -5
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @ai-sdk/openai
|
|
2
2
|
|
|
3
|
+
## 2.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c9e0f52: Files from the OpenAI Files API are now supported, mirroring functionality of OpenAI Chat and Responses API, respectively. Also, the AI SDK supports URLs for PDFs in the responses API the same way it did for completions.
|
|
8
|
+
|
|
9
|
+
## 2.0.3
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [90d212f]
|
|
14
|
+
- @ai-sdk/provider-utils@3.0.1
|
|
15
|
+
|
|
3
16
|
## 2.0.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -26,7 +26,7 @@ __export(src_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(src_exports);
|
|
27
27
|
|
|
28
28
|
// src/openai-provider.ts
|
|
29
|
-
var
|
|
29
|
+
var import_provider_utils14 = require("@ai-sdk/provider-utils");
|
|
30
30
|
|
|
31
31
|
// src/openai-chat-language-model.ts
|
|
32
32
|
var import_provider3 = require("@ai-sdk/provider");
|
|
@@ -134,7 +134,7 @@ function convertToOpenAIChatMessages({
|
|
|
134
134
|
}
|
|
135
135
|
return {
|
|
136
136
|
type: "file",
|
|
137
|
-
file: {
|
|
137
|
+
file: typeof part.data === "string" && part.data.startsWith("file-") ? { file_id: part.data } : {
|
|
138
138
|
filename: (_c = part.filename) != null ? _c : `part-${index}.pdf`,
|
|
139
139
|
file_data: `data:application/pdf;base64,${(0, import_provider_utils.convertToBase64)(part.data)}`
|
|
140
140
|
}
|
|
@@ -1938,13 +1938,14 @@ var openaiTranscriptionResponseSchema = import_v412.z.object({
|
|
|
1938
1938
|
|
|
1939
1939
|
// src/responses/openai-responses-language-model.ts
|
|
1940
1940
|
var import_provider8 = require("@ai-sdk/provider");
|
|
1941
|
-
var
|
|
1941
|
+
var import_provider_utils12 = require("@ai-sdk/provider-utils");
|
|
1942
1942
|
var import_v414 = require("zod/v4");
|
|
1943
1943
|
|
|
1944
1944
|
// src/responses/convert-to-openai-responses-messages.ts
|
|
1945
1945
|
var import_provider6 = require("@ai-sdk/provider");
|
|
1946
1946
|
var import_provider_utils10 = require("@ai-sdk/provider-utils");
|
|
1947
1947
|
var import_v413 = require("zod/v4");
|
|
1948
|
+
var import_provider_utils11 = require("@ai-sdk/provider-utils");
|
|
1948
1949
|
async function convertToOpenAIResponsesMessages({
|
|
1949
1950
|
prompt,
|
|
1950
1951
|
systemMessageMode
|
|
@@ -1994,8 +1995,9 @@ async function convertToOpenAIResponsesMessages({
|
|
|
1994
1995
|
const mediaType = part.mediaType === "image/*" ? "image/jpeg" : part.mediaType;
|
|
1995
1996
|
return {
|
|
1996
1997
|
type: "input_image",
|
|
1997
|
-
|
|
1998
|
-
|
|
1998
|
+
...part.data instanceof URL ? { image_url: part.data.toString() } : typeof part.data === "string" && part.data.startsWith("file-") ? { file_id: part.data } : {
|
|
1999
|
+
image_url: `data:${mediaType};base64,${part.data}`
|
|
2000
|
+
},
|
|
1999
2001
|
detail: (_b2 = (_a2 = part.providerOptions) == null ? void 0 : _a2.openai) == null ? void 0 : _b2.imageDetail
|
|
2000
2002
|
};
|
|
2001
2003
|
} else if (part.mediaType === "application/pdf") {
|
|
@@ -2006,8 +2008,10 @@ async function convertToOpenAIResponsesMessages({
|
|
|
2006
2008
|
}
|
|
2007
2009
|
return {
|
|
2008
2010
|
type: "input_file",
|
|
2009
|
-
|
|
2010
|
-
|
|
2011
|
+
...typeof part.data === "string" && part.data.startsWith("file-") ? { file_id: part.data } : {
|
|
2012
|
+
filename: (_c2 = part.filename) != null ? _c2 : `part-${index}.pdf`,
|
|
2013
|
+
file_data: `data:application/pdf;base64,${(0, import_provider_utils11.convertToBase64)(part.data)}`
|
|
2014
|
+
}
|
|
2011
2015
|
};
|
|
2012
2016
|
} else {
|
|
2013
2017
|
throw new import_provider6.UnsupportedFunctionalityError({
|
|
@@ -2282,7 +2286,7 @@ var OpenAIResponsesLanguageModel = class {
|
|
|
2282
2286
|
systemMessageMode: modelConfig.systemMessageMode
|
|
2283
2287
|
});
|
|
2284
2288
|
warnings.push(...messageWarnings);
|
|
2285
|
-
const openaiOptions = await (0,
|
|
2289
|
+
const openaiOptions = await (0, import_provider_utils12.parseProviderOptions)({
|
|
2286
2290
|
provider: "openai",
|
|
2287
2291
|
providerOptions,
|
|
2288
2292
|
schema: openaiResponsesProviderOptionsSchema
|
|
@@ -2407,12 +2411,12 @@ var OpenAIResponsesLanguageModel = class {
|
|
|
2407
2411
|
responseHeaders,
|
|
2408
2412
|
value: response,
|
|
2409
2413
|
rawValue: rawResponse
|
|
2410
|
-
} = await (0,
|
|
2414
|
+
} = await (0, import_provider_utils12.postJsonToApi)({
|
|
2411
2415
|
url,
|
|
2412
|
-
headers: (0,
|
|
2416
|
+
headers: (0, import_provider_utils12.combineHeaders)(this.config.headers(), options.headers),
|
|
2413
2417
|
body,
|
|
2414
2418
|
failedResponseHandler: openaiFailedResponseHandler,
|
|
2415
|
-
successfulResponseHandler: (0,
|
|
2419
|
+
successfulResponseHandler: (0, import_provider_utils12.createJsonResponseHandler)(
|
|
2416
2420
|
import_v414.z.object({
|
|
2417
2421
|
id: import_v414.z.string(),
|
|
2418
2422
|
created_at: import_v414.z.number(),
|
|
@@ -2532,7 +2536,7 @@ var OpenAIResponsesLanguageModel = class {
|
|
|
2532
2536
|
content.push({
|
|
2533
2537
|
type: "source",
|
|
2534
2538
|
sourceType: "url",
|
|
2535
|
-
id: (_d = (_c = (_b = this.config).generateId) == null ? void 0 : _c.call(_b)) != null ? _d : (0,
|
|
2539
|
+
id: (_d = (_c = (_b = this.config).generateId) == null ? void 0 : _c.call(_b)) != null ? _d : (0, import_provider_utils12.generateId)(),
|
|
2536
2540
|
url: annotation.url,
|
|
2537
2541
|
title: annotation.title
|
|
2538
2542
|
});
|
|
@@ -2644,18 +2648,18 @@ var OpenAIResponsesLanguageModel = class {
|
|
|
2644
2648
|
}
|
|
2645
2649
|
async doStream(options) {
|
|
2646
2650
|
const { args: body, warnings } = await this.getArgs(options);
|
|
2647
|
-
const { responseHeaders, value: response } = await (0,
|
|
2651
|
+
const { responseHeaders, value: response } = await (0, import_provider_utils12.postJsonToApi)({
|
|
2648
2652
|
url: this.config.url({
|
|
2649
2653
|
path: "/responses",
|
|
2650
2654
|
modelId: this.modelId
|
|
2651
2655
|
}),
|
|
2652
|
-
headers: (0,
|
|
2656
|
+
headers: (0, import_provider_utils12.combineHeaders)(this.config.headers(), options.headers),
|
|
2653
2657
|
body: {
|
|
2654
2658
|
...body,
|
|
2655
2659
|
stream: true
|
|
2656
2660
|
},
|
|
2657
2661
|
failedResponseHandler: openaiFailedResponseHandler,
|
|
2658
|
-
successfulResponseHandler: (0,
|
|
2662
|
+
successfulResponseHandler: (0, import_provider_utils12.createEventSourceResponseHandler)(
|
|
2659
2663
|
openaiResponsesChunkSchema
|
|
2660
2664
|
),
|
|
2661
2665
|
abortSignal: options.abortSignal,
|
|
@@ -2898,7 +2902,7 @@ var OpenAIResponsesLanguageModel = class {
|
|
|
2898
2902
|
controller.enqueue({
|
|
2899
2903
|
type: "source",
|
|
2900
2904
|
sourceType: "url",
|
|
2901
|
-
id: (_m = (_l = (_k = self.config).generateId) == null ? void 0 : _l.call(_k)) != null ? _m : (0,
|
|
2905
|
+
id: (_m = (_l = (_k = self.config).generateId) == null ? void 0 : _l.call(_k)) != null ? _m : (0, import_provider_utils12.generateId)(),
|
|
2902
2906
|
url: value.annotation.url,
|
|
2903
2907
|
title: value.annotation.title
|
|
2904
2908
|
});
|
|
@@ -3150,7 +3154,7 @@ var openaiResponsesProviderOptionsSchema = import_v414.z.object({
|
|
|
3150
3154
|
});
|
|
3151
3155
|
|
|
3152
3156
|
// src/openai-speech-model.ts
|
|
3153
|
-
var
|
|
3157
|
+
var import_provider_utils13 = require("@ai-sdk/provider-utils");
|
|
3154
3158
|
var import_v415 = require("zod/v4");
|
|
3155
3159
|
var OpenAIProviderOptionsSchema = import_v415.z.object({
|
|
3156
3160
|
instructions: import_v415.z.string().nullish(),
|
|
@@ -3175,7 +3179,7 @@ var OpenAISpeechModel = class {
|
|
|
3175
3179
|
providerOptions
|
|
3176
3180
|
}) {
|
|
3177
3181
|
const warnings = [];
|
|
3178
|
-
const openAIOptions = await (0,
|
|
3182
|
+
const openAIOptions = await (0, import_provider_utils13.parseProviderOptions)({
|
|
3179
3183
|
provider: "openai",
|
|
3180
3184
|
providerOptions,
|
|
3181
3185
|
schema: OpenAIProviderOptionsSchema
|
|
@@ -3228,15 +3232,15 @@ var OpenAISpeechModel = class {
|
|
|
3228
3232
|
value: audio,
|
|
3229
3233
|
responseHeaders,
|
|
3230
3234
|
rawValue: rawResponse
|
|
3231
|
-
} = await (0,
|
|
3235
|
+
} = await (0, import_provider_utils13.postJsonToApi)({
|
|
3232
3236
|
url: this.config.url({
|
|
3233
3237
|
path: "/audio/speech",
|
|
3234
3238
|
modelId: this.modelId
|
|
3235
3239
|
}),
|
|
3236
|
-
headers: (0,
|
|
3240
|
+
headers: (0, import_provider_utils13.combineHeaders)(this.config.headers(), options.headers),
|
|
3237
3241
|
body: requestBody,
|
|
3238
3242
|
failedResponseHandler: openaiFailedResponseHandler,
|
|
3239
|
-
successfulResponseHandler: (0,
|
|
3243
|
+
successfulResponseHandler: (0, import_provider_utils13.createBinaryResponseHandler)(),
|
|
3240
3244
|
abortSignal: options.abortSignal,
|
|
3241
3245
|
fetch: this.config.fetch
|
|
3242
3246
|
});
|
|
@@ -3259,10 +3263,10 @@ var OpenAISpeechModel = class {
|
|
|
3259
3263
|
// src/openai-provider.ts
|
|
3260
3264
|
function createOpenAI(options = {}) {
|
|
3261
3265
|
var _a, _b;
|
|
3262
|
-
const baseURL = (_a = (0,
|
|
3266
|
+
const baseURL = (_a = (0, import_provider_utils14.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.openai.com/v1";
|
|
3263
3267
|
const providerName = (_b = options.name) != null ? _b : "openai";
|
|
3264
3268
|
const getHeaders = () => ({
|
|
3265
|
-
Authorization: `Bearer ${(0,
|
|
3269
|
+
Authorization: `Bearer ${(0, import_provider_utils14.loadApiKey)({
|
|
3266
3270
|
apiKey: options.apiKey,
|
|
3267
3271
|
environmentVariableName: "OPENAI_API_KEY",
|
|
3268
3272
|
description: "OpenAI"
|