@ai-sdk/openai-compatible 1.0.0-canary.2 → 1.0.0-canary.3
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 +12 -0
- package/dist/index.js +49 -54
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -21
- package/dist/index.mjs.map +1 -1
- package/internal/dist/index.js +14 -14
- package/internal/dist/index.js.map +1 -1
- package/internal/dist/index.mjs +14 -14
- package/internal/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# @ai-sdk/openai-compatible
|
2
2
|
|
3
|
+
## 1.0.0-canary.3
|
4
|
+
|
5
|
+
### Patch Changes
|
6
|
+
|
7
|
+
- Updated dependencies [a166433]
|
8
|
+
- Updated dependencies [abf9a79]
|
9
|
+
- Updated dependencies [9f95b35]
|
10
|
+
- Updated dependencies [0a87932]
|
11
|
+
- Updated dependencies [6dc848c]
|
12
|
+
- @ai-sdk/provider-utils@3.0.0-canary.3
|
13
|
+
- @ai-sdk/provider@2.0.0-canary.2
|
14
|
+
|
3
15
|
## 1.0.0-canary.2
|
4
16
|
|
5
17
|
### Patch Changes
|
package/dist/index.js
CHANGED
@@ -30,12 +30,11 @@ module.exports = __toCommonJS(src_exports);
|
|
30
30
|
|
31
31
|
// src/openai-compatible-chat-language-model.ts
|
32
32
|
var import_provider3 = require("@ai-sdk/provider");
|
33
|
-
var
|
33
|
+
var import_provider_utils = require("@ai-sdk/provider-utils");
|
34
34
|
var import_zod2 = require("zod");
|
35
35
|
|
36
36
|
// src/convert-to-openai-compatible-chat-messages.ts
|
37
37
|
var import_provider = require("@ai-sdk/provider");
|
38
|
-
var import_provider_utils = require("@ai-sdk/provider-utils");
|
39
38
|
function getOpenAIMetadata(message) {
|
40
39
|
var _a, _b;
|
41
40
|
return (_b = (_a = message == null ? void 0 : message.providerOptions) == null ? void 0 : _a.openaiCompatible) != null ? _b : {};
|
@@ -61,25 +60,26 @@ function convertToOpenAICompatibleChatMessages(prompt) {
|
|
61
60
|
messages.push({
|
62
61
|
role: "user",
|
63
62
|
content: content.map((part) => {
|
64
|
-
var _a;
|
65
63
|
const partMetadata = getOpenAIMetadata(part);
|
66
64
|
switch (part.type) {
|
67
65
|
case "text": {
|
68
66
|
return { type: "text", text: part.text, ...partMetadata };
|
69
67
|
}
|
70
|
-
case "image": {
|
71
|
-
return {
|
72
|
-
type: "image_url",
|
73
|
-
image_url: {
|
74
|
-
url: part.image instanceof URL ? part.image.toString() : `data:${(_a = part.mimeType) != null ? _a : "image/jpeg"};base64,${(0, import_provider_utils.convertUint8ArrayToBase64)(part.image)}`
|
75
|
-
},
|
76
|
-
...partMetadata
|
77
|
-
};
|
78
|
-
}
|
79
68
|
case "file": {
|
80
|
-
|
81
|
-
|
82
|
-
|
69
|
+
if (part.mediaType.startsWith("image/")) {
|
70
|
+
const mediaType = part.mediaType === "image/*" ? "image/jpeg" : part.mediaType;
|
71
|
+
return {
|
72
|
+
type: "image_url",
|
73
|
+
image_url: {
|
74
|
+
url: part.data instanceof URL ? part.data.toString() : `data:${mediaType};base64,${part.data}`
|
75
|
+
},
|
76
|
+
...partMetadata
|
77
|
+
};
|
78
|
+
} else {
|
79
|
+
throw new import_provider.UnsupportedFunctionalityError({
|
80
|
+
functionality: `file part media type ${part.mediaType}`
|
81
|
+
});
|
82
|
+
}
|
83
83
|
}
|
84
84
|
}
|
85
85
|
}),
|
@@ -235,7 +235,7 @@ function prepareTools({
|
|
235
235
|
default: {
|
236
236
|
const _exhaustiveCheck = type;
|
237
237
|
throw new import_provider2.UnsupportedFunctionalityError({
|
238
|
-
functionality: `
|
238
|
+
functionality: `tool choice type: ${_exhaustiveCheck}`
|
239
239
|
});
|
240
240
|
}
|
241
241
|
}
|
@@ -254,7 +254,7 @@ var OpenAICompatibleChatLanguageModel = class {
|
|
254
254
|
this.chunkSchema = createOpenAICompatibleChatChunkSchema(
|
255
255
|
errorStructure.errorSchema
|
256
256
|
);
|
257
|
-
this.failedResponseHandler = (0,
|
257
|
+
this.failedResponseHandler = (0, import_provider_utils.createJsonErrorResponseHandler)(errorStructure);
|
258
258
|
this.supportsStructuredOutputs = (_b = config.supportsStructuredOutputs) != null ? _b : false;
|
259
259
|
}
|
260
260
|
get defaultObjectGenerationMode() {
|
@@ -341,15 +341,15 @@ var OpenAICompatibleChatLanguageModel = class {
|
|
341
341
|
responseHeaders,
|
342
342
|
value: responseBody,
|
343
343
|
rawValue: rawResponse
|
344
|
-
} = await (0,
|
344
|
+
} = await (0, import_provider_utils.postJsonToApi)({
|
345
345
|
url: this.config.url({
|
346
346
|
path: "/chat/completions",
|
347
347
|
modelId: this.modelId
|
348
348
|
}),
|
349
|
-
headers: (0,
|
349
|
+
headers: (0, import_provider_utils.combineHeaders)(this.config.headers(), options.headers),
|
350
350
|
body: args,
|
351
351
|
failedResponseHandler: this.failedResponseHandler,
|
352
|
-
successfulResponseHandler: (0,
|
352
|
+
successfulResponseHandler: (0, import_provider_utils.createJsonResponseHandler)(
|
353
353
|
OpenAICompatibleChatResponseSchema
|
354
354
|
),
|
355
355
|
abortSignal: options.abortSignal,
|
@@ -384,7 +384,7 @@ var OpenAICompatibleChatLanguageModel = class {
|
|
384
384
|
var _a2;
|
385
385
|
return {
|
386
386
|
toolCallType: "function",
|
387
|
-
toolCallId: (_a2 = toolCall.id) != null ? _a2 : (0,
|
387
|
+
toolCallId: (_a2 = toolCall.id) != null ? _a2 : (0, import_provider_utils.generateId)(),
|
388
388
|
toolName: toolCall.function.name,
|
389
389
|
args: toolCall.function.arguments
|
390
390
|
};
|
@@ -460,18 +460,18 @@ var OpenAICompatibleChatLanguageModel = class {
|
|
460
460
|
const { args, warnings } = this.getArgs({ ...options });
|
461
461
|
const body = JSON.stringify({ ...args, stream: true });
|
462
462
|
const metadataExtractor = (_a = this.config.metadataExtractor) == null ? void 0 : _a.createStreamExtractor();
|
463
|
-
const { responseHeaders, value: response } = await (0,
|
463
|
+
const { responseHeaders, value: response } = await (0, import_provider_utils.postJsonToApi)({
|
464
464
|
url: this.config.url({
|
465
465
|
path: "/chat/completions",
|
466
466
|
modelId: this.modelId
|
467
467
|
}),
|
468
|
-
headers: (0,
|
468
|
+
headers: (0, import_provider_utils.combineHeaders)(this.config.headers(), options.headers),
|
469
469
|
body: {
|
470
470
|
...args,
|
471
471
|
stream: true
|
472
472
|
},
|
473
473
|
failedResponseHandler: this.failedResponseHandler,
|
474
|
-
successfulResponseHandler: (0,
|
474
|
+
successfulResponseHandler: (0, import_provider_utils.createEventSourceResponseHandler)(
|
475
475
|
this.chunkSchema
|
476
476
|
),
|
477
477
|
abortSignal: options.abortSignal,
|
@@ -605,11 +605,11 @@ var OpenAICompatibleChatLanguageModel = class {
|
|
605
605
|
argsTextDelta: toolCall2.function.arguments
|
606
606
|
});
|
607
607
|
}
|
608
|
-
if ((0,
|
608
|
+
if ((0, import_provider_utils.isParsableJson)(toolCall2.function.arguments)) {
|
609
609
|
controller.enqueue({
|
610
610
|
type: "tool-call",
|
611
611
|
toolCallType: "function",
|
612
|
-
toolCallId: (_e = toolCall2.id) != null ? _e : (0,
|
612
|
+
toolCallId: (_e = toolCall2.id) != null ? _e : (0, import_provider_utils.generateId)(),
|
613
613
|
toolName: toolCall2.function.name,
|
614
614
|
args: toolCall2.function.arguments
|
615
615
|
});
|
@@ -632,11 +632,11 @@ var OpenAICompatibleChatLanguageModel = class {
|
|
632
632
|
toolName: toolCall.function.name,
|
633
633
|
argsTextDelta: (_i = toolCallDelta.function.arguments) != null ? _i : ""
|
634
634
|
});
|
635
|
-
if (((_j = toolCall.function) == null ? void 0 : _j.name) != null && ((_k = toolCall.function) == null ? void 0 : _k.arguments) != null && (0,
|
635
|
+
if (((_j = toolCall.function) == null ? void 0 : _j.name) != null && ((_k = toolCall.function) == null ? void 0 : _k.arguments) != null && (0, import_provider_utils.isParsableJson)(toolCall.function.arguments)) {
|
636
636
|
controller.enqueue({
|
637
637
|
type: "tool-call",
|
638
638
|
toolCallType: "function",
|
639
|
-
toolCallId: (_l = toolCall.id) != null ? _l : (0,
|
639
|
+
toolCallId: (_l = toolCall.id) != null ? _l : (0, import_provider_utils.generateId)(),
|
640
640
|
toolName: toolCall.function.name,
|
641
641
|
args: toolCall.function.arguments
|
642
642
|
});
|
@@ -752,7 +752,7 @@ var createOpenAICompatibleChatChunkSchema = (errorSchema) => import_zod2.z.union
|
|
752
752
|
]);
|
753
753
|
|
754
754
|
// src/openai-compatible-completion-language-model.ts
|
755
|
-
var
|
755
|
+
var import_provider_utils2 = require("@ai-sdk/provider-utils");
|
756
756
|
var import_zod3 = require("zod");
|
757
757
|
|
758
758
|
// src/convert-to-openai-compatible-completion-prompt.ts
|
@@ -787,13 +787,8 @@ function convertToOpenAICompatibleCompletionPrompt({
|
|
787
787
|
case "text": {
|
788
788
|
return part.text;
|
789
789
|
}
|
790
|
-
case "image": {
|
791
|
-
throw new import_provider4.UnsupportedFunctionalityError({
|
792
|
-
functionality: "images"
|
793
|
-
});
|
794
|
-
}
|
795
790
|
}
|
796
|
-
}).join("");
|
791
|
+
}).filter(Boolean).join("");
|
797
792
|
text += `${user}:
|
798
793
|
${userMessage}
|
799
794
|
|
@@ -853,7 +848,7 @@ var OpenAICompatibleCompletionLanguageModel = class {
|
|
853
848
|
this.chunkSchema = createOpenAICompatibleCompletionChunkSchema(
|
854
849
|
errorStructure.errorSchema
|
855
850
|
);
|
856
|
-
this.failedResponseHandler = (0,
|
851
|
+
this.failedResponseHandler = (0, import_provider_utils2.createJsonErrorResponseHandler)(errorStructure);
|
857
852
|
}
|
858
853
|
get provider() {
|
859
854
|
return this.config.provider;
|
@@ -928,15 +923,15 @@ var OpenAICompatibleCompletionLanguageModel = class {
|
|
928
923
|
responseHeaders,
|
929
924
|
value: response,
|
930
925
|
rawValue: rawResponse
|
931
|
-
} = await (0,
|
926
|
+
} = await (0, import_provider_utils2.postJsonToApi)({
|
932
927
|
url: this.config.url({
|
933
928
|
path: "/completions",
|
934
929
|
modelId: this.modelId
|
935
930
|
}),
|
936
|
-
headers: (0,
|
931
|
+
headers: (0, import_provider_utils2.combineHeaders)(this.config.headers(), options.headers),
|
937
932
|
body: args,
|
938
933
|
failedResponseHandler: this.failedResponseHandler,
|
939
|
-
successfulResponseHandler: (0,
|
934
|
+
successfulResponseHandler: (0, import_provider_utils2.createJsonResponseHandler)(
|
940
935
|
openaiCompatibleCompletionResponseSchema
|
941
936
|
),
|
942
937
|
abortSignal: options.abortSignal,
|
@@ -964,15 +959,15 @@ var OpenAICompatibleCompletionLanguageModel = class {
|
|
964
959
|
...args,
|
965
960
|
stream: true
|
966
961
|
};
|
967
|
-
const { responseHeaders, value: response } = await (0,
|
962
|
+
const { responseHeaders, value: response } = await (0, import_provider_utils2.postJsonToApi)({
|
968
963
|
url: this.config.url({
|
969
964
|
path: "/completions",
|
970
965
|
modelId: this.modelId
|
971
966
|
}),
|
972
|
-
headers: (0,
|
967
|
+
headers: (0, import_provider_utils2.combineHeaders)(this.config.headers(), options.headers),
|
973
968
|
body,
|
974
969
|
failedResponseHandler: this.failedResponseHandler,
|
975
|
-
successfulResponseHandler: (0,
|
970
|
+
successfulResponseHandler: (0, import_provider_utils2.createEventSourceResponseHandler)(
|
976
971
|
this.chunkSchema
|
977
972
|
),
|
978
973
|
abortSignal: options.abortSignal,
|
@@ -1079,7 +1074,7 @@ var createOpenAICompatibleCompletionChunkSchema = (errorSchema) => import_zod3.z
|
|
1079
1074
|
|
1080
1075
|
// src/openai-compatible-embedding-model.ts
|
1081
1076
|
var import_provider5 = require("@ai-sdk/provider");
|
1082
|
-
var
|
1077
|
+
var import_provider_utils3 = require("@ai-sdk/provider-utils");
|
1083
1078
|
var import_zod4 = require("zod");
|
1084
1079
|
var OpenAICompatibleEmbeddingModel = class {
|
1085
1080
|
constructor(modelId, settings, config) {
|
@@ -1113,12 +1108,12 @@ var OpenAICompatibleEmbeddingModel = class {
|
|
1113
1108
|
values
|
1114
1109
|
});
|
1115
1110
|
}
|
1116
|
-
const { responseHeaders, value: response } = await (0,
|
1111
|
+
const { responseHeaders, value: response } = await (0, import_provider_utils3.postJsonToApi)({
|
1117
1112
|
url: this.config.url({
|
1118
1113
|
path: "/embeddings",
|
1119
1114
|
modelId: this.modelId
|
1120
1115
|
}),
|
1121
|
-
headers: (0,
|
1116
|
+
headers: (0, import_provider_utils3.combineHeaders)(this.config.headers(), headers),
|
1122
1117
|
body: {
|
1123
1118
|
model: this.modelId,
|
1124
1119
|
input: values,
|
@@ -1126,10 +1121,10 @@ var OpenAICompatibleEmbeddingModel = class {
|
|
1126
1121
|
dimensions: this.settings.dimensions,
|
1127
1122
|
user: this.settings.user
|
1128
1123
|
},
|
1129
|
-
failedResponseHandler: (0,
|
1124
|
+
failedResponseHandler: (0, import_provider_utils3.createJsonErrorResponseHandler)(
|
1130
1125
|
(_a = this.config.errorStructure) != null ? _a : defaultOpenAICompatibleErrorStructure
|
1131
1126
|
),
|
1132
|
-
successfulResponseHandler: (0,
|
1127
|
+
successfulResponseHandler: (0, import_provider_utils3.createJsonResponseHandler)(
|
1133
1128
|
openaiTextEmbeddingResponseSchema
|
1134
1129
|
),
|
1135
1130
|
abortSignal,
|
@@ -1148,7 +1143,7 @@ var openaiTextEmbeddingResponseSchema = import_zod4.z.object({
|
|
1148
1143
|
});
|
1149
1144
|
|
1150
1145
|
// src/openai-compatible-image-model.ts
|
1151
|
-
var
|
1146
|
+
var import_provider_utils4 = require("@ai-sdk/provider-utils");
|
1152
1147
|
var import_zod5 = require("zod");
|
1153
1148
|
var OpenAICompatibleImageModel = class {
|
1154
1149
|
constructor(modelId, settings, config) {
|
@@ -1187,12 +1182,12 @@ var OpenAICompatibleImageModel = class {
|
|
1187
1182
|
warnings.push({ type: "unsupported-setting", setting: "seed" });
|
1188
1183
|
}
|
1189
1184
|
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
1190
|
-
const { value: response, responseHeaders } = await (0,
|
1185
|
+
const { value: response, responseHeaders } = await (0, import_provider_utils4.postJsonToApi)({
|
1191
1186
|
url: this.config.url({
|
1192
1187
|
path: "/images/generations",
|
1193
1188
|
modelId: this.modelId
|
1194
1189
|
}),
|
1195
|
-
headers: (0,
|
1190
|
+
headers: (0, import_provider_utils4.combineHeaders)(this.config.headers(), headers),
|
1196
1191
|
body: {
|
1197
1192
|
model: this.modelId,
|
1198
1193
|
prompt,
|
@@ -1202,10 +1197,10 @@ var OpenAICompatibleImageModel = class {
|
|
1202
1197
|
response_format: "b64_json",
|
1203
1198
|
...this.settings.user ? { user: this.settings.user } : {}
|
1204
1199
|
},
|
1205
|
-
failedResponseHandler: (0,
|
1200
|
+
failedResponseHandler: (0, import_provider_utils4.createJsonErrorResponseHandler)(
|
1206
1201
|
(_e = this.config.errorStructure) != null ? _e : defaultOpenAICompatibleErrorStructure
|
1207
1202
|
),
|
1208
|
-
successfulResponseHandler: (0,
|
1203
|
+
successfulResponseHandler: (0, import_provider_utils4.createJsonResponseHandler)(
|
1209
1204
|
openaiCompatibleImageResponseSchema
|
1210
1205
|
),
|
1211
1206
|
abortSignal,
|
@@ -1227,9 +1222,9 @@ var openaiCompatibleImageResponseSchema = import_zod5.z.object({
|
|
1227
1222
|
});
|
1228
1223
|
|
1229
1224
|
// src/openai-compatible-provider.ts
|
1230
|
-
var
|
1225
|
+
var import_provider_utils5 = require("@ai-sdk/provider-utils");
|
1231
1226
|
function createOpenAICompatible(options) {
|
1232
|
-
const baseURL = (0,
|
1227
|
+
const baseURL = (0, import_provider_utils5.withoutTrailingSlash)(options.baseURL);
|
1233
1228
|
const providerName = options.name;
|
1234
1229
|
const getHeaders = () => ({
|
1235
1230
|
...options.apiKey && { Authorization: `Bearer ${options.apiKey}` },
|