@ai-sdk/openai-compatible 3.0.0-beta.24 → 3.0.0-beta.26
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 +24 -0
- package/dist/index.d.ts +39 -6
- package/dist/index.js +95 -39
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts +1 -1
- package/package.json +3 -3
- package/src/chat/openai-compatible-chat-language-model.ts +24 -4
- package/src/completion/openai-compatible-completion-language-model.ts +23 -3
- package/src/embedding/openai-compatible-embedding-model.ts +19 -2
- package/src/image/openai-compatible-image-model.ts +20 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/openai-compatible",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.26",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -35,8 +35,8 @@
|
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@ai-sdk/provider": "4.0.0-beta.
|
|
39
|
-
"@ai-sdk/provider-utils": "5.0.0-beta.
|
|
38
|
+
"@ai-sdk/provider": "4.0.0-beta.12",
|
|
39
|
+
"@ai-sdk/provider-utils": "5.0.0-beta.21"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@types/node": "20.17.24",
|
|
@@ -24,6 +24,9 @@ import {
|
|
|
24
24
|
ParseResult,
|
|
25
25
|
postJsonToApi,
|
|
26
26
|
ResponseHandler,
|
|
27
|
+
serializeModelOptions,
|
|
28
|
+
WORKFLOW_SERIALIZE,
|
|
29
|
+
WORKFLOW_DESERIALIZE,
|
|
27
30
|
} from '@ai-sdk/provider-utils';
|
|
28
31
|
import { z } from 'zod/v4';
|
|
29
32
|
import {
|
|
@@ -48,7 +51,7 @@ import { prepareTools } from './openai-compatible-prepare-tools';
|
|
|
48
51
|
|
|
49
52
|
export type OpenAICompatibleChatConfig = {
|
|
50
53
|
provider: string;
|
|
51
|
-
headers
|
|
54
|
+
headers?: () => Record<string, string | undefined>;
|
|
52
55
|
url: (options: { modelId: string; path: string }) => string;
|
|
53
56
|
fetch?: FetchFunction;
|
|
54
57
|
includeUsage?: boolean;
|
|
@@ -79,10 +82,27 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV4 {
|
|
|
79
82
|
readonly supportsStructuredOutputs: boolean;
|
|
80
83
|
|
|
81
84
|
readonly modelId: OpenAICompatibleChatModelId;
|
|
82
|
-
|
|
85
|
+
protected readonly config: OpenAICompatibleChatConfig;
|
|
83
86
|
private readonly failedResponseHandler: ResponseHandler<APICallError>;
|
|
84
87
|
private readonly chunkSchema; // type inferred via constructor
|
|
85
88
|
|
|
89
|
+
static [WORKFLOW_SERIALIZE](model: OpenAICompatibleChatLanguageModel) {
|
|
90
|
+
return serializeModelOptions({
|
|
91
|
+
modelId: model.modelId,
|
|
92
|
+
config: model.config,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static [WORKFLOW_DESERIALIZE](options: {
|
|
97
|
+
modelId: string;
|
|
98
|
+
config: OpenAICompatibleChatConfig;
|
|
99
|
+
}) {
|
|
100
|
+
return new OpenAICompatibleChatLanguageModel(
|
|
101
|
+
options.modelId,
|
|
102
|
+
options.config,
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
86
106
|
constructor(
|
|
87
107
|
modelId: OpenAICompatibleChatModelId,
|
|
88
108
|
config: OpenAICompatibleChatConfig,
|
|
@@ -289,7 +309,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV4 {
|
|
|
289
309
|
path: '/chat/completions',
|
|
290
310
|
modelId: this.modelId,
|
|
291
311
|
}),
|
|
292
|
-
headers: combineHeaders(this.config.headers(), options.headers),
|
|
312
|
+
headers: combineHeaders(this.config.headers?.(), options.headers),
|
|
293
313
|
body: transformedBody,
|
|
294
314
|
failedResponseHandler: this.failedResponseHandler,
|
|
295
315
|
successfulResponseHandler: createJsonResponseHandler(
|
|
@@ -400,7 +420,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV4 {
|
|
|
400
420
|
path: '/chat/completions',
|
|
401
421
|
modelId: this.modelId,
|
|
402
422
|
}),
|
|
403
|
-
headers: combineHeaders(this.config.headers(), options.headers),
|
|
423
|
+
headers: combineHeaders(this.config.headers?.(), options.headers),
|
|
404
424
|
body,
|
|
405
425
|
failedResponseHandler: this.failedResponseHandler,
|
|
406
426
|
successfulResponseHandler: createEventSourceResponseHandler(
|
|
@@ -19,6 +19,9 @@ import {
|
|
|
19
19
|
ParseResult,
|
|
20
20
|
postJsonToApi,
|
|
21
21
|
ResponseHandler,
|
|
22
|
+
serializeModelOptions,
|
|
23
|
+
WORKFLOW_SERIALIZE,
|
|
24
|
+
WORKFLOW_DESERIALIZE,
|
|
22
25
|
} from '@ai-sdk/provider-utils';
|
|
23
26
|
import { z } from 'zod/v4';
|
|
24
27
|
import {
|
|
@@ -41,7 +44,7 @@ import {
|
|
|
41
44
|
type OpenAICompatibleCompletionConfig = {
|
|
42
45
|
provider: string;
|
|
43
46
|
includeUsage?: boolean;
|
|
44
|
-
headers
|
|
47
|
+
headers?: () => Record<string, string | undefined>;
|
|
45
48
|
url: (options: { modelId: string; path: string }) => string;
|
|
46
49
|
fetch?: FetchFunction;
|
|
47
50
|
errorStructure?: ProviderErrorStructure<any>;
|
|
@@ -60,6 +63,23 @@ export class OpenAICompatibleCompletionLanguageModel implements LanguageModelV4
|
|
|
60
63
|
private readonly failedResponseHandler: ResponseHandler<APICallError>;
|
|
61
64
|
private readonly chunkSchema; // type inferred via constructor
|
|
62
65
|
|
|
66
|
+
static [WORKFLOW_SERIALIZE](model: OpenAICompatibleCompletionLanguageModel) {
|
|
67
|
+
return serializeModelOptions({
|
|
68
|
+
modelId: model.modelId,
|
|
69
|
+
config: model.config,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
static [WORKFLOW_DESERIALIZE](options: {
|
|
74
|
+
modelId: string;
|
|
75
|
+
config: OpenAICompatibleCompletionConfig;
|
|
76
|
+
}) {
|
|
77
|
+
return new OpenAICompatibleCompletionLanguageModel(
|
|
78
|
+
options.modelId,
|
|
79
|
+
options.config,
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
|
|
63
83
|
constructor(
|
|
64
84
|
modelId: OpenAICompatibleCompletionModelId,
|
|
65
85
|
config: OpenAICompatibleCompletionConfig,
|
|
@@ -196,7 +216,7 @@ export class OpenAICompatibleCompletionLanguageModel implements LanguageModelV4
|
|
|
196
216
|
path: '/completions',
|
|
197
217
|
modelId: this.modelId,
|
|
198
218
|
}),
|
|
199
|
-
headers: combineHeaders(this.config.headers(), options.headers),
|
|
219
|
+
headers: combineHeaders(this.config.headers?.(), options.headers),
|
|
200
220
|
body: args,
|
|
201
221
|
failedResponseHandler: this.failedResponseHandler,
|
|
202
222
|
successfulResponseHandler: createJsonResponseHandler(
|
|
@@ -251,7 +271,7 @@ export class OpenAICompatibleCompletionLanguageModel implements LanguageModelV4
|
|
|
251
271
|
path: '/completions',
|
|
252
272
|
modelId: this.modelId,
|
|
253
273
|
}),
|
|
254
|
-
headers: combineHeaders(this.config.headers(), options.headers),
|
|
274
|
+
headers: combineHeaders(this.config.headers?.(), options.headers),
|
|
255
275
|
body,
|
|
256
276
|
failedResponseHandler: this.failedResponseHandler,
|
|
257
277
|
successfulResponseHandler: createEventSourceResponseHandler(
|
|
@@ -10,6 +10,9 @@ import {
|
|
|
10
10
|
FetchFunction,
|
|
11
11
|
parseProviderOptions,
|
|
12
12
|
postJsonToApi,
|
|
13
|
+
serializeModelOptions,
|
|
14
|
+
WORKFLOW_SERIALIZE,
|
|
15
|
+
WORKFLOW_DESERIALIZE,
|
|
13
16
|
} from '@ai-sdk/provider-utils';
|
|
14
17
|
import { z } from 'zod/v4';
|
|
15
18
|
import {
|
|
@@ -35,7 +38,7 @@ type OpenAICompatibleEmbeddingConfig = {
|
|
|
35
38
|
|
|
36
39
|
provider: string;
|
|
37
40
|
url: (options: { modelId: string; path: string }) => string;
|
|
38
|
-
headers
|
|
41
|
+
headers?: () => Record<string, string | undefined>;
|
|
39
42
|
fetch?: FetchFunction;
|
|
40
43
|
errorStructure?: ProviderErrorStructure<any>;
|
|
41
44
|
};
|
|
@@ -58,6 +61,20 @@ export class OpenAICompatibleEmbeddingModel implements EmbeddingModelV4 {
|
|
|
58
61
|
return this.config.supportsParallelCalls ?? true;
|
|
59
62
|
}
|
|
60
63
|
|
|
64
|
+
static [WORKFLOW_SERIALIZE](model: OpenAICompatibleEmbeddingModel) {
|
|
65
|
+
return serializeModelOptions({
|
|
66
|
+
modelId: model.modelId,
|
|
67
|
+
config: model.config,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static [WORKFLOW_DESERIALIZE](options: {
|
|
72
|
+
modelId: string;
|
|
73
|
+
config: OpenAICompatibleEmbeddingConfig;
|
|
74
|
+
}) {
|
|
75
|
+
return new OpenAICompatibleEmbeddingModel(options.modelId, options.config);
|
|
76
|
+
}
|
|
77
|
+
|
|
61
78
|
constructor(
|
|
62
79
|
modelId: OpenAICompatibleEmbeddingModelId,
|
|
63
80
|
config: OpenAICompatibleEmbeddingConfig,
|
|
@@ -134,7 +151,7 @@ export class OpenAICompatibleEmbeddingModel implements EmbeddingModelV4 {
|
|
|
134
151
|
path: '/embeddings',
|
|
135
152
|
modelId: this.modelId,
|
|
136
153
|
}),
|
|
137
|
-
headers: combineHeaders(this.config.headers(), headers),
|
|
154
|
+
headers: combineHeaders(this.config.headers?.(), headers),
|
|
138
155
|
body: {
|
|
139
156
|
model: this.modelId,
|
|
140
157
|
input: values,
|
|
@@ -18,6 +18,9 @@ import {
|
|
|
18
18
|
FetchFunction,
|
|
19
19
|
postFormDataToApi,
|
|
20
20
|
postJsonToApi,
|
|
21
|
+
serializeModelOptions,
|
|
22
|
+
WORKFLOW_SERIALIZE,
|
|
23
|
+
WORKFLOW_DESERIALIZE,
|
|
21
24
|
} from '@ai-sdk/provider-utils';
|
|
22
25
|
import { z } from 'zod/v4';
|
|
23
26
|
import {
|
|
@@ -28,7 +31,7 @@ import { OpenAICompatibleImageModelId } from './openai-compatible-image-settings
|
|
|
28
31
|
|
|
29
32
|
export type OpenAICompatibleImageModelConfig = {
|
|
30
33
|
provider: string;
|
|
31
|
-
headers
|
|
34
|
+
headers?: () => Record<string, string | undefined>;
|
|
32
35
|
url: (options: { modelId: string; path: string }) => string;
|
|
33
36
|
fetch?: FetchFunction;
|
|
34
37
|
errorStructure?: ProviderErrorStructure<any>;
|
|
@@ -52,6 +55,20 @@ export class OpenAICompatibleImageModel implements ImageModelV4 {
|
|
|
52
55
|
return this.config.provider.split('.')[0].trim();
|
|
53
56
|
}
|
|
54
57
|
|
|
58
|
+
static [WORKFLOW_SERIALIZE](model: OpenAICompatibleImageModel) {
|
|
59
|
+
return serializeModelOptions({
|
|
60
|
+
modelId: model.modelId,
|
|
61
|
+
config: model.config,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static [WORKFLOW_DESERIALIZE](options: {
|
|
66
|
+
modelId: string;
|
|
67
|
+
config: OpenAICompatibleImageModelConfig;
|
|
68
|
+
}) {
|
|
69
|
+
return new OpenAICompatibleImageModel(options.modelId, options.config);
|
|
70
|
+
}
|
|
71
|
+
|
|
55
72
|
constructor(
|
|
56
73
|
readonly modelId: OpenAICompatibleImageModelId,
|
|
57
74
|
private readonly config: OpenAICompatibleImageModelConfig,
|
|
@@ -112,7 +129,7 @@ export class OpenAICompatibleImageModel implements ImageModelV4 {
|
|
|
112
129
|
path: '/images/edits',
|
|
113
130
|
modelId: this.modelId,
|
|
114
131
|
}),
|
|
115
|
-
headers: combineHeaders(this.config.headers(), headers),
|
|
132
|
+
headers: combineHeaders(this.config.headers?.(), headers),
|
|
116
133
|
formData: convertToFormData<OpenAICompatibleFormDataInput>({
|
|
117
134
|
model: this.modelId,
|
|
118
135
|
prompt,
|
|
@@ -149,7 +166,7 @@ export class OpenAICompatibleImageModel implements ImageModelV4 {
|
|
|
149
166
|
path: '/images/generations',
|
|
150
167
|
modelId: this.modelId,
|
|
151
168
|
}),
|
|
152
|
-
headers: combineHeaders(this.config.headers(), headers),
|
|
169
|
+
headers: combineHeaders(this.config.headers?.(), headers),
|
|
153
170
|
body: {
|
|
154
171
|
model: this.modelId,
|
|
155
172
|
prompt,
|