@aituber-onair/chat 0.8.0 → 0.9.0
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/README.ja.md +18 -2
- package/README.md +18 -2
- package/dist/cjs/constants/index.d.ts +1 -0
- package/dist/cjs/constants/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.js +1 -0
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/constants/zai.d.ts +18 -0
- package/dist/cjs/constants/zai.d.ts.map +1 -0
- package/dist/cjs/constants/zai.js +33 -0
- package/dist/cjs/constants/zai.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
- package/dist/cjs/services/ChatServiceFactory.js +3 -0
- package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts +10 -0
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/zai/ZAIChatService.d.ts +73 -0
- package/dist/cjs/services/providers/zai/ZAIChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/zai/ZAIChatService.js +292 -0
- package/dist/cjs/services/providers/zai/ZAIChatService.js.map +1 -0
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts +36 -0
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +73 -0
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -0
- package/dist/esm/constants/index.d.ts +1 -0
- package/dist/esm/constants/index.d.ts.map +1 -1
- package/dist/esm/constants/index.js +1 -0
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/constants/zai.d.ts +18 -0
- package/dist/esm/constants/zai.d.ts.map +1 -0
- package/dist/esm/constants/zai.js +28 -0
- package/dist/esm/constants/zai.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
- package/dist/esm/services/ChatServiceFactory.js +3 -0
- package/dist/esm/services/ChatServiceFactory.js.map +1 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts +10 -0
- package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/zai/ZAIChatService.d.ts +73 -0
- package/dist/esm/services/providers/zai/ZAIChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/zai/ZAIChatService.js +288 -0
- package/dist/esm/services/providers/zai/ZAIChatService.js.map +1 -0
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts +36 -0
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +69 -0
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -0
- package/dist/umd/aituber-onair-chat.js +380 -0
- package/dist/umd/aituber-onair-chat.min.js +11 -9
- package/package.json +1 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { ChatService } from '../../ChatService';
|
|
2
|
+
import { Message, MessageWithVision } from '../../../types';
|
|
3
|
+
import { ToolDefinition, ToolChatCompletion } from '../../../types';
|
|
4
|
+
import { ChatResponseLength } from '../../../constants/chat';
|
|
5
|
+
/**
|
|
6
|
+
* Z.ai implementation of ChatService (OpenAI-compatible Chat Completions)
|
|
7
|
+
*/
|
|
8
|
+
export declare class ZAIChatService implements ChatService {
|
|
9
|
+
/** Provider name */
|
|
10
|
+
readonly provider: string;
|
|
11
|
+
private apiKey;
|
|
12
|
+
private model;
|
|
13
|
+
private visionModel;
|
|
14
|
+
private tools;
|
|
15
|
+
private endpoint;
|
|
16
|
+
private responseLength?;
|
|
17
|
+
private responseFormat?;
|
|
18
|
+
private thinking?;
|
|
19
|
+
/**
|
|
20
|
+
* Constructor
|
|
21
|
+
* @param apiKey Z.ai API key
|
|
22
|
+
* @param model Name of the model to use
|
|
23
|
+
* @param visionModel Name of the vision model
|
|
24
|
+
*/
|
|
25
|
+
constructor(apiKey: string, model?: string, visionModel?: string, tools?: ToolDefinition[], endpoint?: string, responseLength?: ChatResponseLength, responseFormat?: {
|
|
26
|
+
type: 'text' | 'json_object' | 'json_schema';
|
|
27
|
+
json_schema?: any;
|
|
28
|
+
}, thinking?: {
|
|
29
|
+
type: 'enabled' | 'disabled';
|
|
30
|
+
clear_thinking?: boolean;
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Get the current model name
|
|
34
|
+
*/
|
|
35
|
+
getModel(): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get the current vision model name
|
|
38
|
+
*/
|
|
39
|
+
getVisionModel(): string;
|
|
40
|
+
/**
|
|
41
|
+
* Process chat messages
|
|
42
|
+
*/
|
|
43
|
+
processChat(messages: Message[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Process chat messages with images
|
|
46
|
+
*/
|
|
47
|
+
processVisionChat(messages: MessageWithVision[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Process chat messages with tools (text only)
|
|
50
|
+
*/
|
|
51
|
+
chatOnce(messages: Message[], stream?: boolean, onPartialResponse?: (text: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
|
|
52
|
+
/**
|
|
53
|
+
* Process vision chat messages with tools
|
|
54
|
+
*/
|
|
55
|
+
visionChatOnce(messages: MessageWithVision[], stream?: boolean, onPartialResponse?: (text: string) => void, maxTokens?: number): Promise<ToolChatCompletion>;
|
|
56
|
+
private parseResponse;
|
|
57
|
+
private callZAI;
|
|
58
|
+
/**
|
|
59
|
+
* Build request body (OpenAI-compatible Chat Completions)
|
|
60
|
+
*/
|
|
61
|
+
private buildRequestBody;
|
|
62
|
+
private buildToolsDefinition;
|
|
63
|
+
private handleStream;
|
|
64
|
+
/**
|
|
65
|
+
* Parse streaming response with tool support
|
|
66
|
+
*/
|
|
67
|
+
private parseStream;
|
|
68
|
+
/**
|
|
69
|
+
* Parse non-streaming response
|
|
70
|
+
*/
|
|
71
|
+
private parseOneShot;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=ZAIChatService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZAIChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACL,cAAc,EAEd,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EACL,kBAAkB,EAEnB,MAAM,yBAAyB,CAAC;AAIjC;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,oBAAoB;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAS;IAElC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAC,CAAqB;IAC5C,OAAO,CAAC,cAAc,CAAC,CAGrB;IACF,OAAO,CAAC,QAAQ,CAAC,CAGf;IAEF;;;;;OAKG;gBAED,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAsB,EAC7B,WAAW,GAAE,MAA6B,EAC1C,KAAK,CAAC,EAAE,cAAc,EAAE,EACxB,QAAQ,GAAE,MAA0C,EACpD,cAAc,CAAC,EAAE,kBAAkB,EACnC,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;QAC7C,WAAW,CAAC,EAAE,GAAG,CAAC;KACnB,EACD,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;QAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B;IAaH;;OAEG;IACH,QAAQ,IAAI,MAAM;IAIlB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,WAAW,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IA2BhB;;OAEG;IACG,iBAAiB,CACrB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAqChB;;OAEG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,GAAE,OAAc,EACtB,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACpD,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;IAK9B;;OAEG;IACG,cAAc,CAClB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,MAAM,GAAE,OAAe,EACvB,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACpD,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,kBAAkB,CAAC;YAgBhB,aAAa;YAUb,OAAO;IAerB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,oBAAoB;YAYd,YAAY;IAwC1B;;OAEG;YACW,WAAW;IAyEzB;;OAEG;IACH,OAAO,CAAC,YAAY;CAwBrB"}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { ENDPOINT_ZAI_CHAT_COMPLETIONS_API, MODEL_GLM_4_7, MODEL_GLM_4_6V_FLASH, isZaiToolStreamModel, isZaiVisionModel, } from '../../../constants/zai';
|
|
2
|
+
import { getMaxTokensForResponseLength, } from '../../../constants/chat';
|
|
3
|
+
import { StreamTextAccumulator } from '../../../utils/streamTextAccumulator';
|
|
4
|
+
import { ChatServiceHttpClient } from '../../../utils/chatServiceHttpClient';
|
|
5
|
+
/**
|
|
6
|
+
* Z.ai implementation of ChatService (OpenAI-compatible Chat Completions)
|
|
7
|
+
*/
|
|
8
|
+
export class ZAIChatService {
|
|
9
|
+
/**
|
|
10
|
+
* Constructor
|
|
11
|
+
* @param apiKey Z.ai API key
|
|
12
|
+
* @param model Name of the model to use
|
|
13
|
+
* @param visionModel Name of the vision model
|
|
14
|
+
*/
|
|
15
|
+
constructor(apiKey, model = MODEL_GLM_4_7, visionModel = MODEL_GLM_4_6V_FLASH, tools, endpoint = ENDPOINT_ZAI_CHAT_COMPLETIONS_API, responseLength, responseFormat, thinking) {
|
|
16
|
+
/** Provider name */
|
|
17
|
+
this.provider = 'zai';
|
|
18
|
+
this.apiKey = apiKey;
|
|
19
|
+
this.model = model;
|
|
20
|
+
this.tools = tools || [];
|
|
21
|
+
this.endpoint = endpoint;
|
|
22
|
+
this.responseLength = responseLength;
|
|
23
|
+
this.responseFormat = responseFormat;
|
|
24
|
+
this.thinking = thinking ?? { type: 'disabled' };
|
|
25
|
+
this.visionModel = visionModel;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the current model name
|
|
29
|
+
*/
|
|
30
|
+
getModel() {
|
|
31
|
+
return this.model;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get the current vision model name
|
|
35
|
+
*/
|
|
36
|
+
getVisionModel() {
|
|
37
|
+
return this.visionModel;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Process chat messages
|
|
41
|
+
*/
|
|
42
|
+
async processChat(messages, onPartialResponse, onCompleteResponse) {
|
|
43
|
+
// Not using tools
|
|
44
|
+
if (this.tools.length === 0) {
|
|
45
|
+
const res = await this.callZAI(messages, this.model, true);
|
|
46
|
+
const full = await this.handleStream(res, onPartialResponse);
|
|
47
|
+
await onCompleteResponse(full);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Using tools
|
|
51
|
+
const { blocks, stop_reason } = await this.chatOnce(messages);
|
|
52
|
+
if (stop_reason === 'end') {
|
|
53
|
+
const full = blocks
|
|
54
|
+
.filter((b) => b.type === 'text')
|
|
55
|
+
.map((b) => b.text)
|
|
56
|
+
.join('');
|
|
57
|
+
await onCompleteResponse(full);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
throw new Error('processChat received tool_calls. ' +
|
|
61
|
+
'ChatProcessor must use chatOnce() loop when tools are enabled.');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Process chat messages with images
|
|
65
|
+
*/
|
|
66
|
+
async processVisionChat(messages, onPartialResponse, onCompleteResponse) {
|
|
67
|
+
if (!isZaiVisionModel(this.visionModel)) {
|
|
68
|
+
throw new Error(`Model ${this.visionModel} does not support vision capabilities.`);
|
|
69
|
+
}
|
|
70
|
+
// Not using tools
|
|
71
|
+
if (this.tools.length === 0) {
|
|
72
|
+
const res = await this.callZAI(messages, this.visionModel, true);
|
|
73
|
+
const full = await this.handleStream(res, onPartialResponse);
|
|
74
|
+
await onCompleteResponse(full);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// Using tools
|
|
78
|
+
const { blocks, stop_reason } = await this.visionChatOnce(messages, true, onPartialResponse);
|
|
79
|
+
if (stop_reason === 'end') {
|
|
80
|
+
const full = blocks
|
|
81
|
+
.filter((b) => b.type === 'text')
|
|
82
|
+
.map((b) => b.text)
|
|
83
|
+
.join('');
|
|
84
|
+
await onCompleteResponse(full);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
throw new Error('processVisionChat received tool_calls. ' +
|
|
88
|
+
'ChatProcessor must use visionChatOnce() loop when tools are enabled.');
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Process chat messages with tools (text only)
|
|
92
|
+
*/
|
|
93
|
+
async chatOnce(messages, stream = true, onPartialResponse = () => { }, maxTokens) {
|
|
94
|
+
const res = await this.callZAI(messages, this.model, stream, maxTokens);
|
|
95
|
+
return this.parseResponse(res, stream, onPartialResponse);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Process vision chat messages with tools
|
|
99
|
+
*/
|
|
100
|
+
async visionChatOnce(messages, stream = false, onPartialResponse = () => { }, maxTokens) {
|
|
101
|
+
if (!isZaiVisionModel(this.visionModel)) {
|
|
102
|
+
throw new Error(`Model ${this.visionModel} does not support vision capabilities.`);
|
|
103
|
+
}
|
|
104
|
+
const res = await this.callZAI(messages, this.visionModel, stream, maxTokens);
|
|
105
|
+
return this.parseResponse(res, stream, onPartialResponse);
|
|
106
|
+
}
|
|
107
|
+
async parseResponse(res, stream, onPartialResponse) {
|
|
108
|
+
return stream
|
|
109
|
+
? this.parseStream(res, onPartialResponse)
|
|
110
|
+
: this.parseOneShot(await res.json());
|
|
111
|
+
}
|
|
112
|
+
async callZAI(messages, model, stream = false, maxTokens) {
|
|
113
|
+
const body = this.buildRequestBody(messages, model, stream, maxTokens);
|
|
114
|
+
const res = await ChatServiceHttpClient.post(this.endpoint, body, {
|
|
115
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
116
|
+
});
|
|
117
|
+
return res;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Build request body (OpenAI-compatible Chat Completions)
|
|
121
|
+
*/
|
|
122
|
+
buildRequestBody(messages, model, stream, maxTokens) {
|
|
123
|
+
const body = {
|
|
124
|
+
model,
|
|
125
|
+
stream,
|
|
126
|
+
messages,
|
|
127
|
+
};
|
|
128
|
+
const tokenLimit = maxTokens !== undefined
|
|
129
|
+
? maxTokens
|
|
130
|
+
: getMaxTokensForResponseLength(this.responseLength);
|
|
131
|
+
if (tokenLimit !== undefined) {
|
|
132
|
+
body.max_tokens = tokenLimit;
|
|
133
|
+
}
|
|
134
|
+
if (this.responseFormat) {
|
|
135
|
+
body.response_format = this.responseFormat;
|
|
136
|
+
}
|
|
137
|
+
if (this.thinking) {
|
|
138
|
+
body.thinking = this.thinking;
|
|
139
|
+
}
|
|
140
|
+
const tools = this.buildToolsDefinition();
|
|
141
|
+
if (tools.length > 0) {
|
|
142
|
+
body.tools = tools;
|
|
143
|
+
body.tool_choice = 'auto';
|
|
144
|
+
if (stream && isZaiToolStreamModel(model)) {
|
|
145
|
+
body.tool_stream = true;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return body;
|
|
149
|
+
}
|
|
150
|
+
buildToolsDefinition() {
|
|
151
|
+
if (this.tools.length === 0)
|
|
152
|
+
return [];
|
|
153
|
+
return this.tools.map((t) => ({
|
|
154
|
+
type: 'function',
|
|
155
|
+
function: {
|
|
156
|
+
name: t.name,
|
|
157
|
+
description: t.description,
|
|
158
|
+
parameters: t.parameters,
|
|
159
|
+
},
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
async handleStream(res, onPartial) {
|
|
163
|
+
const reader = res.body.getReader();
|
|
164
|
+
const dec = new TextDecoder();
|
|
165
|
+
let full = '';
|
|
166
|
+
let buf = '';
|
|
167
|
+
while (true) {
|
|
168
|
+
const { done, value } = await reader.read();
|
|
169
|
+
if (done)
|
|
170
|
+
break;
|
|
171
|
+
buf += dec.decode(value, { stream: true });
|
|
172
|
+
const lines = buf.split('\n');
|
|
173
|
+
buf = lines.pop() || '';
|
|
174
|
+
for (const line of lines) {
|
|
175
|
+
const trimmedLine = line.trim();
|
|
176
|
+
if (!trimmedLine || trimmedLine.startsWith(':'))
|
|
177
|
+
continue;
|
|
178
|
+
if (!trimmedLine.startsWith('data:'))
|
|
179
|
+
continue;
|
|
180
|
+
const payload = trimmedLine.slice(5).trim();
|
|
181
|
+
if (payload === '[DONE]') {
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
const json = JSON.parse(payload);
|
|
186
|
+
const content = json.choices?.[0]?.delta?.content || '';
|
|
187
|
+
if (content) {
|
|
188
|
+
onPartial(content);
|
|
189
|
+
full += content;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch (e) {
|
|
193
|
+
console.debug('Failed to parse SSE data:', payload);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return full;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Parse streaming response with tool support
|
|
201
|
+
*/
|
|
202
|
+
async parseStream(res, onPartial) {
|
|
203
|
+
const reader = res.body.getReader();
|
|
204
|
+
const dec = new TextDecoder();
|
|
205
|
+
const textBlocks = [];
|
|
206
|
+
const toolCallsMap = new Map();
|
|
207
|
+
let buf = '';
|
|
208
|
+
while (true) {
|
|
209
|
+
const { done, value } = await reader.read();
|
|
210
|
+
if (done)
|
|
211
|
+
break;
|
|
212
|
+
buf += dec.decode(value, { stream: true });
|
|
213
|
+
const lines = buf.split('\n');
|
|
214
|
+
buf = lines.pop() || '';
|
|
215
|
+
for (const line of lines) {
|
|
216
|
+
const trimmedLine = line.trim();
|
|
217
|
+
if (!trimmedLine || trimmedLine.startsWith(':'))
|
|
218
|
+
continue;
|
|
219
|
+
if (!trimmedLine.startsWith('data:'))
|
|
220
|
+
continue;
|
|
221
|
+
const payload = trimmedLine.slice(5).trim();
|
|
222
|
+
if (payload === '[DONE]') {
|
|
223
|
+
break;
|
|
224
|
+
}
|
|
225
|
+
try {
|
|
226
|
+
const json = JSON.parse(payload);
|
|
227
|
+
const delta = json.choices?.[0]?.delta;
|
|
228
|
+
if (delta?.content) {
|
|
229
|
+
onPartial(delta.content);
|
|
230
|
+
StreamTextAccumulator.append(textBlocks, delta.content);
|
|
231
|
+
}
|
|
232
|
+
if (delta?.tool_calls) {
|
|
233
|
+
delta.tool_calls.forEach((c) => {
|
|
234
|
+
const entry = toolCallsMap.get(c.index) ?? {
|
|
235
|
+
id: c.id,
|
|
236
|
+
name: c.function?.name,
|
|
237
|
+
args: '',
|
|
238
|
+
};
|
|
239
|
+
entry.args += c.function?.arguments || '';
|
|
240
|
+
toolCallsMap.set(c.index, entry);
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
console.debug('Failed to parse SSE data:', payload);
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const toolBlocks = Array.from(toolCallsMap.entries())
|
|
250
|
+
.sort((a, b) => a[0] - b[0])
|
|
251
|
+
.map(([_, e]) => ({
|
|
252
|
+
type: 'tool_use',
|
|
253
|
+
id: e.id,
|
|
254
|
+
name: e.name,
|
|
255
|
+
input: JSON.parse(e.args || '{}'),
|
|
256
|
+
}));
|
|
257
|
+
const blocks = [...textBlocks, ...toolBlocks];
|
|
258
|
+
return {
|
|
259
|
+
blocks,
|
|
260
|
+
stop_reason: toolBlocks.length ? 'tool_use' : 'end',
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Parse non-streaming response
|
|
265
|
+
*/
|
|
266
|
+
parseOneShot(data) {
|
|
267
|
+
const choice = data.choices?.[0];
|
|
268
|
+
const blocks = [];
|
|
269
|
+
if (choice?.message?.tool_calls?.length) {
|
|
270
|
+
choice.message.tool_calls.forEach((c) => blocks.push({
|
|
271
|
+
type: 'tool_use',
|
|
272
|
+
id: c.id,
|
|
273
|
+
name: c.function?.name,
|
|
274
|
+
input: JSON.parse(c.function?.arguments || '{}'),
|
|
275
|
+
}));
|
|
276
|
+
}
|
|
277
|
+
else if (choice?.message?.content) {
|
|
278
|
+
blocks.push({ type: 'text', text: choice.message.content });
|
|
279
|
+
}
|
|
280
|
+
return {
|
|
281
|
+
blocks,
|
|
282
|
+
stop_reason: blocks.some((b) => b.type === 'tool_use')
|
|
283
|
+
? 'tool_use'
|
|
284
|
+
: 'end',
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
//# sourceMappingURL=ZAIChatService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZAIChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ChatService } from '../../ChatService';
|
|
2
|
+
import { ChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
|
|
3
|
+
/**
|
|
4
|
+
* Z.ai API provider implementation
|
|
5
|
+
*/
|
|
6
|
+
export declare class ZAIChatServiceProvider implements ChatServiceProvider {
|
|
7
|
+
/**
|
|
8
|
+
* Create a chat service instance
|
|
9
|
+
*/
|
|
10
|
+
createChatService(options: ChatServiceOptions): ChatService;
|
|
11
|
+
/**
|
|
12
|
+
* Get the provider name
|
|
13
|
+
*/
|
|
14
|
+
getProviderName(): string;
|
|
15
|
+
/**
|
|
16
|
+
* Get the list of supported models
|
|
17
|
+
*/
|
|
18
|
+
getSupportedModels(): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Get the default model
|
|
21
|
+
*/
|
|
22
|
+
getDefaultModel(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Get the default vision model
|
|
25
|
+
*/
|
|
26
|
+
private getDefaultVisionModel;
|
|
27
|
+
/**
|
|
28
|
+
* Check if this provider supports vision
|
|
29
|
+
*/
|
|
30
|
+
supportsVision(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Check if a specific model supports vision capabilities
|
|
33
|
+
*/
|
|
34
|
+
supportsVisionForModel(model: string): boolean;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ZAIChatServiceProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZAIChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,qBAAa,sBAAuB,YAAW,mBAAmB;IAChE;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW;IAgC3D;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAY9B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG/C"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { ENDPOINT_ZAI_CHAT_COMPLETIONS_API, MODEL_GLM_4_7, MODEL_GLM_4_7_FLASHX, MODEL_GLM_4_7_FLASH, MODEL_GLM_4_6, MODEL_GLM_4_6V, MODEL_GLM_4_6V_FLASHX, MODEL_GLM_4_6V_FLASH, isZaiVisionModel, } from '../../../constants/zai';
|
|
2
|
+
import { ZAIChatService } from './ZAIChatService';
|
|
3
|
+
/**
|
|
4
|
+
* Z.ai API provider implementation
|
|
5
|
+
*/
|
|
6
|
+
export class ZAIChatServiceProvider {
|
|
7
|
+
/**
|
|
8
|
+
* Create a chat service instance
|
|
9
|
+
*/
|
|
10
|
+
createChatService(options) {
|
|
11
|
+
const model = options.model || this.getDefaultModel();
|
|
12
|
+
const visionModel = options.visionModel ||
|
|
13
|
+
(this.supportsVisionForModel(model)
|
|
14
|
+
? model
|
|
15
|
+
: this.getDefaultVisionModel());
|
|
16
|
+
if (options.visionModel &&
|
|
17
|
+
!this.supportsVisionForModel(options.visionModel)) {
|
|
18
|
+
throw new Error(`Model ${options.visionModel} does not support vision capabilities.`);
|
|
19
|
+
}
|
|
20
|
+
const tools = options.tools;
|
|
21
|
+
const thinking = options.thinking ?? { type: 'disabled' };
|
|
22
|
+
return new ZAIChatService(options.apiKey, model, visionModel, tools, options.endpoint || ENDPOINT_ZAI_CHAT_COMPLETIONS_API, options.responseLength, options.responseFormat, thinking);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the provider name
|
|
26
|
+
*/
|
|
27
|
+
getProviderName() {
|
|
28
|
+
return 'zai';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get the list of supported models
|
|
32
|
+
*/
|
|
33
|
+
getSupportedModels() {
|
|
34
|
+
return [
|
|
35
|
+
MODEL_GLM_4_7,
|
|
36
|
+
MODEL_GLM_4_7_FLASHX,
|
|
37
|
+
MODEL_GLM_4_7_FLASH,
|
|
38
|
+
MODEL_GLM_4_6,
|
|
39
|
+
MODEL_GLM_4_6V,
|
|
40
|
+
MODEL_GLM_4_6V_FLASHX,
|
|
41
|
+
MODEL_GLM_4_6V_FLASH,
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the default model
|
|
46
|
+
*/
|
|
47
|
+
getDefaultModel() {
|
|
48
|
+
return MODEL_GLM_4_7;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get the default vision model
|
|
52
|
+
*/
|
|
53
|
+
getDefaultVisionModel() {
|
|
54
|
+
return MODEL_GLM_4_6V_FLASH;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if this provider supports vision
|
|
58
|
+
*/
|
|
59
|
+
supportsVision() {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Check if a specific model supports vision capabilities
|
|
64
|
+
*/
|
|
65
|
+
supportsVisionForModel(model) {
|
|
66
|
+
return isZaiVisionModel(model);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=ZAIChatServiceProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZAIChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACjC;;OAEG;IACH,iBAAiB,CAAC,OAA2B;QAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACtD,MAAM,WAAW,GACf,OAAO,CAAC,WAAW;YACnB,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;gBACjC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAEpC,IACE,OAAO,CAAC,WAAW;YACnB,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,EACjD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,SAAS,OAAO,CAAC,WAAW,wCAAwC,CACrE,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC;QAEnE,OAAO,IAAI,cAAc,CACvB,OAAO,CAAC,MAAM,EACd,KAAK,EACL,WAAW,EACX,KAAK,EACL,OAAO,CAAC,QAAQ,IAAI,iCAAiC,EACrD,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,cAAc,EACtB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO;YACL,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,aAAa;YACb,cAAc;YACd,qBAAqB;YACrB,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF"}
|