@leikeduntech/leiai-js 2.3.6 → 2.4.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/build/index.d.ts +0 -1
- package/build/index.js +27 -47
- package/package.json +1 -1
package/build/index.d.ts
CHANGED
|
@@ -510,7 +510,6 @@ declare class ChatGPTAPI {
|
|
|
510
510
|
set apiOrg(apiOrg: string);
|
|
511
511
|
protected _buildMessages(text: string, opts: SendMessageOptions): Promise<{
|
|
512
512
|
messages: openai.ChatCompletionRequestMessage[];
|
|
513
|
-
aliyunMessage: any;
|
|
514
513
|
maxTokens: number;
|
|
515
514
|
numTokens: number;
|
|
516
515
|
errorMessage: string;
|
package/build/index.js
CHANGED
|
@@ -155,12 +155,6 @@ var ChatGPTAPI = class {
|
|
|
155
155
|
...completionParams
|
|
156
156
|
};
|
|
157
157
|
this._systemMessage = systemMessage;
|
|
158
|
-
if (this._systemMessage === void 0) {
|
|
159
|
-
const currentDate = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
|
|
160
|
-
this._systemMessage = `You are ChatGPT, a large language model trained by ${this._manufacturer}. Answer as concisely as possible.
|
|
161
|
-
Knowledge cutoff: 2021-09-01
|
|
162
|
-
Current date: ${currentDate}`;
|
|
163
|
-
}
|
|
164
158
|
this._maxModelTokens = maxModelTokens;
|
|
165
159
|
this._maxResponseTokens = maxResponseTokens;
|
|
166
160
|
this._getMessageById = getMessageById ?? this._defaultGetMessageById;
|
|
@@ -205,6 +199,13 @@ Current date: ${currentDate}`;
|
|
|
205
199
|
* @returns The response from ChatGPT
|
|
206
200
|
*/
|
|
207
201
|
async sendMessage(text, opts = {}) {
|
|
202
|
+
var _a;
|
|
203
|
+
if (this._systemMessage === void 0 && ["openai", "azure"].indexOf((_a = this._manufacturer) == null ? void 0 : _a.toLowerCase()) > -1) {
|
|
204
|
+
const currentDate = (/* @__PURE__ */ new Date()).toISOString().split("T")[0];
|
|
205
|
+
this._systemMessage = `You are ChatGPT, a large language model trained by ${this._manufacturer}. Answer as concisely as possible.
|
|
206
|
+
Knowledge cutoff: 2021-09-01
|
|
207
|
+
Current date: ${currentDate}`;
|
|
208
|
+
}
|
|
208
209
|
const {
|
|
209
210
|
parentMessageId,
|
|
210
211
|
messageId = uuidv4(),
|
|
@@ -228,7 +229,7 @@ Current date: ${currentDate}`;
|
|
|
228
229
|
text
|
|
229
230
|
};
|
|
230
231
|
const latestQuestion = message;
|
|
231
|
-
const { messages,
|
|
232
|
+
const { messages, maxTokens, numTokens, errorMessage } = await this._buildMessages(
|
|
232
233
|
text,
|
|
233
234
|
opts
|
|
234
235
|
);
|
|
@@ -255,7 +256,7 @@ Current date: ${currentDate}`;
|
|
|
255
256
|
};
|
|
256
257
|
const responseP = new Promise(
|
|
257
258
|
async (resolve, reject) => {
|
|
258
|
-
var
|
|
259
|
+
var _a2, _b, _c, _d, _e;
|
|
259
260
|
let url = `${this._apiBaseUrl}/chat/completions`;
|
|
260
261
|
const headers = {
|
|
261
262
|
"Content-Type": "application/json",
|
|
@@ -289,8 +290,8 @@ Current date: ${currentDate}`;
|
|
|
289
290
|
stream
|
|
290
291
|
};
|
|
291
292
|
if (this._manufacturer.toLowerCase() === "aliyun") {
|
|
293
|
+
body = Object.assign(body, { parameters: { result_format: "message" }, input: { messages } });
|
|
292
294
|
delete body.messages;
|
|
293
|
-
body = Object.assign(body, { input: aliyunMessage });
|
|
294
295
|
} else if (this._manufacturer.toLowerCase() === "zhipu") {
|
|
295
296
|
delete body.messages;
|
|
296
297
|
body = Object.assign(body, { prompt: messages });
|
|
@@ -302,7 +303,7 @@ Current date: ${currentDate}`;
|
|
|
302
303
|
console.log(`api url (${url}`);
|
|
303
304
|
console.log(`api header (${JSON.stringify(headers)}`);
|
|
304
305
|
console.log(`sendMessage (${numTokens} tokens) body: `, body);
|
|
305
|
-
console.log(`sendMessage (${numTokens} tokens) message : `,
|
|
306
|
+
console.log(`sendMessage (${numTokens} tokens) message : `, messages);
|
|
306
307
|
}
|
|
307
308
|
if (this._manufacturer.toLowerCase() === "xunfei") {
|
|
308
309
|
const self = this;
|
|
@@ -351,7 +352,7 @@ Current date: ${currentDate}`;
|
|
|
351
352
|
body: JSON.stringify(body),
|
|
352
353
|
signal: abortSignal,
|
|
353
354
|
onMessage: (data) => {
|
|
354
|
-
var
|
|
355
|
+
var _a3, _b2, _c2, _d2, _e2, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s;
|
|
355
356
|
if (this._debug) {
|
|
356
357
|
}
|
|
357
358
|
if (data === "[DONE]") {
|
|
@@ -367,13 +368,13 @@ Current date: ${currentDate}`;
|
|
|
367
368
|
return resolve(result);
|
|
368
369
|
}
|
|
369
370
|
} else if (this._manufacturer.toLowerCase() === "azure") {
|
|
370
|
-
if (((
|
|
371
|
+
if (((_a3 = response.choices[0]) == null ? void 0 : _a3.finish_reason) === "stop") {
|
|
371
372
|
result.text = result.text.trim();
|
|
372
373
|
return resolve(result);
|
|
373
374
|
}
|
|
374
375
|
} else if (this._manufacturer.toLowerCase() === "aliyun") {
|
|
375
|
-
if (((_b2 = response == null ? void 0 : response.output) == null ? void 0 : _b2.finish_reason)
|
|
376
|
-
result.text = response == null ? void 0 : response.output.
|
|
376
|
+
if (["stop", "length"].indexOf((_c2 = (_b2 = response == null ? void 0 : response.output) == null ? void 0 : _b2.choices[0]) == null ? void 0 : _c2.finish_reason) > -1) {
|
|
377
|
+
result.text = (_f = (_e2 = (_d2 = response == null ? void 0 : response.output) == null ? void 0 : _d2.choices[0]) == null ? void 0 : _e2.message) == null ? void 0 : _f.content.trim();
|
|
377
378
|
return resolve(result);
|
|
378
379
|
}
|
|
379
380
|
} else if (this._manufacturer.toLowerCase() === "zhipu") {
|
|
@@ -391,7 +392,7 @@ Current date: ${currentDate}`;
|
|
|
391
392
|
result.id = response.id;
|
|
392
393
|
}
|
|
393
394
|
}
|
|
394
|
-
if (((
|
|
395
|
+
if (((_g = response.choices) == null ? void 0 : _g.length) && ["openai", "azure"].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
395
396
|
const delta = response.choices[0].delta;
|
|
396
397
|
result.delta = delta.content;
|
|
397
398
|
if (delta == null ? void 0 : delta.content)
|
|
@@ -409,17 +410,17 @@ Current date: ${currentDate}`;
|
|
|
409
410
|
result.detail = response;
|
|
410
411
|
onProgress == null ? void 0 : onProgress(result);
|
|
411
412
|
} else if ((response == null ? void 0 : response.output) && this._manufacturer.toLowerCase() === "aliyun") {
|
|
412
|
-
response.usage = Object.assign(response.usage, { prompt_tokens: (
|
|
413
|
+
response.usage = Object.assign(response.usage, { prompt_tokens: (_h = response.usage) == null ? void 0 : _h.input_tokens, completion_tokens: (_i = response.usage) == null ? void 0 : _i.output_tokens, total_tokens: ((_j = response.usage) == null ? void 0 : _j.input_tokens) + ((_k = response.usage) == null ? void 0 : _k.output_tokens) });
|
|
413
414
|
result.delta = "";
|
|
414
|
-
if ((
|
|
415
|
-
result.text = (
|
|
415
|
+
if ((_n = (_m = (_l = response == null ? void 0 : response.output) == null ? void 0 : _l.choices[0]) == null ? void 0 : _m.message) == null ? void 0 : _n.content)
|
|
416
|
+
result.text = (_q = (_p = (_o = response == null ? void 0 : response.output) == null ? void 0 : _o.choices[0]) == null ? void 0 : _p.message) == null ? void 0 : _q.content;
|
|
416
417
|
result.role = "assistant";
|
|
417
418
|
result.detail = response;
|
|
418
419
|
onProgress == null ? void 0 : onProgress(result);
|
|
419
420
|
} else if ((response == null ? void 0 : response.data) && this._manufacturer.toLowerCase() === "zhipu") {
|
|
420
421
|
if (response.event === "finish") {
|
|
421
|
-
if ((
|
|
422
|
-
response.usage = (
|
|
422
|
+
if ((_r = response == null ? void 0 : response.meta) == null ? void 0 : _r.usage) {
|
|
423
|
+
response.usage = (_s = response == null ? void 0 : response.meta) == null ? void 0 : _s.usage;
|
|
423
424
|
} else {
|
|
424
425
|
response.usage = { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 };
|
|
425
426
|
}
|
|
@@ -469,7 +470,7 @@ Current date: ${currentDate}`;
|
|
|
469
470
|
result.id = response.id;
|
|
470
471
|
}
|
|
471
472
|
}
|
|
472
|
-
if (((
|
|
473
|
+
if (((_a2 = response == null ? void 0 : response.choices) == null ? void 0 : _a2.length) && ["openai", "azure"].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
473
474
|
const message2 = response.choices[0].message;
|
|
474
475
|
result.text = message2.content;
|
|
475
476
|
if (message2.role) {
|
|
@@ -498,13 +499,13 @@ Current date: ${currentDate}`;
|
|
|
498
499
|
}
|
|
499
500
|
}
|
|
500
501
|
).then(async (message2) => {
|
|
501
|
-
var
|
|
502
|
+
var _a2, _b;
|
|
502
503
|
if (message2.detail && !message2.detail.usage) {
|
|
503
504
|
try {
|
|
504
505
|
const promptTokens = numTokens;
|
|
505
506
|
let completionTokens = 0;
|
|
506
507
|
if (["baidu", "aliyun"].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
507
|
-
completionTokens = (_b = (
|
|
508
|
+
completionTokens = (_b = (_a2 = message2.detail) == null ? void 0 : _a2.usage) == null ? void 0 : _b.total_tokens;
|
|
508
509
|
} else {
|
|
509
510
|
completionTokens = await this._getTokenCount(message2.text);
|
|
510
511
|
}
|
|
@@ -581,14 +582,14 @@ Current date: ${currentDate}`;
|
|
|
581
582
|
const assistantLabel = ASSISTANT_LABEL_DEFAULT;
|
|
582
583
|
const maxNumTokens = this._maxModelTokens - this._maxResponseTokens;
|
|
583
584
|
let messages = [];
|
|
584
|
-
if (systemMessage && ["openai", "azure"].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
585
|
+
if (systemMessage && ["openai", "azure", "aliyun"].indexOf(this._manufacturer.toLowerCase()) > -1) {
|
|
585
586
|
messages.push({
|
|
586
587
|
role: "system",
|
|
587
588
|
content: systemMessage
|
|
588
589
|
});
|
|
589
590
|
}
|
|
590
591
|
const systemMessageOffset = messages.length;
|
|
591
|
-
const userMessage = ["baidu", "azure", "zhipu", "xunfei"].indexOf(this._manufacturer.toLowerCase()) > -1 ? [{ role: "user", content: text }] : [{ role: "user", content: text, name: opts.name }];
|
|
592
|
+
const userMessage = ["baidu", "azure", "zhipu", "xunfei", "aliyun"].indexOf(this._manufacturer.toLowerCase()) > -1 ? [{ role: "user", content: text }] : [{ role: "user", content: text, name: opts.name }];
|
|
592
593
|
let nextMessages = text ? messages.concat(userMessage) : messages;
|
|
593
594
|
let numTokens = 0;
|
|
594
595
|
do {
|
|
@@ -647,28 +648,7 @@ ${message.content}`]);
|
|
|
647
648
|
maxTokens = this._maxModelTokens;
|
|
648
649
|
errorMessage = `${this._manufacturer}\uFF1A\u5F53\u524D\u63D0\u95EE\u4E0A\u4E0B\u6587\u5185\u5BB9\u957F\u5EA6${numTokens}tokns\u8D85\u957F\uFF0C\u8BE5\u6A21\u578B\u6700\u5927\u63D0\u95EE\u957F\u5EA6\u4E3A${this._maxModelTokens}tokens\uFF0C\u8BF7\u5207\u6362\u5176\u4ED6\u589E\u5F3AAI\u6A21\u578B\u6216\u51CF\u5C11\u5B57\u6570\u6216\u8005\u5173\u95ED\u4E0A\u4E0B\u6587\u5386\u53F2\u63D0\u9AD8\u5355\u6B21\u63D0\u95EE\u957F\u5EA6\uFF01`;
|
|
649
650
|
}
|
|
650
|
-
|
|
651
|
-
if (this._manufacturer.toLowerCase() === "aliyun") {
|
|
652
|
-
aliyunMessage = { prompt: "", history: [] };
|
|
653
|
-
let onceMessage = { user: "", bot: "" };
|
|
654
|
-
messages.forEach((item, index) => {
|
|
655
|
-
if (index < messages.length - 1 && index > 1) {
|
|
656
|
-
if (!onceMessage.user || !onceMessage.bot) {
|
|
657
|
-
if (item.role === "user")
|
|
658
|
-
onceMessage.user = item.content;
|
|
659
|
-
if (item.role === "assistant")
|
|
660
|
-
onceMessage.bot = item.content;
|
|
661
|
-
}
|
|
662
|
-
if (onceMessage.user && onceMessage.bot) {
|
|
663
|
-
aliyunMessage.history.push(onceMessage);
|
|
664
|
-
onceMessage = { user: "", bot: "" };
|
|
665
|
-
}
|
|
666
|
-
} else {
|
|
667
|
-
aliyunMessage.prompt = item.content;
|
|
668
|
-
}
|
|
669
|
-
});
|
|
670
|
-
}
|
|
671
|
-
return { messages, aliyunMessage, maxTokens, numTokens, errorMessage };
|
|
651
|
+
return { messages, maxTokens, numTokens, errorMessage };
|
|
672
652
|
}
|
|
673
653
|
async _getTokenCount(text) {
|
|
674
654
|
text = text.replace(/<\|endoftext\|>/g, "");
|