@ai-sdk/zai 3.0.21 → 3.0.23
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 +20 -0
- package/dist/index.d.ts +76 -70
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +226 -251
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @ai-sdk/zai
|
|
2
2
|
|
|
3
|
+
## 3.0.23
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [8c65988]
|
|
8
|
+
- Updated dependencies [527a163]
|
|
9
|
+
- @ai-sdk/provider@4.0.21
|
|
10
|
+
- @ai-sdk/provider-utils@5.0.53
|
|
11
|
+
- @ai-sdk/openai-compatible@3.0.61
|
|
12
|
+
|
|
13
|
+
## 3.0.22
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- ede5b89: chore: migrate package builds from tsup to tsdown
|
|
18
|
+
- Updated dependencies [ede5b89]
|
|
19
|
+
- @ai-sdk/openai-compatible@3.0.60
|
|
20
|
+
- @ai-sdk/provider@4.0.20
|
|
21
|
+
- @ai-sdk/provider-utils@5.0.52
|
|
22
|
+
|
|
3
23
|
## 3.0.21
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,88 +1,94 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
1
|
+
import { LanguageModelV4, ProviderV4 } from "@ai-sdk/provider";
|
|
2
|
+
import { FetchFunction } from "@ai-sdk/provider-utils";
|
|
3
|
+
import "@ai-sdk/openai-compatible";
|
|
4
|
+
import { z } from "zod/v4";
|
|
5
|
+
//#region src/zai-chat-language-model-options.d.ts
|
|
5
6
|
declare const zaiLanguageModelChatOptions: z.ZodObject<{
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}>>;
|
|
12
|
-
clearThinking: z.ZodOptional<z.ZodBoolean>;
|
|
13
|
-
}, z.core.$strip>>;
|
|
14
|
-
reasoningEffort: z.ZodOptional<z.ZodEnum<{
|
|
15
|
-
none: "none";
|
|
16
|
-
minimal: "minimal";
|
|
17
|
-
low: "low";
|
|
18
|
-
medium: "medium";
|
|
19
|
-
high: "high";
|
|
20
|
-
xhigh: "xhigh";
|
|
21
|
-
max: "max";
|
|
7
|
+
doSample: z.ZodOptional<z.ZodBoolean>;
|
|
8
|
+
thinking: z.ZodOptional<z.ZodObject<{
|
|
9
|
+
type: z.ZodOptional<z.ZodEnum<{
|
|
10
|
+
enabled: "enabled";
|
|
11
|
+
disabled: "disabled";
|
|
22
12
|
}>>;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
13
|
+
clearThinking: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
}, z.core.$strip>>;
|
|
15
|
+
reasoningEffort: z.ZodOptional<z.ZodEnum<{
|
|
16
|
+
none: "none";
|
|
17
|
+
minimal: "minimal";
|
|
18
|
+
low: "low";
|
|
19
|
+
medium: "medium";
|
|
20
|
+
high: "high";
|
|
21
|
+
xhigh: "xhigh";
|
|
22
|
+
max: "max";
|
|
23
|
+
}>>;
|
|
24
|
+
toolStream: z.ZodOptional<z.ZodBoolean>;
|
|
25
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
26
|
+
userId: z.ZodOptional<z.ZodString>;
|
|
26
27
|
}, z.core.$strip>;
|
|
27
28
|
type ZaiLanguageModelChatOptions = z.infer<typeof zaiLanguageModelChatOptions>;
|
|
28
|
-
|
|
29
|
+
//#endregion
|
|
30
|
+
//#region src/zai-chat-options.d.ts
|
|
29
31
|
/**
|
|
30
32
|
* Z.AI chat model ids from the official OpenAPI 1.0.0 specification,
|
|
31
33
|
* retrieved from https://docs.z.ai/openapi.json on 2026-08-26.
|
|
32
34
|
*/
|
|
33
35
|
type ZaiChatModelId = 'glm-5.3' | 'glm-5.2' | 'glm-5.1' | 'glm-5-turbo' | 'glm-5' | 'glm-4.7' | 'glm-4.7-flash' | 'glm-4.7-flashx' | 'glm-4.6' | 'glm-4.5' | 'glm-4.5-air' | 'glm-4.5-x' | 'glm-4.5-airx' | 'glm-4.5-flash' | 'glm-4-32b-0414-128k' | 'glm-5.3-flash' | 'glm-5v-turbo' | 'glm-4.6v' | 'glm-4.6v-flash' | 'glm-4.6v-flashx' | 'glm-4.5v' | 'autoglm-phone-multilingual' | (string & {});
|
|
34
|
-
|
|
36
|
+
//#endregion
|
|
37
|
+
//#region src/zai-error.d.ts
|
|
35
38
|
declare const zaiErrorSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
39
|
+
code: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
|
|
40
|
+
message: z.ZodString;
|
|
41
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
42
|
+
error: z.ZodObject<{
|
|
36
43
|
code: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
|
|
37
44
|
message: z.ZodString;
|
|
38
|
-
}, z.core.$strip
|
|
39
|
-
error: z.ZodObject<{
|
|
40
|
-
code: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
|
|
41
|
-
message: z.ZodString;
|
|
42
|
-
}, z.core.$strip>;
|
|
45
|
+
}, z.core.$strip>;
|
|
43
46
|
}, z.core.$strip>]>;
|
|
44
47
|
type ZaiErrorData = z.infer<typeof zaiErrorSchema>;
|
|
45
|
-
|
|
48
|
+
//#endregion
|
|
49
|
+
//#region src/zai-provider.d.ts
|
|
46
50
|
interface ZaiProviderSettings {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Z.AI API key. Defaults to the `ZAI_API_KEY` environment variable.
|
|
53
|
+
*/
|
|
54
|
+
apiKey?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Base URL for API calls. Defaults to
|
|
57
|
+
* `https://api.z.ai/api/paas/v4`.
|
|
58
|
+
*/
|
|
59
|
+
baseURL?: string;
|
|
60
|
+
/**
|
|
61
|
+
* Custom headers to include in requests.
|
|
62
|
+
*/
|
|
63
|
+
headers?: Record<string, string>;
|
|
64
|
+
/**
|
|
65
|
+
* Custom fetch implementation.
|
|
66
|
+
*/
|
|
67
|
+
fetch?: FetchFunction;
|
|
64
68
|
}
|
|
65
69
|
interface ZaiProvider extends ProviderV4 {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Creates a Z.AI chat model for text generation.
|
|
72
|
+
*/
|
|
73
|
+
(modelId: ZaiChatModelId): LanguageModelV4;
|
|
74
|
+
/**
|
|
75
|
+
* Creates a Z.AI language model.
|
|
76
|
+
*/
|
|
77
|
+
languageModel(modelId: ZaiChatModelId): LanguageModelV4;
|
|
78
|
+
/**
|
|
79
|
+
* Creates a Z.AI chat model.
|
|
80
|
+
*/
|
|
81
|
+
chat(modelId: ZaiChatModelId): LanguageModelV4;
|
|
82
|
+
/**
|
|
83
|
+
* @deprecated Use `embeddingModel` instead.
|
|
84
|
+
*/
|
|
85
|
+
textEmbeddingModel(modelId: string): never;
|
|
82
86
|
}
|
|
83
|
-
declare function createZai(options?: ZaiProviderSettings): ZaiProvider;
|
|
84
|
-
declare const zai: ZaiProvider;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
export declare function createZai(options?: ZaiProviderSettings): ZaiProvider;
|
|
88
|
+
export declare const zai: ZaiProvider;
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/version.d.ts
|
|
91
|
+
export declare const VERSION: string;
|
|
92
|
+
//#endregion
|
|
93
|
+
export type { ZaiChatModelId, ZaiErrorData, ZaiLanguageModelChatOptions, ZaiProvider, ZaiProviderSettings };
|
|
94
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/zai-chat-language-model-options.ts","../src/zai-chat-options.ts","../src/zai-error.ts","../src/zai-provider.ts","../src/version.ts"],"mappings":";;;;;cAEa,6BAA2B,EAAA;;;;;;;;;;;;;;;;;;;;;GAsCtC,EAAA,KAAA;KAEU,8BAA8B,EAAE,aACnC;;;;;;;KCvCG;;;cCIN,gBAAc,EAAA,mBAAA,EAAA;;;;;;;;GAGlB,EAAA,KAAA;KAEU,eAAe,EAAE,aAAa;;;UCEzB;;;;EAIf;;;;;EAMA;;;;EAKA,UAAU;;;;EAKV,QAAQ;;UAGO,oBAAoB;;;;GAIlC,SAAS,iBAAiB;;;;EAK3B,cAAc,SAAS,iBAAiB;;;;EAKxC,KAAK,SAAS,iBAAiB;;;;EAK/B,mBAAmB;;wBAGL,UAAU,UAAS,sBAA2B;qBA0CjD,KAAG;;;qBCpGH"}
|
package/dist/index.js
CHANGED
|
@@ -1,264 +1,239 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
NoSuchModelError
|
|
4
|
-
} from "@ai-sdk/provider";
|
|
5
|
-
import {
|
|
6
|
-
loadApiKey,
|
|
7
|
-
withoutTrailingSlash,
|
|
8
|
-
withUserAgentSuffix
|
|
9
|
-
} from "@ai-sdk/provider-utils";
|
|
10
|
-
|
|
11
|
-
// src/version.ts
|
|
12
|
-
var VERSION = true ? "3.0.21" : "0.0.0-test";
|
|
13
|
-
|
|
14
|
-
// src/zai-chat-language-model.ts
|
|
1
|
+
import { NoSuchModelError } from "@ai-sdk/provider";
|
|
2
|
+
import { WORKFLOW_DESERIALIZE, WORKFLOW_SERIALIZE, loadApiKey, parseProviderOptions, serializeModelOptions, withUserAgentSuffix, withoutTrailingSlash } from "@ai-sdk/provider-utils";
|
|
15
3
|
import { OpenAICompatibleChatLanguageModel } from "@ai-sdk/openai-compatible";
|
|
16
|
-
import {
|
|
17
|
-
parseProviderOptions,
|
|
18
|
-
serializeModelOptions,
|
|
19
|
-
WORKFLOW_DESERIALIZE,
|
|
20
|
-
WORKFLOW_SERIALIZE
|
|
21
|
-
} from "@ai-sdk/provider-utils";
|
|
22
|
-
|
|
23
|
-
// src/zai-chat-language-model-options.ts
|
|
24
4
|
import { z } from "zod/v4";
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
5
|
+
//#region src/version.ts
|
|
6
|
+
const VERSION = "3.0.23";
|
|
7
|
+
//#endregion
|
|
8
|
+
//#region src/zai-chat-language-model-options.ts
|
|
9
|
+
const zaiLanguageModelChatOptions = z.object({
|
|
10
|
+
/**
|
|
11
|
+
* Enables or disables sampling. When disabled, temperature and topP do not
|
|
12
|
+
* take effect.
|
|
13
|
+
*/
|
|
14
|
+
doSample: z.boolean().optional(),
|
|
15
|
+
/**
|
|
16
|
+
* Controls model thinking and whether reasoning from earlier turns is kept.
|
|
17
|
+
*/
|
|
18
|
+
thinking: z.object({
|
|
19
|
+
type: z.enum(["enabled", "disabled"]).optional(),
|
|
20
|
+
clearThinking: z.boolean().optional()
|
|
21
|
+
}).optional(),
|
|
22
|
+
/**
|
|
23
|
+
* Controls reasoning effort for GLM-5.2 and later models.
|
|
24
|
+
*/
|
|
25
|
+
reasoningEffort: z.enum([
|
|
26
|
+
"none",
|
|
27
|
+
"minimal",
|
|
28
|
+
"low",
|
|
29
|
+
"medium",
|
|
30
|
+
"high",
|
|
31
|
+
"xhigh",
|
|
32
|
+
"max"
|
|
33
|
+
]).optional(),
|
|
34
|
+
/**
|
|
35
|
+
* Enables incremental function-call argument streaming on supported models.
|
|
36
|
+
*/
|
|
37
|
+
toolStream: z.boolean().optional(),
|
|
38
|
+
/**
|
|
39
|
+
* A caller-provided request identifier between 6 and 64 characters.
|
|
40
|
+
*/
|
|
41
|
+
requestId: z.string().min(6).max(64).optional(),
|
|
42
|
+
/**
|
|
43
|
+
* A non-sensitive end-user identifier between 6 and 128 characters.
|
|
44
|
+
*/
|
|
45
|
+
userId: z.string().min(6).max(128).optional()
|
|
54
46
|
});
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
message: z2.string()
|
|
47
|
+
//#endregion
|
|
48
|
+
//#region src/zai-error.ts
|
|
49
|
+
const zaiErrorDetailsSchema = z.object({
|
|
50
|
+
code: z.union([z.number(), z.string()]).nullish(),
|
|
51
|
+
message: z.string()
|
|
61
52
|
});
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
]);
|
|
66
|
-
var zaiErrorStructure = {
|
|
67
|
-
errorSchema: zaiErrorSchema,
|
|
68
|
-
errorToMessage: (data) => "error" in data ? data.error.message : data.message
|
|
53
|
+
const zaiErrorStructure = {
|
|
54
|
+
errorSchema: z.union([zaiErrorDetailsSchema, z.object({ error: zaiErrorDetailsSchema })]),
|
|
55
|
+
errorToMessage: (data) => "error" in data ? data.error.message : data.message
|
|
69
56
|
};
|
|
70
|
-
|
|
71
|
-
|
|
57
|
+
//#endregion
|
|
58
|
+
//#region src/zai-chat-language-model.ts
|
|
72
59
|
function transformZaiRequestBody(args) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
} = args;
|
|
86
|
-
return {
|
|
87
|
-
...restArgs,
|
|
88
|
-
...doSample !== void 0 && { do_sample: doSample },
|
|
89
|
-
...thinking !== void 0 && {
|
|
90
|
-
thinking: {
|
|
91
|
-
...thinking.type !== void 0 && { type: thinking.type },
|
|
92
|
-
...thinking.clearThinking !== void 0 && {
|
|
93
|
-
clear_thinking: thinking.clearThinking
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
},
|
|
97
|
-
...toolStream !== void 0 && { tool_stream: toolStream },
|
|
98
|
-
...requestId !== void 0 && { request_id: requestId },
|
|
99
|
-
...userId !== void 0 && { user_id: userId }
|
|
100
|
-
};
|
|
60
|
+
const { doSample, frequency_penalty: _frequencyPenalty, presence_penalty: _presencePenalty, requestId, seed: _seed, thinking, toolStream, user: _user, userId, verbosity: _verbosity, ...restArgs } = args;
|
|
61
|
+
return {
|
|
62
|
+
...restArgs,
|
|
63
|
+
...doSample !== void 0 && { do_sample: doSample },
|
|
64
|
+
...thinking !== void 0 && { thinking: {
|
|
65
|
+
...thinking.type !== void 0 && { type: thinking.type },
|
|
66
|
+
...thinking.clearThinking !== void 0 && { clear_thinking: thinking.clearThinking }
|
|
67
|
+
} },
|
|
68
|
+
...toolStream !== void 0 && { tool_stream: toolStream },
|
|
69
|
+
...requestId !== void 0 && { request_id: requestId },
|
|
70
|
+
...userId !== void 0 && { user_id: userId }
|
|
71
|
+
};
|
|
101
72
|
}
|
|
102
73
|
function mapZaiFinishReason(finishReason) {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
74
|
+
switch (finishReason.raw) {
|
|
75
|
+
case "sensitive": return {
|
|
76
|
+
unified: "content-filter",
|
|
77
|
+
raw: finishReason.raw
|
|
78
|
+
};
|
|
79
|
+
case "model_context_window_exceeded": return {
|
|
80
|
+
unified: "length",
|
|
81
|
+
raw: finishReason.raw
|
|
82
|
+
};
|
|
83
|
+
case "network_error": return {
|
|
84
|
+
unified: "error",
|
|
85
|
+
raw: finishReason.raw
|
|
86
|
+
};
|
|
87
|
+
default: return finishReason;
|
|
88
|
+
}
|
|
113
89
|
}
|
|
114
|
-
var ZaiChatLanguageModel = class
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
};
|
|
222
|
-
}
|
|
90
|
+
var ZaiChatLanguageModel = class ZaiChatLanguageModel extends OpenAICompatibleChatLanguageModel {
|
|
91
|
+
static [WORKFLOW_SERIALIZE](model) {
|
|
92
|
+
return serializeModelOptions({
|
|
93
|
+
modelId: model.modelId,
|
|
94
|
+
config: model.zaiConfig
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
static [WORKFLOW_DESERIALIZE](options) {
|
|
98
|
+
return new ZaiChatLanguageModel(options.modelId, options.config);
|
|
99
|
+
}
|
|
100
|
+
constructor(modelId, config) {
|
|
101
|
+
const headers = config.headers;
|
|
102
|
+
super(modelId, {
|
|
103
|
+
provider: config.provider,
|
|
104
|
+
url: ({ path }) => `${config.baseURL}${path}`,
|
|
105
|
+
headers: headers == null ? void 0 : () => typeof headers === "function" ? headers() : headers,
|
|
106
|
+
fetch: config.fetch,
|
|
107
|
+
errorStructure: zaiErrorStructure,
|
|
108
|
+
transformRequestBody: transformZaiRequestBody,
|
|
109
|
+
supportedUrls: () => ({
|
|
110
|
+
"image/*": [/^https?:\/\//],
|
|
111
|
+
"video/*": [/^https?:\/\//]
|
|
112
|
+
})
|
|
113
|
+
});
|
|
114
|
+
this.zaiConfig = config;
|
|
115
|
+
}
|
|
116
|
+
async prepareCallOptions(options) {
|
|
117
|
+
const warnings = [];
|
|
118
|
+
const zaiOptions = await parseProviderOptions({
|
|
119
|
+
provider: "zai",
|
|
120
|
+
providerOptions: options.providerOptions,
|
|
121
|
+
schema: zaiLanguageModelChatOptions
|
|
122
|
+
});
|
|
123
|
+
if (options.frequencyPenalty != null) warnings.push({
|
|
124
|
+
type: "unsupported",
|
|
125
|
+
feature: "frequencyPenalty"
|
|
126
|
+
});
|
|
127
|
+
if (options.presencePenalty != null) warnings.push({
|
|
128
|
+
type: "unsupported",
|
|
129
|
+
feature: "presencePenalty"
|
|
130
|
+
});
|
|
131
|
+
if (options.seed != null) warnings.push({
|
|
132
|
+
type: "unsupported",
|
|
133
|
+
feature: "seed"
|
|
134
|
+
});
|
|
135
|
+
let tools = options.tools;
|
|
136
|
+
let toolChoice = options.toolChoice;
|
|
137
|
+
if (toolChoice?.type === "none") {
|
|
138
|
+
tools = void 0;
|
|
139
|
+
toolChoice = void 0;
|
|
140
|
+
} else if (toolChoice != null && toolChoice.type !== "auto") {
|
|
141
|
+
warnings.push({
|
|
142
|
+
type: "unsupported",
|
|
143
|
+
feature: `toolChoice ${toolChoice.type}`,
|
|
144
|
+
details: "Z.AI currently supports only automatic tool selection."
|
|
145
|
+
});
|
|
146
|
+
toolChoice = void 0;
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
normalizedOptions: {
|
|
150
|
+
...options,
|
|
151
|
+
frequencyPenalty: void 0,
|
|
152
|
+
presencePenalty: void 0,
|
|
153
|
+
seed: void 0,
|
|
154
|
+
tools,
|
|
155
|
+
toolChoice,
|
|
156
|
+
providerOptions: zaiOptions == null ? options.providerOptions : {
|
|
157
|
+
...options.providerOptions,
|
|
158
|
+
zai: zaiOptions
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
warnings
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
async doGenerate(options) {
|
|
165
|
+
const { normalizedOptions, warnings } = await this.prepareCallOptions(options);
|
|
166
|
+
const result = await super.doGenerate(normalizedOptions);
|
|
167
|
+
return {
|
|
168
|
+
...result,
|
|
169
|
+
finishReason: mapZaiFinishReason(result.finishReason),
|
|
170
|
+
warnings: [...result.warnings, ...warnings]
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
async doStream(options) {
|
|
174
|
+
const { normalizedOptions, warnings } = await this.prepareCallOptions(options);
|
|
175
|
+
const result = await super.doStream(normalizedOptions);
|
|
176
|
+
return {
|
|
177
|
+
...result,
|
|
178
|
+
stream: result.stream.pipeThrough(new TransformStream({ transform(part, controller) {
|
|
179
|
+
if (part.type === "stream-start") {
|
|
180
|
+
controller.enqueue({
|
|
181
|
+
...part,
|
|
182
|
+
warnings: [...part.warnings, ...warnings]
|
|
183
|
+
});
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (part.type === "finish") {
|
|
187
|
+
controller.enqueue({
|
|
188
|
+
...part,
|
|
189
|
+
finishReason: mapZaiFinishReason(part.finishReason)
|
|
190
|
+
});
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
controller.enqueue(part);
|
|
194
|
+
} }))
|
|
195
|
+
};
|
|
196
|
+
}
|
|
223
197
|
};
|
|
224
|
-
|
|
225
|
-
|
|
198
|
+
//#endregion
|
|
199
|
+
//#region src/zai-provider.ts
|
|
226
200
|
function createZai(options = {}) {
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
201
|
+
const baseURL = withoutTrailingSlash(options.baseURL) ?? "https://api.z.ai/api/paas/v4";
|
|
202
|
+
const getHeaders = () => withUserAgentSuffix({
|
|
203
|
+
Authorization: `Bearer ${loadApiKey({
|
|
204
|
+
apiKey: options.apiKey,
|
|
205
|
+
environmentVariableName: "ZAI_API_KEY",
|
|
206
|
+
description: "Z.AI API key"
|
|
207
|
+
})}`,
|
|
208
|
+
...options.headers
|
|
209
|
+
}, `ai-sdk-zai/${VERSION}`);
|
|
210
|
+
const createLanguageModel = (modelId) => new ZaiChatLanguageModel(modelId, {
|
|
211
|
+
provider: "zai.chat",
|
|
212
|
+
baseURL,
|
|
213
|
+
headers: getHeaders,
|
|
214
|
+
fetch: options.fetch
|
|
215
|
+
});
|
|
216
|
+
const provider = (modelId) => createLanguageModel(modelId);
|
|
217
|
+
provider.specificationVersion = "v4";
|
|
218
|
+
provider.languageModel = createLanguageModel;
|
|
219
|
+
provider.chat = createLanguageModel;
|
|
220
|
+
provider.embeddingModel = (modelId) => {
|
|
221
|
+
throw new NoSuchModelError({
|
|
222
|
+
modelId,
|
|
223
|
+
modelType: "embeddingModel"
|
|
224
|
+
});
|
|
225
|
+
};
|
|
226
|
+
provider.textEmbeddingModel = provider.embeddingModel;
|
|
227
|
+
provider.imageModel = (modelId) => {
|
|
228
|
+
throw new NoSuchModelError({
|
|
229
|
+
modelId,
|
|
230
|
+
modelType: "imageModel"
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
return provider;
|
|
257
234
|
}
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
zai
|
|
263
|
-
};
|
|
235
|
+
const zai = createZai();
|
|
236
|
+
//#endregion
|
|
237
|
+
export { VERSION, createZai, zai };
|
|
238
|
+
|
|
264
239
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/zai-provider.ts","../src/version.ts","../src/zai-chat-language-model.ts","../src/zai-chat-language-model-options.ts","../src/zai-error.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type LanguageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\nimport { ZaiChatLanguageModel } from './zai-chat-language-model';\nimport type { ZaiChatModelId } from './zai-chat-options';\n\nexport interface ZaiProviderSettings {\n /**\n * Z.AI API key. Defaults to the `ZAI_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for API calls. Defaults to\n * `https://api.z.ai/api/paas/v4`.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ZaiProvider extends ProviderV4 {\n /**\n * Creates a Z.AI chat model for text generation.\n */\n (modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * Creates a Z.AI language model.\n */\n languageModel(modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * Creates a Z.AI chat model.\n */\n chat(modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport function createZai(options: ZaiProviderSettings = {}): ZaiProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.z.ai/api/paas/v4';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ZAI_API_KEY',\n description: 'Z.AI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk-zai/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: ZaiChatModelId) =>\n new ZaiChatLanguageModel(modelId, {\n provider: 'zai.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = (modelId: ZaiChatModelId) => createLanguageModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const zai = createZai();\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","import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport type {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n parseProviderOptions,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport type { ZaiChatModelId } from './zai-chat-options';\nimport { zaiLanguageModelChatOptions } from './zai-chat-language-model-options';\nimport { zaiErrorStructure } from './zai-error';\n\ntype OpenAICompatibleChatConfig = ConstructorParameters<\n typeof OpenAICompatibleChatLanguageModel\n>[1];\n\nexport type ZaiChatConfig = {\n provider: string;\n baseURL: string;\n headers?:\n | Record<string, string | undefined>\n | (() => Record<string, string | undefined>);\n fetch?: FetchFunction;\n};\n\nfunction transformZaiRequestBody(\n args: Record<string, any>,\n): Record<string, any> {\n const {\n doSample,\n frequency_penalty: _frequencyPenalty,\n presence_penalty: _presencePenalty,\n requestId,\n seed: _seed,\n thinking,\n toolStream,\n user: _user,\n userId,\n verbosity: _verbosity,\n ...restArgs\n } = args;\n\n return {\n ...restArgs,\n ...(doSample !== undefined && { do_sample: doSample }),\n ...(thinking !== undefined && {\n thinking: {\n ...(thinking.type !== undefined && { type: thinking.type }),\n ...(thinking.clearThinking !== undefined && {\n clear_thinking: thinking.clearThinking,\n }),\n },\n }),\n ...(toolStream !== undefined && { tool_stream: toolStream }),\n ...(requestId !== undefined && { request_id: requestId }),\n ...(userId !== undefined && { user_id: userId }),\n };\n}\n\nfunction mapZaiFinishReason(\n finishReason: LanguageModelV4FinishReason,\n): LanguageModelV4FinishReason {\n switch (finishReason.raw) {\n case 'sensitive':\n return { unified: 'content-filter', raw: finishReason.raw };\n case 'model_context_window_exceeded':\n return { unified: 'length', raw: finishReason.raw };\n case 'network_error':\n return { unified: 'error', raw: finishReason.raw };\n default:\n return finishReason;\n }\n}\n\nexport class ZaiChatLanguageModel\n extends OpenAICompatibleChatLanguageModel\n implements LanguageModelV4\n{\n private readonly zaiConfig: ZaiChatConfig;\n\n static [WORKFLOW_SERIALIZE](model: ZaiChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.zaiConfig,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: OpenAICompatibleChatConfig;\n }) {\n return new ZaiChatLanguageModel(\n options.modelId,\n options.config as unknown as ZaiChatConfig,\n );\n }\n\n constructor(modelId: ZaiChatModelId, config: ZaiChatConfig) {\n const headers = config.headers;\n\n super(modelId, {\n provider: config.provider,\n url: ({ path }) => `${config.baseURL}${path}`,\n headers:\n headers == null\n ? undefined\n : () => (typeof headers === 'function' ? headers() : headers),\n fetch: config.fetch,\n errorStructure: zaiErrorStructure,\n transformRequestBody: transformZaiRequestBody,\n supportedUrls: () => ({\n 'image/*': [/^https?:\\/\\//],\n 'video/*': [/^https?:\\/\\//],\n }),\n });\n\n this.zaiConfig = config;\n }\n\n private async prepareCallOptions(options: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n const zaiOptions = await parseProviderOptions({\n provider: 'zai',\n providerOptions: options.providerOptions,\n schema: zaiLanguageModelChatOptions,\n });\n\n if (options.frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n if (options.presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n if (options.seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n let tools = options.tools;\n let toolChoice = options.toolChoice;\n\n if (toolChoice?.type === 'none') {\n tools = undefined;\n toolChoice = undefined;\n } else if (toolChoice != null && toolChoice.type !== 'auto') {\n warnings.push({\n type: 'unsupported',\n feature: `toolChoice ${toolChoice.type}`,\n details: 'Z.AI currently supports only automatic tool selection.',\n });\n toolChoice = undefined;\n }\n\n const normalizedOptions: LanguageModelV4CallOptions = {\n ...options,\n frequencyPenalty: undefined,\n presencePenalty: undefined,\n seed: undefined,\n tools,\n toolChoice,\n providerOptions:\n zaiOptions == null\n ? options.providerOptions\n : {\n ...options.providerOptions,\n zai: zaiOptions,\n },\n };\n\n return { normalizedOptions, warnings };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { normalizedOptions, warnings } =\n await this.prepareCallOptions(options);\n const result = await super.doGenerate(normalizedOptions);\n\n return {\n ...result,\n finishReason: mapZaiFinishReason(result.finishReason),\n warnings: [...result.warnings, ...warnings],\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { normalizedOptions, warnings } =\n await this.prepareCallOptions(options);\n const result = await super.doStream(normalizedOptions);\n\n return {\n ...result,\n stream: result.stream.pipeThrough(\n new TransformStream<\n LanguageModelV4StreamPart,\n LanguageModelV4StreamPart\n >({\n transform(part, controller) {\n if (part.type === 'stream-start') {\n controller.enqueue({\n ...part,\n warnings: [...part.warnings, ...warnings],\n });\n return;\n }\n\n if (part.type === 'finish') {\n controller.enqueue({\n ...part,\n finishReason: mapZaiFinishReason(part.finishReason),\n });\n return;\n }\n\n controller.enqueue(part);\n },\n }),\n ),\n };\n }\n}\n","import { z } from 'zod/v4';\n\nexport const zaiLanguageModelChatOptions = z.object({\n /**\n * Enables or disables sampling. When disabled, temperature and topP do not\n * take effect.\n */\n doSample: z.boolean().optional(),\n\n /**\n * Controls model thinking and whether reasoning from earlier turns is kept.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n clearThinking: z.boolean().optional(),\n })\n .optional(),\n\n /**\n * Controls reasoning effort for GLM-5.2 and later models.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'])\n .optional(),\n\n /**\n * Enables incremental function-call argument streaming on supported models.\n */\n toolStream: z.boolean().optional(),\n\n /**\n * A caller-provided request identifier between 6 and 64 characters.\n */\n requestId: z.string().min(6).max(64).optional(),\n\n /**\n * A non-sensitive end-user identifier between 6 and 128 characters.\n */\n userId: z.string().min(6).max(128).optional(),\n});\n\nexport type ZaiLanguageModelChatOptions = z.infer<\n typeof zaiLanguageModelChatOptions\n>;\n","import type { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport { z } from 'zod/v4';\n\nconst zaiErrorDetailsSchema = z.object({\n code: z.union([z.number(), z.string()]).nullish(),\n message: z.string(),\n});\n\nconst zaiErrorSchema = z.union([\n zaiErrorDetailsSchema,\n z.object({ error: zaiErrorDetailsSchema }),\n]);\n\nexport type ZaiErrorData = z.infer<typeof zaiErrorSchema>;\n\nexport const zaiErrorStructure: ProviderErrorStructure<ZaiErrorData> = {\n errorSchema: zaiErrorSchema,\n errorToMessage: data => ('error' in data ? data.error.message : data.message),\n};\n"],"mappings":"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","names":["z"]}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/version.ts","../src/zai-chat-language-model-options.ts","../src/zai-error.ts","../src/zai-chat-language-model.ts","../src/zai-provider.ts"],"sourcesContent":["// 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","import { z } from 'zod/v4';\n\nexport const zaiLanguageModelChatOptions = z.object({\n /**\n * Enables or disables sampling. When disabled, temperature and topP do not\n * take effect.\n */\n doSample: z.boolean().optional(),\n\n /**\n * Controls model thinking and whether reasoning from earlier turns is kept.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n clearThinking: z.boolean().optional(),\n })\n .optional(),\n\n /**\n * Controls reasoning effort for GLM-5.2 and later models.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'])\n .optional(),\n\n /**\n * Enables incremental function-call argument streaming on supported models.\n */\n toolStream: z.boolean().optional(),\n\n /**\n * A caller-provided request identifier between 6 and 64 characters.\n */\n requestId: z.string().min(6).max(64).optional(),\n\n /**\n * A non-sensitive end-user identifier between 6 and 128 characters.\n */\n userId: z.string().min(6).max(128).optional(),\n});\n\nexport type ZaiLanguageModelChatOptions = z.infer<\n typeof zaiLanguageModelChatOptions\n>;\n","import type { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport { z } from 'zod/v4';\n\nconst zaiErrorDetailsSchema = z.object({\n code: z.union([z.number(), z.string()]).nullish(),\n message: z.string(),\n});\n\nconst zaiErrorSchema = z.union([\n zaiErrorDetailsSchema,\n z.object({ error: zaiErrorDetailsSchema }),\n]);\n\nexport type ZaiErrorData = z.infer<typeof zaiErrorSchema>;\n\nexport const zaiErrorStructure: ProviderErrorStructure<ZaiErrorData> = {\n errorSchema: zaiErrorSchema,\n errorToMessage: data => ('error' in data ? data.error.message : data.message),\n};\n","import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport type {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4FinishReason,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamPart,\n LanguageModelV4StreamResult,\n SharedV4Warning,\n} from '@ai-sdk/provider';\nimport {\n parseProviderOptions,\n serializeModelOptions,\n WORKFLOW_DESERIALIZE,\n WORKFLOW_SERIALIZE,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport type { ZaiChatModelId } from './zai-chat-options';\nimport { zaiLanguageModelChatOptions } from './zai-chat-language-model-options';\nimport { zaiErrorStructure } from './zai-error';\n\ntype OpenAICompatibleChatConfig = ConstructorParameters<\n typeof OpenAICompatibleChatLanguageModel\n>[1];\n\nexport type ZaiChatConfig = {\n provider: string;\n baseURL: string;\n headers?:\n | Record<string, string | undefined>\n | (() => Record<string, string | undefined>);\n fetch?: FetchFunction;\n};\n\nfunction transformZaiRequestBody(\n args: Record<string, any>,\n): Record<string, any> {\n const {\n doSample,\n frequency_penalty: _frequencyPenalty,\n presence_penalty: _presencePenalty,\n requestId,\n seed: _seed,\n thinking,\n toolStream,\n user: _user,\n userId,\n verbosity: _verbosity,\n ...restArgs\n } = args;\n\n return {\n ...restArgs,\n ...(doSample !== undefined && { do_sample: doSample }),\n ...(thinking !== undefined && {\n thinking: {\n ...(thinking.type !== undefined && { type: thinking.type }),\n ...(thinking.clearThinking !== undefined && {\n clear_thinking: thinking.clearThinking,\n }),\n },\n }),\n ...(toolStream !== undefined && { tool_stream: toolStream }),\n ...(requestId !== undefined && { request_id: requestId }),\n ...(userId !== undefined && { user_id: userId }),\n };\n}\n\nfunction mapZaiFinishReason(\n finishReason: LanguageModelV4FinishReason,\n): LanguageModelV4FinishReason {\n switch (finishReason.raw) {\n case 'sensitive':\n return { unified: 'content-filter', raw: finishReason.raw };\n case 'model_context_window_exceeded':\n return { unified: 'length', raw: finishReason.raw };\n case 'network_error':\n return { unified: 'error', raw: finishReason.raw };\n default:\n return finishReason;\n }\n}\n\nexport class ZaiChatLanguageModel\n extends OpenAICompatibleChatLanguageModel\n implements LanguageModelV4\n{\n private readonly zaiConfig: ZaiChatConfig;\n\n static [WORKFLOW_SERIALIZE](model: ZaiChatLanguageModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.zaiConfig,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: string;\n config: OpenAICompatibleChatConfig;\n }) {\n return new ZaiChatLanguageModel(\n options.modelId,\n options.config as unknown as ZaiChatConfig,\n );\n }\n\n constructor(modelId: ZaiChatModelId, config: ZaiChatConfig) {\n const headers = config.headers;\n\n super(modelId, {\n provider: config.provider,\n url: ({ path }) => `${config.baseURL}${path}`,\n headers:\n headers == null\n ? undefined\n : () => (typeof headers === 'function' ? headers() : headers),\n fetch: config.fetch,\n errorStructure: zaiErrorStructure,\n transformRequestBody: transformZaiRequestBody,\n supportedUrls: () => ({\n 'image/*': [/^https?:\\/\\//],\n 'video/*': [/^https?:\\/\\//],\n }),\n });\n\n this.zaiConfig = config;\n }\n\n private async prepareCallOptions(options: LanguageModelV4CallOptions) {\n const warnings: SharedV4Warning[] = [];\n\n const zaiOptions = await parseProviderOptions({\n provider: 'zai',\n providerOptions: options.providerOptions,\n schema: zaiLanguageModelChatOptions,\n });\n\n if (options.frequencyPenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n }\n if (options.presencePenalty != null) {\n warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n }\n if (options.seed != null) {\n warnings.push({ type: 'unsupported', feature: 'seed' });\n }\n\n let tools = options.tools;\n let toolChoice = options.toolChoice;\n\n if (toolChoice?.type === 'none') {\n tools = undefined;\n toolChoice = undefined;\n } else if (toolChoice != null && toolChoice.type !== 'auto') {\n warnings.push({\n type: 'unsupported',\n feature: `toolChoice ${toolChoice.type}`,\n details: 'Z.AI currently supports only automatic tool selection.',\n });\n toolChoice = undefined;\n }\n\n const normalizedOptions: LanguageModelV4CallOptions = {\n ...options,\n frequencyPenalty: undefined,\n presencePenalty: undefined,\n seed: undefined,\n tools,\n toolChoice,\n providerOptions:\n zaiOptions == null\n ? options.providerOptions\n : {\n ...options.providerOptions,\n zai: zaiOptions,\n },\n };\n\n return { normalizedOptions, warnings };\n }\n\n async doGenerate(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4GenerateResult> {\n const { normalizedOptions, warnings } =\n await this.prepareCallOptions(options);\n const result = await super.doGenerate(normalizedOptions);\n\n return {\n ...result,\n finishReason: mapZaiFinishReason(result.finishReason),\n warnings: [...result.warnings, ...warnings],\n };\n }\n\n async doStream(\n options: LanguageModelV4CallOptions,\n ): Promise<LanguageModelV4StreamResult> {\n const { normalizedOptions, warnings } =\n await this.prepareCallOptions(options);\n const result = await super.doStream(normalizedOptions);\n\n return {\n ...result,\n stream: result.stream.pipeThrough(\n new TransformStream<\n LanguageModelV4StreamPart,\n LanguageModelV4StreamPart\n >({\n transform(part, controller) {\n if (part.type === 'stream-start') {\n controller.enqueue({\n ...part,\n warnings: [...part.warnings, ...warnings],\n });\n return;\n }\n\n if (part.type === 'finish') {\n controller.enqueue({\n ...part,\n finishReason: mapZaiFinishReason(part.finishReason),\n });\n return;\n }\n\n controller.enqueue(part);\n },\n }),\n ),\n };\n }\n}\n","import {\n NoSuchModelError,\n type LanguageModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\nimport { ZaiChatLanguageModel } from './zai-chat-language-model';\nimport type { ZaiChatModelId } from './zai-chat-options';\n\nexport interface ZaiProviderSettings {\n /**\n * Z.AI API key. Defaults to the `ZAI_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\n * Base URL for API calls. Defaults to\n * `https://api.z.ai/api/paas/v4`.\n */\n baseURL?: string;\n\n /**\n * Custom headers to include in requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation.\n */\n fetch?: FetchFunction;\n}\n\nexport interface ZaiProvider extends ProviderV4 {\n /**\n * Creates a Z.AI chat model for text generation.\n */\n (modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * Creates a Z.AI language model.\n */\n languageModel(modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * Creates a Z.AI chat model.\n */\n chat(modelId: ZaiChatModelId): LanguageModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport function createZai(options: ZaiProviderSettings = {}): ZaiProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.z.ai/api/paas/v4';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ZAI_API_KEY',\n description: 'Z.AI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk-zai/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: ZaiChatModelId) =>\n new ZaiChatLanguageModel(modelId, {\n provider: 'zai.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = (modelId: ZaiChatModelId) => createLanguageModel(modelId);\n\n provider.specificationVersion = 'v4' as const;\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n provider.textEmbeddingModel = provider.embeddingModel;\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const zai = createZai();\n"],"mappings":";;;;;AAEA,MAAa,UAAA;;;ACAb,MAAa,8BAA8B,EAAE,OAAO;;;;;CAKlD,UAAU,EAAE,QAAQ,CAAC,CAAC,SAAS;;;;CAK/B,UAAU,EACP,OAAO;EACN,MAAM,EAAE,KAAK,CAAC,WAAW,UAAU,CAAC,CAAC,CAAC,SAAS;EAC/C,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS;CACtC,CAAC,CAAC,CACD,SAAS;;;;CAKZ,iBAAiB,EACd,KAAK;EAAC;EAAQ;EAAW;EAAO;EAAU;EAAQ;EAAS;CAAK,CAAC,CAAC,CAClE,SAAS;;;;CAKZ,YAAY,EAAE,QAAQ,CAAC,CAAC,SAAS;;;;CAKjC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS;;;;CAK9C,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS;AAC9C,CAAC;;;ACrCD,MAAM,wBAAwB,EAAE,OAAO;CACrC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ;CAChD,SAAS,EAAE,OAAO;AACpB,CAAC;AASD,MAAa,oBAA0D;CACrE,aARqB,EAAE,MAAM,CAC7B,uBACA,EAAE,OAAO,EAAE,OAAO,sBAAsB,CAAC,CAC3C,CAKe;CACb,iBAAgB,SAAS,WAAW,OAAO,KAAK,MAAM,UAAU,KAAK;AACvE;;;ACgBA,SAAS,wBACP,MACqB;CACrB,MAAM,EACJ,UACA,mBAAmB,mBACnB,kBAAkB,kBAClB,WACA,MAAM,OACN,UACA,YACA,MAAM,OACN,QACA,WAAW,YACX,GAAG,aACD;CAEJ,OAAO;EACL,GAAG;EACH,GAAI,aAAa,KAAA,KAAa,EAAE,WAAW,SAAS;EACpD,GAAI,aAAa,KAAA,KAAa,EAC5B,UAAU;GACR,GAAI,SAAS,SAAS,KAAA,KAAa,EAAE,MAAM,SAAS,KAAK;GACzD,GAAI,SAAS,kBAAkB,KAAA,KAAa,EAC1C,gBAAgB,SAAS,cAC3B;EACF,EACF;EACA,GAAI,eAAe,KAAA,KAAa,EAAE,aAAa,WAAW;EAC1D,GAAI,cAAc,KAAA,KAAa,EAAE,YAAY,UAAU;EACvD,GAAI,WAAW,KAAA,KAAa,EAAE,SAAS,OAAO;CAChD;AACF;AAEA,SAAS,mBACP,cAC6B;CAC7B,QAAQ,aAAa,KAArB;EACE,KAAK,aACH,OAAO;GAAE,SAAS;GAAkB,KAAK,aAAa;EAAI;EAC5D,KAAK,iCACH,OAAO;GAAE,SAAS;GAAU,KAAK,aAAa;EAAI;EACpD,KAAK,iBACH,OAAO;GAAE,SAAS;GAAS,KAAK,aAAa;EAAI;EACnD,SACE,OAAO;CACX;AACF;AAEA,IAAa,uBAAb,MAAa,6BACH,kCAEV;CAGE,QAAQ,oBAAoB,OAA6B;EACvD,OAAO,sBAAsB;GAC3B,SAAS,MAAM;GACf,QAAQ,MAAM;EAChB,CAAC;CACH;CAEA,QAAQ,sBAAsB,SAG3B;EACD,OAAO,IAAI,qBACT,QAAQ,SACR,QAAQ,MACV;CACF;CAEA,YAAY,SAAyB,QAAuB;EAC1D,MAAM,UAAU,OAAO;EAEvB,MAAM,SAAS;GACb,UAAU,OAAO;GACjB,MAAM,EAAE,WAAW,GAAG,OAAO,UAAU;GACvC,SACE,WAAW,OACP,KAAA,UACO,OAAO,YAAY,aAAa,QAAQ,IAAI;GACzD,OAAO,OAAO;GACd,gBAAgB;GAChB,sBAAsB;GACtB,sBAAsB;IACpB,WAAW,CAAC,cAAc;IAC1B,WAAW,CAAC,cAAc;GAC5B;EACF,CAAC;EAED,KAAK,YAAY;CACnB;CAEA,MAAc,mBAAmB,SAAqC;EACpE,MAAM,WAA8B,CAAC;EAErC,MAAM,aAAa,MAAM,qBAAqB;GAC5C,UAAU;GACV,iBAAiB,QAAQ;GACzB,QAAQ;EACV,CAAC;EAED,IAAI,QAAQ,oBAAoB,MAC9B,SAAS,KAAK;GAAE,MAAM;GAAe,SAAS;EAAmB,CAAC;EAEpE,IAAI,QAAQ,mBAAmB,MAC7B,SAAS,KAAK;GAAE,MAAM;GAAe,SAAS;EAAkB,CAAC;EAEnE,IAAI,QAAQ,QAAQ,MAClB,SAAS,KAAK;GAAE,MAAM;GAAe,SAAS;EAAO,CAAC;EAGxD,IAAI,QAAQ,QAAQ;EACpB,IAAI,aAAa,QAAQ;EAEzB,IAAI,YAAY,SAAS,QAAQ;GAC/B,QAAQ,KAAA;GACR,aAAa,KAAA;EACf,OAAO,IAAI,cAAc,QAAQ,WAAW,SAAS,QAAQ;GAC3D,SAAS,KAAK;IACZ,MAAM;IACN,SAAS,cAAc,WAAW;IAClC,SAAS;GACX,CAAC;GACD,aAAa,KAAA;EACf;EAkBA,OAAO;GAAE,mBAAA;IAfP,GAAG;IACH,kBAAkB,KAAA;IAClB,iBAAiB,KAAA;IACjB,MAAM,KAAA;IACN;IACA;IACA,iBACE,cAAc,OACV,QAAQ,kBACR;KACE,GAAG,QAAQ;KACX,KAAK;IACP;GAGiB;GAAG;EAAS;CACvC;CAEA,MAAM,WACJ,SACwC;EACxC,MAAM,EAAE,mBAAmB,aACzB,MAAM,KAAK,mBAAmB,OAAO;EACvC,MAAM,SAAS,MAAM,MAAM,WAAW,iBAAiB;EAEvD,OAAO;GACL,GAAG;GACH,cAAc,mBAAmB,OAAO,YAAY;GACpD,UAAU,CAAC,GAAG,OAAO,UAAU,GAAG,QAAQ;EAC5C;CACF;CAEA,MAAM,SACJ,SACsC;EACtC,MAAM,EAAE,mBAAmB,aACzB,MAAM,KAAK,mBAAmB,OAAO;EACvC,MAAM,SAAS,MAAM,MAAM,SAAS,iBAAiB;EAErD,OAAO;GACL,GAAG;GACH,QAAQ,OAAO,OAAO,YACpB,IAAI,gBAGF,EACA,UAAU,MAAM,YAAY;IAC1B,IAAI,KAAK,SAAS,gBAAgB;KAChC,WAAW,QAAQ;MACjB,GAAG;MACH,UAAU,CAAC,GAAG,KAAK,UAAU,GAAG,QAAQ;KAC1C,CAAC;KACD;IACF;IAEA,IAAI,KAAK,SAAS,UAAU;KAC1B,WAAW,QAAQ;MACjB,GAAG;MACH,cAAc,mBAAmB,KAAK,YAAY;KACpD,CAAC;KACD;IACF;IAEA,WAAW,QAAQ,IAAI;GACzB,EACF,CAAC,CACH;EACF;CACF;AACF;;;AC5KA,SAAgB,UAAU,UAA+B,CAAC,GAAgB;CACxE,MAAM,UACJ,qBAAqB,QAAQ,OAAO,KAAK;CAE3C,MAAM,mBACJ,oBACE;EACE,eAAe,UAAU,WAAW;GAClC,QAAQ,QAAQ;GAChB,yBAAyB;GACzB,aAAa;EACf,CAAC;EACD,GAAG,QAAQ;CACb,GACA,cAAc,SAChB;CAEF,MAAM,uBAAuB,YAC3B,IAAI,qBAAqB,SAAS;EAChC,UAAU;EACV;EACA,SAAS;EACT,OAAO,QAAQ;CACjB,CAAC;CAEH,MAAM,YAAY,YAA4B,oBAAoB,OAAO;CAEzE,SAAS,uBAAuB;CAChC,SAAS,gBAAgB;CACzB,SAAS,OAAO;CAEhB,SAAS,kBAAkB,YAAoB;EAC7C,MAAM,IAAI,iBAAiB;GAAE;GAAS,WAAW;EAAiB,CAAC;CACrE;CACA,SAAS,qBAAqB,SAAS;CACvC,SAAS,cAAc,YAAoB;EACzC,MAAM,IAAI,iBAAiB;GAAE;GAAS,WAAW;EAAa,CAAC;CACjE;CAEA,OAAO;AACT;AAEA,MAAa,MAAM,UAAU"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/zai",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.23",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -29,14 +29,14 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@ai-sdk/openai-compatible": "3.0.
|
|
33
|
-
"@ai-sdk/provider": "4.0.
|
|
34
|
-
"@ai-sdk/provider-utils": "5.0.
|
|
32
|
+
"@ai-sdk/openai-compatible": "3.0.61",
|
|
33
|
+
"@ai-sdk/provider": "4.0.21",
|
|
34
|
+
"@ai-sdk/provider-utils": "5.0.53"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"@types/node": "22.19.19",
|
|
38
38
|
"@vercel/ai-tsconfig": "0.0.0",
|
|
39
|
-
"
|
|
39
|
+
"tsdown": "^0.23.0",
|
|
40
40
|
"typescript": "5.8.3",
|
|
41
41
|
"zod": "3.25.76"
|
|
42
42
|
},
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
],
|
|
65
65
|
"description": "The Z.AI provider for the AI SDK contains language model support for Z.AI's GLM models.",
|
|
66
66
|
"scripts": {
|
|
67
|
-
"build": "pnpm clean &&
|
|
68
|
-
"build:watch": "pnpm clean &&
|
|
69
|
-
"clean": "del-cli
|
|
67
|
+
"build": "pnpm clean && tsdown",
|
|
68
|
+
"build:watch": "pnpm clean && tsdown --watch",
|
|
69
|
+
"clean": "del-cli docs *.tsbuildinfo",
|
|
70
70
|
"type-check": "tsc --build",
|
|
71
71
|
"test": "pnpm test:node && pnpm test:edge",
|
|
72
72
|
"test:update": "pnpm test:node -u",
|