@ai-sdk/openai-compatible 2.0.13 → 2.0.15

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ai-sdk/openai-compatible
2
2
 
3
+ ## 2.0.15
4
+
5
+ ### Patch Changes
6
+
7
+ - 7116ef3: Use consistent camelCase `openaiCompatible` key for providerOptions. The kebab-case `openai-compatible` key is now deprecated but still supported with a console warning.
8
+
9
+ ## 2.0.14
10
+
11
+ ### Patch Changes
12
+
13
+ - 1612a57: feat(openai-compat): support passing multiple file types
14
+
3
15
  ## 2.0.13
4
16
 
5
17
  ### Patch Changes
package/dist/index.js CHANGED
@@ -98,6 +98,17 @@ function getOpenAIMetadata(message) {
98
98
  var _a, _b;
99
99
  return (_b = (_a = message == null ? void 0 : message.providerOptions) == null ? void 0 : _a.openaiCompatible) != null ? _b : {};
100
100
  }
101
+ function getAudioFormat(mediaType) {
102
+ switch (mediaType) {
103
+ case "audio/wav":
104
+ return "wav";
105
+ case "audio/mp3":
106
+ case "audio/mpeg":
107
+ return "mp3";
108
+ default:
109
+ return null;
110
+ }
111
+ }
101
112
  function convertToOpenAICompatibleChatMessages(prompt) {
102
113
  var _a, _b, _c;
103
114
  const messages = [];
@@ -120,6 +131,7 @@ function convertToOpenAICompatibleChatMessages(prompt) {
120
131
  messages.push({
121
132
  role: "user",
122
133
  content: content.map((part) => {
134
+ var _a2;
123
135
  const partMetadata = getOpenAIMetadata(part);
124
136
  switch (part.type) {
125
137
  case "text": {
@@ -135,11 +147,54 @@ function convertToOpenAICompatibleChatMessages(prompt) {
135
147
  },
136
148
  ...partMetadata
137
149
  };
138
- } else {
139
- throw new import_provider.UnsupportedFunctionalityError({
140
- functionality: `file part media type ${part.mediaType}`
141
- });
142
150
  }
151
+ if (part.mediaType.startsWith("audio/")) {
152
+ if (part.data instanceof URL) {
153
+ throw new import_provider.UnsupportedFunctionalityError({
154
+ functionality: "audio file parts with URLs"
155
+ });
156
+ }
157
+ const format = getAudioFormat(part.mediaType);
158
+ if (format === null) {
159
+ throw new import_provider.UnsupportedFunctionalityError({
160
+ functionality: `audio media type ${part.mediaType}`
161
+ });
162
+ }
163
+ return {
164
+ type: "input_audio",
165
+ input_audio: {
166
+ data: (0, import_provider_utils.convertToBase64)(part.data),
167
+ format
168
+ },
169
+ ...partMetadata
170
+ };
171
+ }
172
+ if (part.mediaType === "application/pdf") {
173
+ if (part.data instanceof URL) {
174
+ throw new import_provider.UnsupportedFunctionalityError({
175
+ functionality: "PDF file parts with URLs"
176
+ });
177
+ }
178
+ return {
179
+ type: "file",
180
+ file: {
181
+ filename: (_a2 = part.filename) != null ? _a2 : "document.pdf",
182
+ file_data: `data:application/pdf;base64,${(0, import_provider_utils.convertToBase64)(part.data)}`
183
+ },
184
+ ...partMetadata
185
+ };
186
+ }
187
+ if (part.mediaType.startsWith("text/")) {
188
+ const textContent = part.data instanceof URL ? part.data.toString() : typeof part.data === "string" ? part.data : new TextDecoder().decode(part.data);
189
+ return {
190
+ type: "text",
191
+ text: textContent,
192
+ ...partMetadata
193
+ };
194
+ }
195
+ throw new import_provider.UnsupportedFunctionalityError({
196
+ functionality: `file part media type ${part.mediaType}`
197
+ });
143
198
  }
144
199
  }
145
200
  }),
@@ -387,9 +442,21 @@ var OpenAICompatibleChatLanguageModel = class {
387
442
  }) {
388
443
  var _a, _b, _c, _d, _e;
389
444
  const warnings = [];
445
+ const deprecatedOptions = await (0, import_provider_utils2.parseProviderOptions)({
446
+ provider: "openai-compatible",
447
+ providerOptions,
448
+ schema: openaiCompatibleProviderOptions
449
+ });
450
+ if (deprecatedOptions != null) {
451
+ warnings.push({
452
+ type: "other",
453
+ message: `The 'openai-compatible' key in providerOptions is deprecated. Use 'openaiCompatible' instead.`
454
+ });
455
+ }
390
456
  const compatibleOptions = Object.assign(
457
+ deprecatedOptions != null ? deprecatedOptions : {},
391
458
  (_a = await (0, import_provider_utils2.parseProviderOptions)({
392
- provider: "openai-compatible",
459
+ provider: "openaiCompatible",
393
460
  providerOptions,
394
461
  schema: openaiCompatibleProviderOptions
395
462
  })) != null ? _a : {},
@@ -1375,9 +1442,22 @@ var OpenAICompatibleEmbeddingModel = class {
1375
1442
  providerOptions
1376
1443
  }) {
1377
1444
  var _a, _b, _c;
1445
+ const warnings = [];
1446
+ const deprecatedOptions = await (0, import_provider_utils4.parseProviderOptions)({
1447
+ provider: "openai-compatible",
1448
+ providerOptions,
1449
+ schema: openaiCompatibleEmbeddingProviderOptions
1450
+ });
1451
+ if (deprecatedOptions != null) {
1452
+ warnings.push({
1453
+ type: "other",
1454
+ message: `The 'openai-compatible' key in providerOptions is deprecated. Use 'openaiCompatible' instead.`
1455
+ });
1456
+ }
1378
1457
  const compatibleOptions = Object.assign(
1458
+ deprecatedOptions != null ? deprecatedOptions : {},
1379
1459
  (_a = await (0, import_provider_utils4.parseProviderOptions)({
1380
- provider: "openai-compatible",
1460
+ provider: "openaiCompatible",
1381
1461
  providerOptions,
1382
1462
  schema: openaiCompatibleEmbeddingProviderOptions
1383
1463
  })) != null ? _a : {},
@@ -1422,7 +1502,7 @@ var OpenAICompatibleEmbeddingModel = class {
1422
1502
  fetch: this.config.fetch
1423
1503
  });
1424
1504
  return {
1425
- warnings: [],
1505
+ warnings,
1426
1506
  embeddings: response.data.map((item) => item.embedding),
1427
1507
  usage: response.usage ? { tokens: response.usage.prompt_tokens } : void 0,
1428
1508
  providerMetadata: response.providerMetadata,
@@ -1558,7 +1638,7 @@ async function fileToBlob(file) {
1558
1638
  var import_provider_utils6 = require("@ai-sdk/provider-utils");
1559
1639
 
1560
1640
  // src/version.ts
1561
- var VERSION = true ? "2.0.13" : "0.0.0-test";
1641
+ var VERSION = true ? "2.0.15" : "0.0.0-test";
1562
1642
 
1563
1643
  // src/openai-compatible-provider.ts
1564
1644
  function createOpenAICompatible(options) {