@ai-sdk/openai-compatible 3.0.81 → 3.0.83
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 +25 -0
- package/dist/index.d.ts +8 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -24
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts +2 -2
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +13 -4
- package/dist/internal/index.js.map +1 -1
- package/docs/index.mdx +4 -1
- package/package.json +3 -3
- package/src/chat/convert-to-openai-compatible-chat-messages.ts +17 -3
- package/src/chat/openai-compatible-chat-language-model-options.ts +4 -1
- package/src/chat/openai-compatible-chat-language-model.ts +26 -10
- package/src/completion/openai-compatible-completion-language-model.ts +11 -3
- package/src/embedding/openai-compatible-embedding-model.ts +4 -2
- package/src/image/openai-compatible-image-model.ts +14 -6
- package/src/openai-compatible-provider.ts +13 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,30 @@
|
|
|
1
1
|
# @ai-sdk/openai-compatible
|
|
2
2
|
|
|
3
|
+
## 3.0.83
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 4ae6986: fix(openai-compatible): preserve string tool call arguments and safely serialize BigInt and circular structures in tool calls and outputs
|
|
8
|
+
- 5006d83: fix(openai-compatible): send `reasoningEffort: null` as `"reasoning_effort": null`, and stop an unset `reasoningEffort` from overwriting a raw `reasoning_effort` provider option
|
|
9
|
+
- Updated dependencies [51ca5b7]
|
|
10
|
+
- Updated dependencies [dc6f1c3]
|
|
11
|
+
- Updated dependencies [4ae6986]
|
|
12
|
+
- @ai-sdk/provider-utils@5.0.73
|
|
13
|
+
|
|
14
|
+
## 3.0.82
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- 7716e18: Support promises and synchronous or asynchronous callbacks in provider API key and token settings. Resolve credentials per authenticated request while preserving existing authentication behavior and synchronous credential serialization.
|
|
19
|
+
|
|
20
|
+
The experimental OpenAI Live `getServerWebSocketConfig()` method can now resolve asynchronously. Await its result before using the connection settings.
|
|
21
|
+
|
|
22
|
+
- Updated dependencies [7716e18]
|
|
23
|
+
- Updated dependencies [5c247e9]
|
|
24
|
+
- Updated dependencies [dcd2f8d]
|
|
25
|
+
- @ai-sdk/provider-utils@5.0.72
|
|
26
|
+
- @ai-sdk/provider@4.0.35
|
|
27
|
+
|
|
3
28
|
## 3.0.81
|
|
4
29
|
|
|
5
30
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EmbeddingModelV4, ImageModelV4, LanguageModelV4, LanguageModelV4CallOptions, LanguageModelV4GenerateResult, LanguageModelV4StreamResult, LanguageModelV4Usage, ProviderV4, SharedV4ProviderMetadata, SharedV4Warning } from "@ai-sdk/provider";
|
|
2
|
-
import { FetchFunction, InferSchema, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from "@ai-sdk/provider-utils";
|
|
2
|
+
import { FetchFunction, InferSchema, Resolvable, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE } from "@ai-sdk/provider-utils";
|
|
3
3
|
import { ZodType, z } from "zod/v4";
|
|
4
4
|
//#region src/openai-compatible-error.d.ts
|
|
5
5
|
declare const openaiCompatibleErrorDataSchema: z.ZodObject<{
|
|
@@ -21,7 +21,7 @@ type ProviderErrorStructure<T> = {
|
|
|
21
21
|
type OpenAICompatibleChatModelId = string;
|
|
22
22
|
declare const openaiCompatibleLanguageModelChatOptions: z.ZodObject<{
|
|
23
23
|
user: z.ZodOptional<z.ZodString>;
|
|
24
|
-
reasoningEffort: z.ZodOptional<z.ZodString
|
|
24
|
+
reasoningEffort: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
25
25
|
textVerbosity: z.ZodOptional<z.ZodString>;
|
|
26
26
|
strictJsonSchema: z.ZodOptional<z.ZodBoolean>;
|
|
27
27
|
}, z.core.$strip>;
|
|
@@ -74,7 +74,7 @@ type MetadataExtractor = {
|
|
|
74
74
|
//#region src/chat/openai-compatible-chat-language-model.d.ts
|
|
75
75
|
type OpenAICompatibleChatConfig = {
|
|
76
76
|
provider: string;
|
|
77
|
-
headers?:
|
|
77
|
+
headers?: Resolvable<Record<string, string | undefined>>;
|
|
78
78
|
url: (options: {
|
|
79
79
|
modelId: string;
|
|
80
80
|
path: string;
|
|
@@ -171,7 +171,7 @@ type OpenAICompatibleLanguageModelCompletionOptions = InferSchema<typeof openaiC
|
|
|
171
171
|
type OpenAICompatibleCompletionConfig = {
|
|
172
172
|
provider: string;
|
|
173
173
|
includeUsage?: boolean;
|
|
174
|
-
headers?:
|
|
174
|
+
headers?: Resolvable<Record<string, string | undefined>>;
|
|
175
175
|
url: (options: {
|
|
176
176
|
modelId: string;
|
|
177
177
|
path: string;
|
|
@@ -229,7 +229,7 @@ type OpenAICompatibleEmbeddingConfig = {
|
|
|
229
229
|
modelId: string;
|
|
230
230
|
path: string;
|
|
231
231
|
}) => string;
|
|
232
|
-
headers?:
|
|
232
|
+
headers?: Resolvable<Record<string, string | undefined>>;
|
|
233
233
|
fetch?: FetchFunction;
|
|
234
234
|
errorStructure?: ProviderErrorStructure<any>;
|
|
235
235
|
};
|
|
@@ -259,7 +259,7 @@ type OpenAICompatibleImageModelId = string;
|
|
|
259
259
|
//#region src/image/openai-compatible-image-model.d.ts
|
|
260
260
|
type OpenAICompatibleImageModelConfig = {
|
|
261
261
|
provider: string;
|
|
262
|
-
headers?:
|
|
262
|
+
headers?: Resolvable<Record<string, string | undefined>>;
|
|
263
263
|
url: (options: {
|
|
264
264
|
modelId: string;
|
|
265
265
|
path: string;
|
|
@@ -338,8 +338,9 @@ interface OpenAICompatibleProviderSettings {
|
|
|
338
338
|
* API key for authenticating requests. If specified, adds an `Authorization`
|
|
339
339
|
* header to request headers with the value `Bearer <apiKey>`. This will be added
|
|
340
340
|
* before any headers potentially specified in the `headers` option.
|
|
341
|
+
* A function is called before each request and may return a promise.
|
|
341
342
|
*/
|
|
342
|
-
apiKey?: string
|
|
343
|
+
apiKey?: Resolvable<string>;
|
|
343
344
|
/**
|
|
344
345
|
* Optional custom headers to include in requests. These will be added to request headers
|
|
345
346
|
* after any headers potentially added by use of the `apiKey` option.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/openai-compatible-error.ts","../src/chat/openai-compatible-chat-language-model-options.ts","../src/chat/openai-compatible-metadata-extractor.ts","../src/chat/openai-compatible-chat-language-model.ts","../src/completion/openai-compatible-completion-language-model-options.ts","../src/completion/openai-compatible-completion-language-model.ts","../src/embedding/openai-compatible-embedding-model-options.ts","../src/embedding/openai-compatible-embedding-model.ts","../src/image/openai-compatible-image-settings.ts","../src/image/openai-compatible-image-model.ts","../src/image/openai-compatible-image-model-options.ts","../src/openai-compatible-provider.ts","../src/version.ts"],"mappings":";;;;cACa,iCAA+B,EAAA;;;;;;;GAW1C,EAAA,KAAA;KAEU,4BAA4B,EAAE,aACjC;KAGG,uBAAuB;EACjC,aAAa,QAAQ;EACrB,iBAAiB,OAAO;EACxB,eAAe,UAAU,UAAU,QAAQ;;;;KCnBjC;cAEC,0CAAwC,EAAA;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/openai-compatible-error.ts","../src/chat/openai-compatible-chat-language-model-options.ts","../src/chat/openai-compatible-metadata-extractor.ts","../src/chat/openai-compatible-chat-language-model.ts","../src/completion/openai-compatible-completion-language-model-options.ts","../src/completion/openai-compatible-completion-language-model.ts","../src/embedding/openai-compatible-embedding-model-options.ts","../src/embedding/openai-compatible-embedding-model.ts","../src/image/openai-compatible-image-settings.ts","../src/image/openai-compatible-image-model.ts","../src/image/openai-compatible-image-model-options.ts","../src/openai-compatible-provider.ts","../src/version.ts"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InvalidPromptError, InvalidResponseDataError, TooManyEmbeddingValuesForCallError, UnsupportedFunctionalityError } from "@ai-sdk/provider";
|
|
2
|
-
import { StreamingToolCallTracker, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, convertBase64ToUint8Array, convertToBase64, convertToFormData, createBinaryResponseHandler, createEventSourceResponseHandler, createJsonErrorResponseHandler, createJsonResponseHandler, createLanguageModelResponseMetadata, createLanguageModelResponseMetadata as getResponseMetadata, createNullLanguageModelUsage, createStatusCodeErrorResponseHandler, downloadBlob, generateId, getFromApi, getTopLevelMediaType, isCustomReasoning, lazySchema, parseProviderOptions, postFormDataToApi, postJsonToApi, resolveFullMediaType, resolveProviderReference, serializeModelOptions, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
|
|
2
|
+
import { StreamingToolCallTracker, WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, combineHeaders, convertBase64ToUint8Array, convertToBase64, convertToFormData, createBinaryResponseHandler, createEventSourceResponseHandler, createJsonErrorResponseHandler, createJsonResponseHandler, createLanguageModelResponseMetadata, createLanguageModelResponseMetadata as getResponseMetadata, createNullLanguageModelUsage, createStatusCodeErrorResponseHandler, downloadBlob, generateId, getFromApi, getTopLevelMediaType, isCustomReasoning, lazySchema, parseProviderOptions, postFormDataToApi, postJsonToApi, resolve, resolveFullMediaType, resolveProviderReference, resolveWith, secureJsonParse, serializeModelOptions, stringifyWithBigIntAndCycles, withUserAgentSuffix, withoutTrailingSlash, zodSchema } from "@ai-sdk/provider-utils";
|
|
3
3
|
import { z } from "zod/v4";
|
|
4
4
|
//#region src/utils/to-camel-case.ts
|
|
5
5
|
function toCamelCase(str) {
|
|
@@ -143,6 +143,15 @@ function convertToolContentPart(part, provider) {
|
|
|
143
143
|
if (part.type === "custom") throw new UnsupportedFunctionalityError({ functionality: "custom tool content parts" });
|
|
144
144
|
return convertToOpenAICompatibleContentPart(part, provider);
|
|
145
145
|
}
|
|
146
|
+
function serializeToolCallArguments(input) {
|
|
147
|
+
if (typeof input === "string") try {
|
|
148
|
+
secureJsonParse(input);
|
|
149
|
+
return input;
|
|
150
|
+
} catch {
|
|
151
|
+
return JSON.stringify(input);
|
|
152
|
+
}
|
|
153
|
+
return stringifyWithBigIntAndCycles(input);
|
|
154
|
+
}
|
|
146
155
|
function convertToOpenAICompatibleChatMessages(prompt, { provider = "openaiCompatible", providerOptionsKey = "google", supportsMultiPartToolContent = false } = {}) {
|
|
147
156
|
const messages = [];
|
|
148
157
|
for (const { role, content, ...message } of prompt) {
|
|
@@ -190,7 +199,7 @@ function convertToOpenAICompatibleChatMessages(prompt, { provider = "openaiCompa
|
|
|
190
199
|
type: "function",
|
|
191
200
|
function: {
|
|
192
201
|
name: part.toolName,
|
|
193
|
-
arguments:
|
|
202
|
+
arguments: serializeToolCallArguments(part.input)
|
|
194
203
|
},
|
|
195
204
|
...partMetadata,
|
|
196
205
|
...thoughtSignature ? { extra_content: { google: { thought_signature: String(thoughtSignature) } } } : {}
|
|
@@ -223,9 +232,9 @@ function convertToOpenAICompatibleChatMessages(prompt, { provider = "openaiCompa
|
|
|
223
232
|
break;
|
|
224
233
|
case "json":
|
|
225
234
|
case "error-json":
|
|
226
|
-
contentValue =
|
|
235
|
+
contentValue = stringifyWithBigIntAndCycles(output.value);
|
|
227
236
|
break;
|
|
228
|
-
case "content": contentValue = supportsMultiPartToolContent ? output.value.map((part) => convertToolContentPart(part, provider)) :
|
|
237
|
+
case "content": contentValue = supportsMultiPartToolContent ? output.value.map((part) => convertToolContentPart(part, provider)) : stringifyWithBigIntAndCycles(output.value);
|
|
229
238
|
}
|
|
230
239
|
const toolResponseMetadata = getOpenAIMetadata(toolResponse);
|
|
231
240
|
messages.push({
|
|
@@ -272,8 +281,11 @@ const openaiCompatibleLanguageModelChatOptions = z.object({
|
|
|
272
281
|
user: z.string().optional(),
|
|
273
282
|
/**
|
|
274
283
|
* Reasoning effort for reasoning models. Defaults to `medium`.
|
|
284
|
+
*
|
|
285
|
+
* Set to `null` to send `"reasoning_effort": null`, for providers that treat
|
|
286
|
+
* an explicit `null` differently from an omitted field.
|
|
275
287
|
*/
|
|
276
|
-
reasoningEffort: z.string().
|
|
288
|
+
reasoningEffort: z.string().nullish(),
|
|
277
289
|
/**
|
|
278
290
|
* Controls the verbosity of the generated text. Defaults to `medium`.
|
|
279
291
|
*/
|
|
@@ -417,6 +429,10 @@ var OpenAICompatibleChatLanguageModel = class OpenAICompatibleChatLanguageModel
|
|
|
417
429
|
toolChoice
|
|
418
430
|
});
|
|
419
431
|
const metadataKey = resolveProviderOptionsKey(this.providerOptionsName, providerOptions);
|
|
432
|
+
const reasoningEffort = compatibleOptions.reasoningEffort !== void 0 ? compatibleOptions.reasoningEffort : isCustomReasoning(reasoning) ? this.config.mapReasoning != null ? this.config.mapReasoning({
|
|
433
|
+
reasoning,
|
|
434
|
+
warnings
|
|
435
|
+
}) : reasoning : void 0;
|
|
420
436
|
return {
|
|
421
437
|
metadataKey,
|
|
422
438
|
args: {
|
|
@@ -442,10 +458,7 @@ var OpenAICompatibleChatLanguageModel = class OpenAICompatibleChatLanguageModel
|
|
|
442
458
|
...providerOptions?.[this.providerOptionsName],
|
|
443
459
|
...providerOptions?.[toCamelCase(this.providerOptionsName)]
|
|
444
460
|
}).filter(([key]) => !Object.keys(openaiCompatibleLanguageModelChatOptions.shape).includes(key))),
|
|
445
|
-
|
|
446
|
-
reasoning,
|
|
447
|
-
warnings
|
|
448
|
-
}) : reasoning : void 0),
|
|
461
|
+
...reasoningEffort !== void 0 ? { reasoning_effort: reasoningEffort } : {},
|
|
449
462
|
verbosity: compatibleOptions.textVerbosity,
|
|
450
463
|
messages: convertToOpenAICompatibleChatMessages(prompt, {
|
|
451
464
|
provider: this.providerOptionsName,
|
|
@@ -467,7 +480,7 @@ var OpenAICompatibleChatLanguageModel = class OpenAICompatibleChatLanguageModel
|
|
|
467
480
|
path: "/chat/completions",
|
|
468
481
|
modelId: this.modelId
|
|
469
482
|
}),
|
|
470
|
-
headers: combineHeaders(this.config.headers
|
|
483
|
+
headers: combineHeaders(await resolve(this.config.headers), options.headers),
|
|
471
484
|
body: transformedBody,
|
|
472
485
|
failedResponseHandler: this.failedResponseHandler,
|
|
473
486
|
successfulResponseHandler: createJsonResponseHandler(OpenAICompatibleChatResponseSchema),
|
|
@@ -533,7 +546,7 @@ var OpenAICompatibleChatLanguageModel = class OpenAICompatibleChatLanguageModel
|
|
|
533
546
|
path: "/chat/completions",
|
|
534
547
|
modelId: this.modelId
|
|
535
548
|
}),
|
|
536
|
-
headers: combineHeaders(this.config.headers
|
|
549
|
+
headers: combineHeaders(await resolve(this.config.headers), options.headers),
|
|
537
550
|
body,
|
|
538
551
|
failedResponseHandler: this.failedResponseHandler,
|
|
539
552
|
successfulResponseHandler: createEventSourceResponseHandler(this.chunkSchema),
|
|
@@ -1025,7 +1038,7 @@ var OpenAICompatibleCompletionLanguageModel = class OpenAICompatibleCompletionLa
|
|
|
1025
1038
|
path: "/completions",
|
|
1026
1039
|
modelId: this.modelId
|
|
1027
1040
|
}),
|
|
1028
|
-
headers: combineHeaders(this.config.headers
|
|
1041
|
+
headers: combineHeaders(await resolve(this.config.headers), options.headers),
|
|
1029
1042
|
body: args,
|
|
1030
1043
|
failedResponseHandler: this.failedResponseHandler,
|
|
1031
1044
|
successfulResponseHandler: createJsonResponseHandler(openaiCompatibleCompletionResponseSchema),
|
|
@@ -1066,7 +1079,7 @@ var OpenAICompatibleCompletionLanguageModel = class OpenAICompatibleCompletionLa
|
|
|
1066
1079
|
path: "/completions",
|
|
1067
1080
|
modelId: this.modelId
|
|
1068
1081
|
}),
|
|
1069
|
-
headers: combineHeaders(this.config.headers
|
|
1082
|
+
headers: combineHeaders(await resolve(this.config.headers), options.headers),
|
|
1070
1083
|
body,
|
|
1071
1084
|
failedResponseHandler: this.failedResponseHandler,
|
|
1072
1085
|
successfulResponseHandler: createEventSourceResponseHandler(this.chunkSchema),
|
|
@@ -1261,7 +1274,7 @@ var OpenAICompatibleEmbeddingModel = class OpenAICompatibleEmbeddingModel {
|
|
|
1261
1274
|
path: "/embeddings",
|
|
1262
1275
|
modelId: this.modelId
|
|
1263
1276
|
}),
|
|
1264
|
-
headers: combineHeaders(this.config.headers
|
|
1277
|
+
headers: combineHeaders(await resolve(this.config.headers), headers),
|
|
1265
1278
|
body: {
|
|
1266
1279
|
model: this.modelId,
|
|
1267
1280
|
input: values,
|
|
@@ -1349,7 +1362,7 @@ var OpenAICompatibleImageModel = class OpenAICompatibleImageModel {
|
|
|
1349
1362
|
path: isEditing ? "/images/edits" : "/images/generations",
|
|
1350
1363
|
modelId: this.modelId
|
|
1351
1364
|
});
|
|
1352
|
-
const requestHeaders = combineHeaders(this.config.headers
|
|
1365
|
+
const requestHeaders = combineHeaders(await resolve(this.config.headers), headers);
|
|
1353
1366
|
if (isEditing) {
|
|
1354
1367
|
const { value: response, responseHeaders } = await postFormDataToApi({
|
|
1355
1368
|
url,
|
|
@@ -1371,7 +1384,7 @@ var OpenAICompatibleImageModel = class OpenAICompatibleImageModel {
|
|
|
1371
1384
|
return {
|
|
1372
1385
|
images: await this.getImages(response.data, {
|
|
1373
1386
|
url,
|
|
1374
|
-
headers
|
|
1387
|
+
headers,
|
|
1375
1388
|
abortSignal
|
|
1376
1389
|
}),
|
|
1377
1390
|
warnings,
|
|
@@ -1401,7 +1414,7 @@ var OpenAICompatibleImageModel = class OpenAICompatibleImageModel {
|
|
|
1401
1414
|
return {
|
|
1402
1415
|
images: await this.getImages(response.data, {
|
|
1403
1416
|
url,
|
|
1404
|
-
headers
|
|
1417
|
+
headers,
|
|
1405
1418
|
abortSignal
|
|
1406
1419
|
}),
|
|
1407
1420
|
warnings,
|
|
@@ -1426,7 +1439,7 @@ var OpenAICompatibleImageModel = class OpenAICompatibleImageModel {
|
|
|
1426
1439
|
validateUrl: true,
|
|
1427
1440
|
trustedOrigin: options.url,
|
|
1428
1441
|
credentialedOrigin: options.url,
|
|
1429
|
-
headers: options.headers,
|
|
1442
|
+
headers: combineHeaders(await resolve(this.config.headers), options.headers),
|
|
1430
1443
|
abortSignal: options.abortSignal,
|
|
1431
1444
|
fetch: this.config.fetch,
|
|
1432
1445
|
successfulResponseHandler: createBinaryResponseHandler(),
|
|
@@ -1461,7 +1474,7 @@ async function fileToBlob(file) {
|
|
|
1461
1474
|
}
|
|
1462
1475
|
//#endregion
|
|
1463
1476
|
//#region src/version.ts
|
|
1464
|
-
const VERSION = "3.0.
|
|
1477
|
+
const VERSION = "3.0.83";
|
|
1465
1478
|
//#endregion
|
|
1466
1479
|
//#region src/openai-compatible-provider.ts
|
|
1467
1480
|
/**
|
|
@@ -1470,11 +1483,12 @@ const VERSION = "3.0.81";
|
|
|
1470
1483
|
function createOpenAICompatible(options) {
|
|
1471
1484
|
const baseURL = withoutTrailingSlash(options.baseURL);
|
|
1472
1485
|
const providerName = options.name;
|
|
1473
|
-
const
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1486
|
+
const configuredApiKey = options.apiKey;
|
|
1487
|
+
const headers = { ...options.headers };
|
|
1488
|
+
const getHeaders = () => resolveWith(configuredApiKey, (apiKey) => withUserAgentSuffix({
|
|
1489
|
+
...apiKey && { Authorization: `Bearer ${apiKey}` },
|
|
1490
|
+
...headers
|
|
1491
|
+
}, `ai-sdk-openai-compatible/${VERSION}`));
|
|
1478
1492
|
const getCommonModelConfig = (modelType) => ({
|
|
1479
1493
|
provider: `${providerName}.${modelType}`,
|
|
1480
1494
|
url: ({ path }) => {
|