@ai-sdk/baseten 2.0.0-beta.3 → 2.0.0-beta.31

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,249 @@
1
1
  # @ai-sdk/baseten
2
2
 
3
+ ## 2.0.0-beta.31
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [2e98477]
8
+ - Updated dependencies [bfb756d]
9
+ - @ai-sdk/provider-utils@5.0.0-beta.26
10
+ - @ai-sdk/openai-compatible@3.0.0-beta.31
11
+
12
+ ## 2.0.0-beta.30
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies [eea8d98]
17
+ - @ai-sdk/provider-utils@5.0.0-beta.25
18
+ - @ai-sdk/openai-compatible@3.0.0-beta.30
19
+
20
+ ## 2.0.0-beta.29
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies [f807e45]
25
+ - @ai-sdk/provider-utils@5.0.0-beta.24
26
+ - @ai-sdk/openai-compatible@3.0.0-beta.29
27
+
28
+ ## 2.0.0-beta.28
29
+
30
+ ### Patch Changes
31
+
32
+ - Updated dependencies [350ea38]
33
+ - @ai-sdk/provider-utils@5.0.0-beta.23
34
+ - @ai-sdk/openai-compatible@3.0.0-beta.28
35
+
36
+ ## 2.0.0-beta.27
37
+
38
+ ### Patch Changes
39
+
40
+ - Updated dependencies [083947b]
41
+ - @ai-sdk/provider-utils@5.0.0-beta.22
42
+ - @ai-sdk/openai-compatible@3.0.0-beta.27
43
+
44
+ ## 2.0.0-beta.26
45
+
46
+ ### Patch Changes
47
+
48
+ - Updated dependencies [add1126]
49
+ - @ai-sdk/provider-utils@5.0.0-beta.21
50
+ - @ai-sdk/openai-compatible@3.0.0-beta.26
51
+
52
+ ## 2.0.0-beta.25
53
+
54
+ ### Patch Changes
55
+
56
+ - Updated dependencies [b3976a2]
57
+ - Updated dependencies [ff5eba1]
58
+ - @ai-sdk/provider-utils@5.0.0-beta.20
59
+ - @ai-sdk/openai-compatible@3.0.0-beta.25
60
+ - @ai-sdk/provider@4.0.0-beta.12
61
+
62
+ ## 2.0.0-beta.24
63
+
64
+ ### Major Changes
65
+
66
+ - ef992f8: Remove CommonJS exports from all packages. All packages are now ESM-only (`"type": "module"`). Consumers using `require()` must switch to ESM `import` syntax.
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [ef992f8]
71
+ - @ai-sdk/openai-compatible@3.0.0-beta.24
72
+ - @ai-sdk/provider@4.0.0-beta.11
73
+ - @ai-sdk/provider-utils@5.0.0-beta.19
74
+
75
+ ## 2.0.0-beta.23
76
+
77
+ ### Patch Changes
78
+
79
+ - 90e2d8a: chore: fix unused vars not being flagged by our lint tooling
80
+ - Updated dependencies [90e2d8a]
81
+ - @ai-sdk/openai-compatible@3.0.0-beta.23
82
+ - @ai-sdk/provider-utils@5.0.0-beta.18
83
+
84
+ ## 2.0.0-beta.22
85
+
86
+ ### Patch Changes
87
+
88
+ - Updated dependencies [3ae1786]
89
+ - @ai-sdk/provider-utils@5.0.0-beta.17
90
+ - @ai-sdk/openai-compatible@3.0.0-beta.22
91
+
92
+ ## 2.0.0-beta.21
93
+
94
+ ### Patch Changes
95
+
96
+ - Updated dependencies [176466a]
97
+ - @ai-sdk/provider@4.0.0-beta.10
98
+ - @ai-sdk/openai-compatible@3.0.0-beta.21
99
+ - @ai-sdk/provider-utils@5.0.0-beta.16
100
+
101
+ ## 2.0.0-beta.20
102
+
103
+ ### Patch Changes
104
+
105
+ - Updated dependencies [e311194]
106
+ - @ai-sdk/provider@4.0.0-beta.9
107
+ - @ai-sdk/openai-compatible@3.0.0-beta.20
108
+ - @ai-sdk/provider-utils@5.0.0-beta.15
109
+
110
+ ## 2.0.0-beta.19
111
+
112
+ ### Patch Changes
113
+
114
+ - Updated dependencies [34bd95d]
115
+ - Updated dependencies [008271d]
116
+ - @ai-sdk/provider@4.0.0-beta.8
117
+ - @ai-sdk/openai-compatible@3.0.0-beta.19
118
+ - @ai-sdk/provider-utils@5.0.0-beta.14
119
+
120
+ ## 2.0.0-beta.18
121
+
122
+ ### Patch Changes
123
+
124
+ - Updated dependencies [b0c2869]
125
+ - Updated dependencies [7e26e81]
126
+ - @ai-sdk/provider-utils@5.0.0-beta.13
127
+ - @ai-sdk/openai-compatible@3.0.0-beta.18
128
+
129
+ ## 2.0.0-beta.17
130
+
131
+ ### Patch Changes
132
+
133
+ - Updated dependencies [816ff67]
134
+ - @ai-sdk/openai-compatible@3.0.0-beta.17
135
+
136
+ ## 2.0.0-beta.16
137
+
138
+ ### Patch Changes
139
+
140
+ - Updated dependencies [46d1149]
141
+ - @ai-sdk/provider-utils@5.0.0-beta.12
142
+ - @ai-sdk/openai-compatible@3.0.0-beta.16
143
+
144
+ ## 2.0.0-beta.15
145
+
146
+ ### Patch Changes
147
+
148
+ - Updated dependencies [6fd51c0]
149
+ - @ai-sdk/provider-utils@5.0.0-beta.11
150
+ - @ai-sdk/provider@4.0.0-beta.7
151
+ - @ai-sdk/openai-compatible@3.0.0-beta.15
152
+
153
+ ## 2.0.0-beta.14
154
+
155
+ ### Patch Changes
156
+
157
+ - Updated dependencies [c29a26f]
158
+ - @ai-sdk/openai-compatible@3.0.0-beta.14
159
+ - @ai-sdk/provider-utils@5.0.0-beta.10
160
+ - @ai-sdk/provider@4.0.0-beta.6
161
+
162
+ ## 2.0.0-beta.13
163
+
164
+ ### Patch Changes
165
+
166
+ - 38fc777: Add AI Gateway hint to provider READMEs
167
+ - Updated dependencies [38fc777]
168
+ - @ai-sdk/openai-compatible@3.0.0-beta.13
169
+
170
+ ## 2.0.0-beta.12
171
+
172
+ ### Patch Changes
173
+
174
+ - Updated dependencies [2e17091]
175
+ - @ai-sdk/provider-utils@5.0.0-beta.9
176
+ - @ai-sdk/openai-compatible@3.0.0-beta.12
177
+
178
+ ## 2.0.0-beta.11
179
+
180
+ ### Patch Changes
181
+
182
+ - Updated dependencies [986c6fd]
183
+ - Updated dependencies [493295c]
184
+ - @ai-sdk/provider-utils@5.0.0-beta.8
185
+ - @ai-sdk/openai-compatible@3.0.0-beta.11
186
+
187
+ ## 2.0.0-beta.10
188
+
189
+ ### Patch Changes
190
+
191
+ - Updated dependencies [1f509d4]
192
+ - @ai-sdk/provider-utils@5.0.0-beta.7
193
+ - @ai-sdk/provider@4.0.0-beta.5
194
+ - @ai-sdk/openai-compatible@3.0.0-beta.10
195
+
196
+ ## 2.0.0-beta.9
197
+
198
+ ### Patch Changes
199
+
200
+ - Updated dependencies [74d520f]
201
+ - @ai-sdk/openai-compatible@3.0.0-beta.9
202
+
203
+ ## 2.0.0-beta.8
204
+
205
+ ### Patch Changes
206
+
207
+ - Updated dependencies [3887c70]
208
+ - @ai-sdk/provider-utils@5.0.0-beta.6
209
+ - @ai-sdk/provider@4.0.0-beta.4
210
+ - @ai-sdk/openai-compatible@3.0.0-beta.8
211
+
212
+ ## 2.0.0-beta.7
213
+
214
+ ### Patch Changes
215
+
216
+ - Updated dependencies [776b617]
217
+ - @ai-sdk/provider-utils@5.0.0-beta.5
218
+ - @ai-sdk/provider@4.0.0-beta.3
219
+ - @ai-sdk/openai-compatible@3.0.0-beta.7
220
+
221
+ ## 2.0.0-beta.6
222
+
223
+ ### Patch Changes
224
+
225
+ - Updated dependencies [61753c3]
226
+ - @ai-sdk/provider-utils@5.0.0-beta.4
227
+ - @ai-sdk/openai-compatible@3.0.0-beta.6
228
+
229
+ ## 2.0.0-beta.5
230
+
231
+ ### Patch Changes
232
+
233
+ - Updated dependencies [f7d4f01]
234
+ - @ai-sdk/provider-utils@5.0.0-beta.3
235
+ - @ai-sdk/provider@4.0.0-beta.2
236
+ - @ai-sdk/openai-compatible@3.0.0-beta.5
237
+
238
+ ## 2.0.0-beta.4
239
+
240
+ ### Patch Changes
241
+
242
+ - Updated dependencies [5c2a5a2]
243
+ - @ai-sdk/provider@4.0.0-beta.1
244
+ - @ai-sdk/openai-compatible@3.0.0-beta.4
245
+ - @ai-sdk/provider-utils@5.0.0-beta.2
246
+
3
247
  ## 2.0.0-beta.3
4
248
 
5
249
  ### Patch Changes
@@ -348,13 +592,13 @@
348
592
  Before
349
593
 
350
594
  ```ts
351
- model.textEmbeddingModel('my-model-id');
595
+ model.textEmbeddingModel("my-model-id");
352
596
  ```
353
597
 
354
598
  After
355
599
 
356
600
  ```ts
357
- model.embeddingModel('my-model-id');
601
+ model.embeddingModel("my-model-id");
358
602
  ```
359
603
 
360
604
  - 95f65c2: chore: use import \* from zod/v4
@@ -577,13 +821,13 @@
577
821
  Before
578
822
 
579
823
  ```ts
580
- model.textEmbeddingModel('my-model-id');
824
+ model.textEmbeddingModel("my-model-id");
581
825
  ```
582
826
 
583
827
  After
584
828
 
585
829
  ```ts
586
- model.embeddingModel('my-model-id');
830
+ model.embeddingModel("my-model-id");
587
831
  ```
588
832
 
589
833
  - Updated dependencies [8d9e8ad]
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  The **[Baseten provider](https://ai-sdk.dev/providers/ai-sdk-providers/baseten)** for the [AI SDK](https://ai-sdk.dev/docs) contains language model and embedding model support for the [Baseten](https://baseten.co) platform.
4
4
 
5
+ > **Deploying to Vercel?** With Vercel's AI Gateway you can access Baseten (and hundreds of models from other providers) — no additional packages, API keys, or extra cost. [Get started with AI Gateway](https://vercel.com/ai-gateway).
6
+
5
7
  ## Setup
6
8
 
7
9
  The Baseten provider is available in the `@ai-sdk/baseten` module. You can install it with
package/dist/index.js CHANGED
@@ -1,44 +1,25 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var index_exports = {};
22
- __export(index_exports, {
23
- VERSION: () => VERSION,
24
- baseten: () => baseten,
25
- createBaseten: () => createBaseten
26
- });
27
- module.exports = __toCommonJS(index_exports);
28
-
29
1
  // src/baseten-provider.ts
30
- var import_openai_compatible = require("@ai-sdk/openai-compatible");
31
- var import_provider = require("@ai-sdk/provider");
32
- var import_provider_utils = require("@ai-sdk/provider-utils");
33
- var import_v4 = require("zod/v4");
34
- var import_performance_client = require("@basetenlabs/performance-client");
2
+ import {
3
+ OpenAICompatibleChatLanguageModel,
4
+ OpenAICompatibleEmbeddingModel
5
+ } from "@ai-sdk/openai-compatible";
6
+ import {
7
+ NoSuchModelError
8
+ } from "@ai-sdk/provider";
9
+ import {
10
+ loadApiKey,
11
+ withoutTrailingSlash,
12
+ withUserAgentSuffix
13
+ } from "@ai-sdk/provider-utils";
14
+ import { z } from "zod/v4";
15
+ import { PerformanceClient } from "@basetenlabs/performance-client";
35
16
 
36
17
  // src/version.ts
37
- var VERSION = true ? "2.0.0-beta.3" : "0.0.0-test";
18
+ var VERSION = true ? "2.0.0-beta.31" : "0.0.0-test";
38
19
 
39
20
  // src/baseten-provider.ts
40
- var basetenErrorSchema = import_v4.z.object({
41
- error: import_v4.z.string()
21
+ var basetenErrorSchema = z.object({
22
+ error: z.string()
42
23
  });
43
24
  var basetenErrorStructure = {
44
25
  errorSchema: basetenErrorSchema,
@@ -47,10 +28,10 @@ var basetenErrorStructure = {
47
28
  var defaultBaseURL = "https://inference.baseten.co/v1";
48
29
  function createBaseten(options = {}) {
49
30
  var _a;
50
- const baseURL = (0, import_provider_utils.withoutTrailingSlash)((_a = options.baseURL) != null ? _a : defaultBaseURL);
51
- const getHeaders = () => (0, import_provider_utils.withUserAgentSuffix)(
31
+ const baseURL = withoutTrailingSlash((_a = options.baseURL) != null ? _a : defaultBaseURL);
32
+ const getHeaders = () => withUserAgentSuffix(
52
33
  {
53
- Authorization: `Bearer ${(0, import_provider_utils.loadApiKey)({
34
+ Authorization: `Bearer ${loadApiKey({
54
35
  apiKey: options.apiKey,
55
36
  environmentVariableName: "BASETEN_API_KEY",
56
37
  description: "Baseten API key"
@@ -75,7 +56,7 @@ function createBaseten(options = {}) {
75
56
  if (customURL) {
76
57
  const isOpenAICompatible = customURL.includes("/sync/v1");
77
58
  if (isOpenAICompatible) {
78
- return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId != null ? modelId : "placeholder", {
59
+ return new OpenAICompatibleChatLanguageModel(modelId != null ? modelId : "placeholder", {
79
60
  ...getCommonModelConfig("chat", customURL),
80
61
  errorStructure: basetenErrorStructure
81
62
  });
@@ -85,7 +66,7 @@ function createBaseten(options = {}) {
85
66
  );
86
67
  }
87
68
  }
88
- return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId != null ? modelId : "chat", {
69
+ return new OpenAICompatibleChatLanguageModel(modelId != null ? modelId : "chat", {
89
70
  ...getCommonModelConfig("chat"),
90
71
  errorStructure: basetenErrorStructure
91
72
  });
@@ -99,7 +80,7 @@ function createBaseten(options = {}) {
99
80
  }
100
81
  const isOpenAICompatible = customURL.includes("/sync");
101
82
  if (isOpenAICompatible) {
102
- const model = new import_openai_compatible.OpenAICompatibleEmbeddingModel(
83
+ const model = new OpenAICompatibleEmbeddingModel(
103
84
  modelId != null ? modelId : "embeddings",
104
85
  {
105
86
  ...getCommonModelConfig("embedding", customURL),
@@ -107,9 +88,9 @@ function createBaseten(options = {}) {
107
88
  }
108
89
  );
109
90
  const performanceClientURL = customURL.replace("/sync/v1", "/sync");
110
- const performanceClient = new import_performance_client.PerformanceClient(
91
+ const performanceClient = new PerformanceClient(
111
92
  performanceClientURL,
112
- (0, import_provider_utils.loadApiKey)({
93
+ loadApiKey({
113
94
  apiKey: options.apiKey,
114
95
  environmentVariableName: "BASETEN_API_KEY",
115
96
  description: "Baseten API key"
@@ -144,17 +125,16 @@ function createBaseten(options = {}) {
144
125
  provider.chatModel = createChatModel;
145
126
  provider.languageModel = createChatModel;
146
127
  provider.imageModel = (modelId) => {
147
- throw new import_provider.NoSuchModelError({ modelId, modelType: "imageModel" });
128
+ throw new NoSuchModelError({ modelId, modelType: "imageModel" });
148
129
  };
149
130
  provider.embeddingModel = createEmbeddingModel;
150
131
  provider.textEmbeddingModel = createEmbeddingModel;
151
132
  return provider;
152
133
  }
153
134
  var baseten = createBaseten();
154
- // Annotate the CommonJS export names for ESM import in node:
155
- 0 && (module.exports = {
135
+ export {
156
136
  VERSION,
157
137
  baseten,
158
138
  createBaseten
159
- });
139
+ };
160
140
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/baseten-provider.ts","../src/version.ts"],"sourcesContent":["export type { BasetenChatModelId } from './baseten-chat-options';\nexport { baseten, createBaseten } from './baseten-provider';\nexport type {\n BasetenProvider,\n BasetenProviderSettings,\n BasetenErrorData,\n} from './baseten-provider';\nexport type { BasetenEmbeddingModelOptions } from './baseten-embedding-options';\nexport { VERSION } from './version';\n","import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleEmbeddingModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n EmbeddingModelV4,\n LanguageModelV4,\n NoSuchModelError,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { BasetenChatModelId } from './baseten-chat-options';\nimport { BasetenEmbeddingModelId } from './baseten-embedding-options';\nimport { PerformanceClient } from '@basetenlabs/performance-client';\nimport { VERSION } from './version';\n\nexport type BasetenErrorData = z.infer<typeof basetenErrorSchema>;\n\nconst basetenErrorSchema = z.object({\n error: z.string(),\n});\n\nconst basetenErrorStructure: ProviderErrorStructure<BasetenErrorData> = {\n errorSchema: basetenErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface BasetenProviderSettings {\n /**\n * Baseten API key. Default value is taken from the `BASETEN_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for the Model APIs. Default: 'https://inference.baseten.co/v1'\n */\n baseURL?: string;\n\n /**\n * Model URL for custom models (chat or embeddings).\n * If not supplied, the default Model APIs will be used.\n */\n modelURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface BasetenProvider extends ProviderV4 {\n /**\n * Creates a chat model for text generation.\n */\n (modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a language model for text generation. Alias for chatModel.\n */\n languageModel(modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a embedding model for text generation.\n */\n embeddingModel(modelId?: BasetenEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId?: BasetenEmbeddingModelId): EmbeddingModelV4;\n}\n\n// by default, we use the Model APIs\nconst defaultBaseURL = 'https://inference.baseten.co/v1';\n\nexport function createBaseten(\n options: BasetenProviderSettings = {},\n): BasetenProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'BASETEN_API_KEY',\n description: 'Baseten API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/baseten/${VERSION}`,\n );\n\n interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (\n modelType: string,\n customURL?: string,\n ): CommonModelConfig => ({\n provider: `baseten.${modelType}`,\n url: ({ path }) => {\n // For embeddings with /sync URLs (but not /sync/v1), we need to add /v1\n if (\n modelType === 'embedding' &&\n customURL?.includes('/sync') &&\n !customURL?.includes('/sync/v1')\n ) {\n return `${customURL}/v1${path}`;\n }\n return `${customURL || baseURL}${path}`;\n },\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId?: BasetenChatModelId) => {\n // Use modelURL if provided, otherwise use default Model APIs\n const customURL = options.modelURL;\n\n if (customURL) {\n // Check if this is a /sync/v1 endpoint (OpenAI-compatible) or /predict endpoint (custom)\n const isOpenAICompatible = customURL.includes('/sync/v1');\n\n if (isOpenAICompatible) {\n // For /sync/v1 endpoints, use standard OpenAI-compatible format\n return new OpenAICompatibleChatLanguageModel(modelId ?? 'placeholder', {\n ...getCommonModelConfig('chat', customURL),\n errorStructure: basetenErrorStructure,\n });\n } else if (customURL.includes('/predict')) {\n throw new Error(\n 'Not supported. You must use a /sync/v1 endpoint for chat models.',\n );\n }\n }\n\n // Use default OpenAI-compatible format for Model APIs\n return new OpenAICompatibleChatLanguageModel(modelId ?? 'chat', {\n ...getCommonModelConfig('chat'),\n errorStructure: basetenErrorStructure,\n });\n };\n\n const createEmbeddingModel = (modelId?: BasetenEmbeddingModelId) => {\n // Use modelURL if provided\n const customURL = options.modelURL;\n if (!customURL) {\n throw new Error(\n 'No model URL provided for embeddings. Please set modelURL option for embeddings.',\n );\n }\n\n // Check if this is a /sync or /sync/v1 endpoint (OpenAI-compatible)\n // We support both /sync and /sync/v1, stripping /v1 before passing to Performance Client, as Performance Client adds /v1 itself\n const isOpenAICompatible = customURL.includes('/sync');\n\n if (isOpenAICompatible) {\n // Create the model using OpenAICompatibleEmbeddingModel and override doEmbed\n const model = new OpenAICompatibleEmbeddingModel(\n modelId ?? 'embeddings',\n {\n ...getCommonModelConfig('embedding', customURL),\n errorStructure: basetenErrorStructure,\n },\n );\n\n // Strip /v1 from URL if present before passing to Performance Client to avoid double /v1\n const performanceClientURL = customURL.replace('/sync/v1', '/sync');\n\n // Initialize the B10 Performance Client once for reuse\n const performanceClient = new PerformanceClient(\n performanceClientURL,\n loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'BASETEN_API_KEY',\n description: 'Baseten API key',\n }),\n );\n\n // Override the doEmbed method to use the pre-created Performance Client\n model.doEmbed = async params => {\n if (!params.values || !Array.isArray(params.values)) {\n throw new Error('params.values must be an array of strings');\n }\n\n // Performance Client handles batching internally, so we don't need to limit in 128 here\n const response = await performanceClient.embed(\n params.values,\n modelId ?? 'embeddings', // model_id is for Model APIs, we don't use it here for dedicated\n );\n // Transform the response to match the expected format\n const embeddings = response.data.map((item: any) => item.embedding);\n\n return {\n embeddings,\n usage: response.usage\n ? { tokens: response.usage.total_tokens }\n : undefined,\n response: { headers: {}, body: response },\n warnings: [],\n };\n };\n\n return model;\n } else {\n throw new Error(\n 'Not supported. You must use a /sync or /sync/v1 endpoint for embeddings.',\n );\n }\n };\n\n const provider = (modelId?: BasetenChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n return provider;\n}\n\nexport const baseten = createBaseten();\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/baseten-provider.ts","../src/version.ts"],"sourcesContent":["import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleEmbeddingModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n EmbeddingModelV4,\n LanguageModelV4,\n NoSuchModelError,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { BasetenChatModelId } from './baseten-chat-options';\nimport { BasetenEmbeddingModelId } from './baseten-embedding-options';\nimport { PerformanceClient } from '@basetenlabs/performance-client';\nimport { VERSION } from './version';\n\nexport type BasetenErrorData = z.infer<typeof basetenErrorSchema>;\n\nconst basetenErrorSchema = z.object({\n error: z.string(),\n});\n\nconst basetenErrorStructure: ProviderErrorStructure<BasetenErrorData> = {\n errorSchema: basetenErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface BasetenProviderSettings {\n /**\n * Baseten API key. Default value is taken from the `BASETEN_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for the Model APIs. Default: 'https://inference.baseten.co/v1'\n */\n baseURL?: string;\n\n /**\n * Model URL for custom models (chat or embeddings).\n * If not supplied, the default Model APIs will be used.\n */\n modelURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface BasetenProvider extends ProviderV4 {\n /**\n * Creates a chat model for text generation.\n */\n (modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a language model for text generation. Alias for chatModel.\n */\n languageModel(modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a embedding model for text generation.\n */\n embeddingModel(modelId?: BasetenEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId?: BasetenEmbeddingModelId): EmbeddingModelV4;\n}\n\n// by default, we use the Model APIs\nconst defaultBaseURL = 'https://inference.baseten.co/v1';\n\nexport function createBaseten(\n options: BasetenProviderSettings = {},\n): BasetenProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'BASETEN_API_KEY',\n description: 'Baseten API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/baseten/${VERSION}`,\n );\n\n interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (\n modelType: string,\n customURL?: string,\n ): CommonModelConfig => ({\n provider: `baseten.${modelType}`,\n url: ({ path }) => {\n // For embeddings with /sync URLs (but not /sync/v1), we need to add /v1\n if (\n modelType === 'embedding' &&\n customURL?.includes('/sync') &&\n !customURL?.includes('/sync/v1')\n ) {\n return `${customURL}/v1${path}`;\n }\n return `${customURL || baseURL}${path}`;\n },\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId?: BasetenChatModelId) => {\n // Use modelURL if provided, otherwise use default Model APIs\n const customURL = options.modelURL;\n\n if (customURL) {\n // Check if this is a /sync/v1 endpoint (OpenAI-compatible) or /predict endpoint (custom)\n const isOpenAICompatible = customURL.includes('/sync/v1');\n\n if (isOpenAICompatible) {\n // For /sync/v1 endpoints, use standard OpenAI-compatible format\n return new OpenAICompatibleChatLanguageModel(modelId ?? 'placeholder', {\n ...getCommonModelConfig('chat', customURL),\n errorStructure: basetenErrorStructure,\n });\n } else if (customURL.includes('/predict')) {\n throw new Error(\n 'Not supported. You must use a /sync/v1 endpoint for chat models.',\n );\n }\n }\n\n // Use default OpenAI-compatible format for Model APIs\n return new OpenAICompatibleChatLanguageModel(modelId ?? 'chat', {\n ...getCommonModelConfig('chat'),\n errorStructure: basetenErrorStructure,\n });\n };\n\n const createEmbeddingModel = (modelId?: BasetenEmbeddingModelId) => {\n // Use modelURL if provided\n const customURL = options.modelURL;\n if (!customURL) {\n throw new Error(\n 'No model URL provided for embeddings. Please set modelURL option for embeddings.',\n );\n }\n\n // Check if this is a /sync or /sync/v1 endpoint (OpenAI-compatible)\n // We support both /sync and /sync/v1, stripping /v1 before passing to Performance Client, as Performance Client adds /v1 itself\n const isOpenAICompatible = customURL.includes('/sync');\n\n if (isOpenAICompatible) {\n // Create the model using OpenAICompatibleEmbeddingModel and override doEmbed\n const model = new OpenAICompatibleEmbeddingModel(\n modelId ?? 'embeddings',\n {\n ...getCommonModelConfig('embedding', customURL),\n errorStructure: basetenErrorStructure,\n },\n );\n\n // Strip /v1 from URL if present before passing to Performance Client to avoid double /v1\n const performanceClientURL = customURL.replace('/sync/v1', '/sync');\n\n // Initialize the B10 Performance Client once for reuse\n const performanceClient = new PerformanceClient(\n performanceClientURL,\n loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'BASETEN_API_KEY',\n description: 'Baseten API key',\n }),\n );\n\n // Override the doEmbed method to use the pre-created Performance Client\n model.doEmbed = async params => {\n if (!params.values || !Array.isArray(params.values)) {\n throw new Error('params.values must be an array of strings');\n }\n\n // Performance Client handles batching internally, so we don't need to limit in 128 here\n const response = await performanceClient.embed(\n params.values,\n modelId ?? 'embeddings', // model_id is for Model APIs, we don't use it here for dedicated\n );\n // Transform the response to match the expected format\n const embeddings = response.data.map((item: any) => item.embedding);\n\n return {\n embeddings,\n usage: response.usage\n ? { tokens: response.usage.total_tokens }\n : undefined,\n response: { headers: {}, body: response },\n warnings: [],\n };\n };\n\n return model;\n } else {\n throw new Error(\n 'Not supported. You must use a /sync or /sync/v1 endpoint for embeddings.',\n );\n }\n };\n\n const provider = (modelId?: BasetenChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n return provider;\n}\n\nexport const baseten = createBaseten();\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@ai-sdk/baseten",
3
- "version": "2.0.0-beta.3",
3
+ "version": "2.0.0-beta.31",
4
+ "type": "module",
4
5
  "license": "Apache-2.0",
5
6
  "sideEffects": false,
6
7
  "main": "./dist/index.js",
7
- "module": "./dist/index.mjs",
8
8
  "types": "./dist/index.d.ts",
9
9
  "files": [
10
10
  "dist/**/*",
@@ -24,15 +24,15 @@
24
24
  "./package.json": "./package.json",
25
25
  ".": {
26
26
  "types": "./dist/index.d.ts",
27
- "import": "./dist/index.mjs",
28
- "require": "./dist/index.js"
27
+ "import": "./dist/index.js",
28
+ "default": "./dist/index.js"
29
29
  }
30
30
  },
31
31
  "dependencies": {
32
32
  "@basetenlabs/performance-client": "^0.0.10",
33
- "@ai-sdk/openai-compatible": "3.0.0-beta.3",
34
- "@ai-sdk/provider": "4.0.0-beta.0",
35
- "@ai-sdk/provider-utils": "5.0.0-beta.1"
33
+ "@ai-sdk/openai-compatible": "3.0.0-beta.31",
34
+ "@ai-sdk/provider": "4.0.0-beta.12",
35
+ "@ai-sdk/provider-utils": "5.0.0-beta.26"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/node": "20.17.24",
@@ -65,9 +65,7 @@
65
65
  "build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
66
66
  "build:watch": "pnpm clean && tsup --watch",
67
67
  "clean": "rm -rf dist docs *.tsbuildinfo",
68
- "lint": "eslint \"./**/*.ts*\"",
69
68
  "type-check": "tsc --build",
70
- "prettier-check": "prettier --check \"./**/*.ts*\"",
71
69
  "test": "pnpm test:node && pnpm test:edge",
72
70
  "test:update": "pnpm test:node -u",
73
71
  "test:watch": "vitest --config vitest.node.config.js",
package/dist/index.d.mts DELETED
@@ -1,67 +0,0 @@
1
- import { ProviderV4, LanguageModelV4, EmbeddingModelV4 } from '@ai-sdk/provider';
2
- import { FetchFunction } from '@ai-sdk/provider-utils';
3
- import { z } from 'zod/v4';
4
-
5
- type BasetenChatModelId = 'deepseek-ai/DeepSeek-R1-0528' | 'deepseek-ai/DeepSeek-V3-0324' | 'deepseek-ai/DeepSeek-V3.1' | 'moonshotai/Kimi-K2-Instruct-0905' | 'moonshotai/Kimi-K2-Thinking' | 'Qwen/Qwen3-235B-A22B-Instruct-2507' | 'Qwen/Qwen3-Coder-480B-A35B-Instruct' | 'openai/gpt-oss-120b' | 'zai-org/GLM-4.6' | 'zai-org/GLM-4.7' | (string & {});
6
-
7
- type BasetenEmbeddingModelId = string & {};
8
- declare const basetenEmbeddingModelOptions: z.ZodObject<{}, z.core.$strip>;
9
- type BasetenEmbeddingModelOptions = z.infer<typeof basetenEmbeddingModelOptions>;
10
-
11
- type BasetenErrorData = z.infer<typeof basetenErrorSchema>;
12
- declare const basetenErrorSchema: z.ZodObject<{
13
- error: z.ZodString;
14
- }, z.core.$strip>;
15
- interface BasetenProviderSettings {
16
- /**
17
- * Baseten API key. Default value is taken from the `BASETEN_API_KEY`
18
- * environment variable.
19
- */
20
- apiKey?: string;
21
- /**
22
- * Base URL for the Model APIs. Default: 'https://inference.baseten.co/v1'
23
- */
24
- baseURL?: string;
25
- /**
26
- * Model URL for custom models (chat or embeddings).
27
- * If not supplied, the default Model APIs will be used.
28
- */
29
- modelURL?: string;
30
- /**
31
- * Custom headers to include in the requests.
32
- */
33
- headers?: Record<string, string>;
34
- /**
35
- * Custom fetch implementation. You can use it as a middleware to intercept requests,
36
- * or to provide a custom fetch implementation for e.g. testing.
37
- */
38
- fetch?: FetchFunction;
39
- }
40
- interface BasetenProvider extends ProviderV4 {
41
- /**
42
- * Creates a chat model for text generation.
43
- */
44
- (modelId?: BasetenChatModelId): LanguageModelV4;
45
- /**
46
- * Creates a chat model for text generation.
47
- */
48
- chatModel(modelId?: BasetenChatModelId): LanguageModelV4;
49
- /**
50
- * Creates a language model for text generation. Alias for chatModel.
51
- */
52
- languageModel(modelId?: BasetenChatModelId): LanguageModelV4;
53
- /**
54
- * Creates a embedding model for text generation.
55
- */
56
- embeddingModel(modelId?: BasetenEmbeddingModelId): EmbeddingModelV4;
57
- /**
58
- * @deprecated Use `embeddingModel` instead.
59
- */
60
- textEmbeddingModel(modelId?: BasetenEmbeddingModelId): EmbeddingModelV4;
61
- }
62
- declare function createBaseten(options?: BasetenProviderSettings): BasetenProvider;
63
- declare const baseten: BasetenProvider;
64
-
65
- declare const VERSION: string;
66
-
67
- export { type BasetenChatModelId, type BasetenEmbeddingModelOptions, type BasetenErrorData, type BasetenProvider, type BasetenProviderSettings, VERSION, baseten, createBaseten };
package/dist/index.mjs DELETED
@@ -1,140 +0,0 @@
1
- // src/baseten-provider.ts
2
- import {
3
- OpenAICompatibleChatLanguageModel,
4
- OpenAICompatibleEmbeddingModel
5
- } from "@ai-sdk/openai-compatible";
6
- import {
7
- NoSuchModelError
8
- } from "@ai-sdk/provider";
9
- import {
10
- loadApiKey,
11
- withoutTrailingSlash,
12
- withUserAgentSuffix
13
- } from "@ai-sdk/provider-utils";
14
- import { z } from "zod/v4";
15
- import { PerformanceClient } from "@basetenlabs/performance-client";
16
-
17
- // src/version.ts
18
- var VERSION = true ? "2.0.0-beta.3" : "0.0.0-test";
19
-
20
- // src/baseten-provider.ts
21
- var basetenErrorSchema = z.object({
22
- error: z.string()
23
- });
24
- var basetenErrorStructure = {
25
- errorSchema: basetenErrorSchema,
26
- errorToMessage: (data) => data.error
27
- };
28
- var defaultBaseURL = "https://inference.baseten.co/v1";
29
- function createBaseten(options = {}) {
30
- var _a;
31
- const baseURL = withoutTrailingSlash((_a = options.baseURL) != null ? _a : defaultBaseURL);
32
- const getHeaders = () => withUserAgentSuffix(
33
- {
34
- Authorization: `Bearer ${loadApiKey({
35
- apiKey: options.apiKey,
36
- environmentVariableName: "BASETEN_API_KEY",
37
- description: "Baseten API key"
38
- })}`,
39
- ...options.headers
40
- },
41
- `ai-sdk/baseten/${VERSION}`
42
- );
43
- const getCommonModelConfig = (modelType, customURL) => ({
44
- provider: `baseten.${modelType}`,
45
- url: ({ path }) => {
46
- if (modelType === "embedding" && (customURL == null ? void 0 : customURL.includes("/sync")) && !(customURL == null ? void 0 : customURL.includes("/sync/v1"))) {
47
- return `${customURL}/v1${path}`;
48
- }
49
- return `${customURL || baseURL}${path}`;
50
- },
51
- headers: getHeaders,
52
- fetch: options.fetch
53
- });
54
- const createChatModel = (modelId) => {
55
- const customURL = options.modelURL;
56
- if (customURL) {
57
- const isOpenAICompatible = customURL.includes("/sync/v1");
58
- if (isOpenAICompatible) {
59
- return new OpenAICompatibleChatLanguageModel(modelId != null ? modelId : "placeholder", {
60
- ...getCommonModelConfig("chat", customURL),
61
- errorStructure: basetenErrorStructure
62
- });
63
- } else if (customURL.includes("/predict")) {
64
- throw new Error(
65
- "Not supported. You must use a /sync/v1 endpoint for chat models."
66
- );
67
- }
68
- }
69
- return new OpenAICompatibleChatLanguageModel(modelId != null ? modelId : "chat", {
70
- ...getCommonModelConfig("chat"),
71
- errorStructure: basetenErrorStructure
72
- });
73
- };
74
- const createEmbeddingModel = (modelId) => {
75
- const customURL = options.modelURL;
76
- if (!customURL) {
77
- throw new Error(
78
- "No model URL provided for embeddings. Please set modelURL option for embeddings."
79
- );
80
- }
81
- const isOpenAICompatible = customURL.includes("/sync");
82
- if (isOpenAICompatible) {
83
- const model = new OpenAICompatibleEmbeddingModel(
84
- modelId != null ? modelId : "embeddings",
85
- {
86
- ...getCommonModelConfig("embedding", customURL),
87
- errorStructure: basetenErrorStructure
88
- }
89
- );
90
- const performanceClientURL = customURL.replace("/sync/v1", "/sync");
91
- const performanceClient = new PerformanceClient(
92
- performanceClientURL,
93
- loadApiKey({
94
- apiKey: options.apiKey,
95
- environmentVariableName: "BASETEN_API_KEY",
96
- description: "Baseten API key"
97
- })
98
- );
99
- model.doEmbed = async (params) => {
100
- if (!params.values || !Array.isArray(params.values)) {
101
- throw new Error("params.values must be an array of strings");
102
- }
103
- const response = await performanceClient.embed(
104
- params.values,
105
- modelId != null ? modelId : "embeddings"
106
- // model_id is for Model APIs, we don't use it here for dedicated
107
- );
108
- const embeddings = response.data.map((item) => item.embedding);
109
- return {
110
- embeddings,
111
- usage: response.usage ? { tokens: response.usage.total_tokens } : void 0,
112
- response: { headers: {}, body: response },
113
- warnings: []
114
- };
115
- };
116
- return model;
117
- } else {
118
- throw new Error(
119
- "Not supported. You must use a /sync or /sync/v1 endpoint for embeddings."
120
- );
121
- }
122
- };
123
- const provider = (modelId) => createChatModel(modelId);
124
- provider.specificationVersion = "v4";
125
- provider.chatModel = createChatModel;
126
- provider.languageModel = createChatModel;
127
- provider.imageModel = (modelId) => {
128
- throw new NoSuchModelError({ modelId, modelType: "imageModel" });
129
- };
130
- provider.embeddingModel = createEmbeddingModel;
131
- provider.textEmbeddingModel = createEmbeddingModel;
132
- return provider;
133
- }
134
- var baseten = createBaseten();
135
- export {
136
- VERSION,
137
- baseten,
138
- createBaseten
139
- };
140
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/baseten-provider.ts","../src/version.ts"],"sourcesContent":["import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleEmbeddingModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n EmbeddingModelV4,\n LanguageModelV4,\n NoSuchModelError,\n ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { BasetenChatModelId } from './baseten-chat-options';\nimport { BasetenEmbeddingModelId } from './baseten-embedding-options';\nimport { PerformanceClient } from '@basetenlabs/performance-client';\nimport { VERSION } from './version';\n\nexport type BasetenErrorData = z.infer<typeof basetenErrorSchema>;\n\nconst basetenErrorSchema = z.object({\n error: z.string(),\n});\n\nconst basetenErrorStructure: ProviderErrorStructure<BasetenErrorData> = {\n errorSchema: basetenErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface BasetenProviderSettings {\n /**\n * Baseten API key. Default value is taken from the `BASETEN_API_KEY`\n * environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for the Model APIs. Default: 'https://inference.baseten.co/v1'\n */\n baseURL?: string;\n\n /**\n * Model URL for custom models (chat or embeddings).\n * If not supplied, the default Model APIs will be used.\n */\n modelURL?: string;\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport interface BasetenProvider extends ProviderV4 {\n /**\n * Creates a chat model for text generation.\n */\n (modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a chat model for text generation.\n */\n chatModel(modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a language model for text generation. Alias for chatModel.\n */\n languageModel(modelId?: BasetenChatModelId): LanguageModelV4;\n\n /**\n * Creates a embedding model for text generation.\n */\n embeddingModel(modelId?: BasetenEmbeddingModelId): EmbeddingModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId?: BasetenEmbeddingModelId): EmbeddingModelV4;\n}\n\n// by default, we use the Model APIs\nconst defaultBaseURL = 'https://inference.baseten.co/v1';\n\nexport function createBaseten(\n options: BasetenProviderSettings = {},\n): BasetenProvider {\n const baseURL = withoutTrailingSlash(options.baseURL ?? defaultBaseURL);\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'BASETEN_API_KEY',\n description: 'Baseten API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/baseten/${VERSION}`,\n );\n\n interface CommonModelConfig {\n provider: string;\n url: ({ path }: { path: string }) => string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n }\n\n const getCommonModelConfig = (\n modelType: string,\n customURL?: string,\n ): CommonModelConfig => ({\n provider: `baseten.${modelType}`,\n url: ({ path }) => {\n // For embeddings with /sync URLs (but not /sync/v1), we need to add /v1\n if (\n modelType === 'embedding' &&\n customURL?.includes('/sync') &&\n !customURL?.includes('/sync/v1')\n ) {\n return `${customURL}/v1${path}`;\n }\n return `${customURL || baseURL}${path}`;\n },\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId?: BasetenChatModelId) => {\n // Use modelURL if provided, otherwise use default Model APIs\n const customURL = options.modelURL;\n\n if (customURL) {\n // Check if this is a /sync/v1 endpoint (OpenAI-compatible) or /predict endpoint (custom)\n const isOpenAICompatible = customURL.includes('/sync/v1');\n\n if (isOpenAICompatible) {\n // For /sync/v1 endpoints, use standard OpenAI-compatible format\n return new OpenAICompatibleChatLanguageModel(modelId ?? 'placeholder', {\n ...getCommonModelConfig('chat', customURL),\n errorStructure: basetenErrorStructure,\n });\n } else if (customURL.includes('/predict')) {\n throw new Error(\n 'Not supported. You must use a /sync/v1 endpoint for chat models.',\n );\n }\n }\n\n // Use default OpenAI-compatible format for Model APIs\n return new OpenAICompatibleChatLanguageModel(modelId ?? 'chat', {\n ...getCommonModelConfig('chat'),\n errorStructure: basetenErrorStructure,\n });\n };\n\n const createEmbeddingModel = (modelId?: BasetenEmbeddingModelId) => {\n // Use modelURL if provided\n const customURL = options.modelURL;\n if (!customURL) {\n throw new Error(\n 'No model URL provided for embeddings. Please set modelURL option for embeddings.',\n );\n }\n\n // Check if this is a /sync or /sync/v1 endpoint (OpenAI-compatible)\n // We support both /sync and /sync/v1, stripping /v1 before passing to Performance Client, as Performance Client adds /v1 itself\n const isOpenAICompatible = customURL.includes('/sync');\n\n if (isOpenAICompatible) {\n // Create the model using OpenAICompatibleEmbeddingModel and override doEmbed\n const model = new OpenAICompatibleEmbeddingModel(\n modelId ?? 'embeddings',\n {\n ...getCommonModelConfig('embedding', customURL),\n errorStructure: basetenErrorStructure,\n },\n );\n\n // Strip /v1 from URL if present before passing to Performance Client to avoid double /v1\n const performanceClientURL = customURL.replace('/sync/v1', '/sync');\n\n // Initialize the B10 Performance Client once for reuse\n const performanceClient = new PerformanceClient(\n performanceClientURL,\n loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'BASETEN_API_KEY',\n description: 'Baseten API key',\n }),\n );\n\n // Override the doEmbed method to use the pre-created Performance Client\n model.doEmbed = async params => {\n if (!params.values || !Array.isArray(params.values)) {\n throw new Error('params.values must be an array of strings');\n }\n\n // Performance Client handles batching internally, so we don't need to limit in 128 here\n const response = await performanceClient.embed(\n params.values,\n modelId ?? 'embeddings', // model_id is for Model APIs, we don't use it here for dedicated\n );\n // Transform the response to match the expected format\n const embeddings = response.data.map((item: any) => item.embedding);\n\n return {\n embeddings,\n usage: response.usage\n ? { tokens: response.usage.total_tokens }\n : undefined,\n response: { headers: {}, body: response },\n warnings: [],\n };\n };\n\n return model;\n } else {\n throw new Error(\n 'Not supported. You must use a /sync or /sync/v1 endpoint for embeddings.',\n );\n }\n };\n\n const provider = (modelId?: BasetenChatModelId) => createChatModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.chatModel = createChatModel;\n provider.languageModel = createChatModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.embeddingModel = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n return provider;\n}\n\nexport const baseten = createBaseten();\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":[]}