@baishuyun/coze-provider 0.0.16 → 0.0.17
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/.turbo/turbo-build.log +22 -23
- package/CHANGELOG.md +6 -0
- package/dist/index.js +144 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +144 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/coze-language-model.ts +30 -16
- package/src/stream-trasnformer/fields-json-transform-stream.ts +16 -10
- package/src/types.ts +25 -2
- package/src/utils/build-generate-result-by-chat-res.ts +71 -0
- package/src/utils/create-coze-non-streaming-chat.ts +54 -0
- package/src/utils/fields-json-rebuild/index.ts +3 -0
- package/src/utils/get-coze-chat-msg-detail.ts +19 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
DTS Build
|
|
21
|
-
DTS
|
|
22
|
-
DTS dist/index.d.
|
|
23
|
-
DTS dist/index.d.mts 1.57 KB
|
|
1
|
+
|
|
2
|
+
> @baishuyun/coze-provider@0.0.16 build /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider
|
|
3
|
+
> tsup --tsconfig tsconfig.json --clean
|
|
4
|
+
|
|
5
|
+
CLI Building entry: src/index.ts
|
|
6
|
+
CLI Using tsconfig: tsconfig.json
|
|
7
|
+
CLI tsup v8.5.1
|
|
8
|
+
CLI Using tsup config: /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider/tsup.config.ts
|
|
9
|
+
CLI Target: es2022
|
|
10
|
+
CLI Cleaning output folder
|
|
11
|
+
CJS Build start
|
|
12
|
+
ESM Build start
|
|
13
|
+
ESM dist/index.mjs 48.57 KB
|
|
14
|
+
ESM dist/index.mjs.map 93.10 KB
|
|
15
|
+
ESM ⚡️ Build success in 44ms
|
|
16
|
+
CJS dist/index.js 50.66 KB
|
|
17
|
+
CJS dist/index.js.map 93.51 KB
|
|
18
|
+
CJS ⚡️ Build success in 45ms
|
|
19
|
+
DTS Build start
|
|
20
|
+
DTS ⚡️ Build success in 1169ms
|
|
21
|
+
DTS dist/index.d.ts 1.57 KB
|
|
22
|
+
DTS dist/index.d.mts 1.57 KB
|
package/CHANGELOG.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -366,6 +366,118 @@ var LLMPartTrasnformStream = class extends TransformStream {
|
|
|
366
366
|
}
|
|
367
367
|
};
|
|
368
368
|
|
|
369
|
+
// src/utils/create-coze-non-streaming-chat.ts
|
|
370
|
+
var createCozeNonStreamingChat = async (botId, options, chatConfig) => {
|
|
371
|
+
const messages = convertPromptToMessages(options.prompt);
|
|
372
|
+
const url = chatConfig.url({
|
|
373
|
+
path: "/chat"
|
|
374
|
+
});
|
|
375
|
+
const user_id = (options.headers ? options.headers["x-user-id"] : "") || Date.now().toString();
|
|
376
|
+
const user_var = options.headers ? options.headers["x-user-var"] : "";
|
|
377
|
+
let customVar;
|
|
378
|
+
if (user_var) {
|
|
379
|
+
try {
|
|
380
|
+
customVar = JSON.parse(user_var);
|
|
381
|
+
} catch (e) {
|
|
382
|
+
console.warn("x-user-var parse error", e);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
const body = {
|
|
386
|
+
bot_id: botId,
|
|
387
|
+
auto_save_history: true,
|
|
388
|
+
user_id: user_id || "7543191937730215936",
|
|
389
|
+
additional_messages: messages,
|
|
390
|
+
stream: false
|
|
391
|
+
};
|
|
392
|
+
if (customVar) {
|
|
393
|
+
body.custom_var = customVar;
|
|
394
|
+
}
|
|
395
|
+
const headers = chatConfig.headers();
|
|
396
|
+
const abortSignal = options.abortSignal;
|
|
397
|
+
const response = await fetch(url, {
|
|
398
|
+
method: "POST",
|
|
399
|
+
headers,
|
|
400
|
+
credentials: "include",
|
|
401
|
+
body: JSON.stringify(body),
|
|
402
|
+
signal: abortSignal
|
|
403
|
+
});
|
|
404
|
+
return response;
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
// src/utils/get-coze-chat-msg-detail.ts
|
|
408
|
+
var getCozeChatMsgDetail = async (conversationId, chatId, chatConfig) => {
|
|
409
|
+
const url = chatConfig.url({
|
|
410
|
+
path: `/chat/message/list?conversation_id=${conversationId}&chat_id=${chatId}`
|
|
411
|
+
});
|
|
412
|
+
const response = await fetch(url, {
|
|
413
|
+
method: "POST",
|
|
414
|
+
headers: chatConfig.headers(),
|
|
415
|
+
credentials: "include"
|
|
416
|
+
});
|
|
417
|
+
return response;
|
|
418
|
+
};
|
|
419
|
+
|
|
420
|
+
// src/utils/build-generate-result-by-chat-res.ts
|
|
421
|
+
var BuildWarningGenerateResult = (message) => {
|
|
422
|
+
return {
|
|
423
|
+
content: [],
|
|
424
|
+
finishReason: "error",
|
|
425
|
+
request: {
|
|
426
|
+
body: null
|
|
427
|
+
},
|
|
428
|
+
usage: {
|
|
429
|
+
inputTokens: 0,
|
|
430
|
+
outputTokens: 0,
|
|
431
|
+
totalTokens: 0
|
|
432
|
+
},
|
|
433
|
+
response: {
|
|
434
|
+
body: null
|
|
435
|
+
},
|
|
436
|
+
warnings: [
|
|
437
|
+
{
|
|
438
|
+
type: "other",
|
|
439
|
+
message
|
|
440
|
+
}
|
|
441
|
+
]
|
|
442
|
+
};
|
|
443
|
+
};
|
|
444
|
+
var BuildGenerateResultByChatRes = async (response, chatConfig, reqBody) => {
|
|
445
|
+
if (!response.ok) {
|
|
446
|
+
return Promise.reject(
|
|
447
|
+
BuildWarningGenerateResult(`Coze API error: ${response.status} ${response.statusText}`)
|
|
448
|
+
);
|
|
449
|
+
}
|
|
450
|
+
const res = await response.json();
|
|
451
|
+
if (res.code !== 0) {
|
|
452
|
+
return Promise.reject(BuildWarningGenerateResult(`Coze API error: ${res.code} ${res.msg}`));
|
|
453
|
+
}
|
|
454
|
+
const msgRes = await getCozeChatMsgDetail(res.data.conversation_id, res.data.id, chatConfig);
|
|
455
|
+
if (!msgRes.ok) {
|
|
456
|
+
return Promise.reject(
|
|
457
|
+
BuildWarningGenerateResult(
|
|
458
|
+
`Failed to get message detail: ${msgRes.status} ${msgRes.statusText}`
|
|
459
|
+
)
|
|
460
|
+
);
|
|
461
|
+
}
|
|
462
|
+
const msgDetail = await msgRes.json();
|
|
463
|
+
return {
|
|
464
|
+
content: msgDetail.data.message.content,
|
|
465
|
+
finishReason: msgDetail.data.message.status === "finished" ? "stop" : "error",
|
|
466
|
+
request: {
|
|
467
|
+
body: reqBody
|
|
468
|
+
},
|
|
469
|
+
usage: {
|
|
470
|
+
inputTokens: 0,
|
|
471
|
+
outputTokens: 0,
|
|
472
|
+
totalTokens: 0
|
|
473
|
+
},
|
|
474
|
+
response: {
|
|
475
|
+
body: msgDetail
|
|
476
|
+
},
|
|
477
|
+
warnings: []
|
|
478
|
+
};
|
|
479
|
+
};
|
|
480
|
+
|
|
369
481
|
// src/coze-language-model.ts
|
|
370
482
|
var CozeLanguageModel = class {
|
|
371
483
|
specificationVersion = "v2";
|
|
@@ -379,8 +491,23 @@ var CozeLanguageModel = class {
|
|
|
379
491
|
this.supportedUrls = config.supportedUrls?.() || {};
|
|
380
492
|
this.config = config;
|
|
381
493
|
}
|
|
382
|
-
|
|
383
|
-
|
|
494
|
+
// @not-support
|
|
495
|
+
// coze 目前不支持非流式接口,为了兼容接口规范,仍然实现了 doGenerate 方法
|
|
496
|
+
async doGenerate(options) {
|
|
497
|
+
return BuildWarningGenerateResult(
|
|
498
|
+
"Coze provider does not support non-streaming calls, please use streaming interface"
|
|
499
|
+
);
|
|
500
|
+
const botIdFromProvider = options.providerOptions?.bot?.botId;
|
|
501
|
+
if (!botIdFromProvider) {
|
|
502
|
+
return BuildWarningGenerateResult("bot id missing in provider options");
|
|
503
|
+
}
|
|
504
|
+
const response = await createCozeNonStreamingChat(
|
|
505
|
+
botIdFromProvider,
|
|
506
|
+
options,
|
|
507
|
+
this.config
|
|
508
|
+
);
|
|
509
|
+
const result = await BuildGenerateResultByChatRes(response, this.config);
|
|
510
|
+
return result;
|
|
384
511
|
}
|
|
385
512
|
isVisibleMsgPart(evtData) {
|
|
386
513
|
if (evtData.type === "knowledge" && evtData.role === "assistant") {
|
|
@@ -412,7 +539,6 @@ var CozeLanguageModel = class {
|
|
|
412
539
|
stream: true,
|
|
413
540
|
additional_messages: messages
|
|
414
541
|
};
|
|
415
|
-
console.log("Request body for Coze API:", JSON.stringify(body));
|
|
416
542
|
if (customVar) {
|
|
417
543
|
body.custom_var = customVar;
|
|
418
544
|
}
|
|
@@ -1692,6 +1818,9 @@ var RebuilderMap = {
|
|
|
1692
1818
|
dept: rebuildDept,
|
|
1693
1819
|
sn: rebuildSn,
|
|
1694
1820
|
deptgroup: rebuildDeptGroup,
|
|
1821
|
+
flowState: defaultBuilder,
|
|
1822
|
+
flowstate: defaultBuilder,
|
|
1823
|
+
formula: defaultBuilder,
|
|
1695
1824
|
unknown: defaultBuilder
|
|
1696
1825
|
};
|
|
1697
1826
|
var rebuildFieldsJsonStructure = (truncatedJson, subItemsOnly = false) => {
|
|
@@ -1710,6 +1839,7 @@ var rebuildFieldsJsonStructure = (truncatedJson, subItemsOnly = false) => {
|
|
|
1710
1839
|
var createFieldsJsonTransformStream = (enableJsonParser) => {
|
|
1711
1840
|
let parser;
|
|
1712
1841
|
let id;
|
|
1842
|
+
let isFirstChunk = true;
|
|
1713
1843
|
const chunkGuard = (chunk) => {
|
|
1714
1844
|
if (!enableJsonParser) {
|
|
1715
1845
|
return false;
|
|
@@ -1735,12 +1865,21 @@ var createFieldsJsonTransformStream = (enableJsonParser) => {
|
|
|
1735
1865
|
if (chunkGuard(chunk)) {
|
|
1736
1866
|
if ("id" in chunk && "delta" in chunk) {
|
|
1737
1867
|
id = chunk.id;
|
|
1738
|
-
|
|
1868
|
+
let delta = chunk.delta;
|
|
1869
|
+
if (isFirstChunk) {
|
|
1870
|
+
delta = delta.replace(/^\uFEFF/, "");
|
|
1871
|
+
isFirstChunk = false;
|
|
1872
|
+
}
|
|
1873
|
+
parser.write(delta);
|
|
1874
|
+
} else {
|
|
1875
|
+
console.warn("Unexpected chunk format for JSON parsing:", chunk);
|
|
1876
|
+
controller.enqueue(chunk);
|
|
1739
1877
|
}
|
|
1740
1878
|
} else {
|
|
1741
1879
|
controller.enqueue(chunk);
|
|
1742
1880
|
}
|
|
1743
1881
|
} catch (e) {
|
|
1882
|
+
console.log("write or enqueue error", e);
|
|
1744
1883
|
controller.error(e);
|
|
1745
1884
|
}
|
|
1746
1885
|
},
|
|
@@ -1767,6 +1906,7 @@ var createFieldsJsonTransformStream = (enableJsonParser) => {
|
|
|
1767
1906
|
let errorLogged = false;
|
|
1768
1907
|
parser.onError = (err) => {
|
|
1769
1908
|
if (!errorLogged) {
|
|
1909
|
+
console.log("is enabled", enableJsonParser);
|
|
1770
1910
|
console.error("JsonWidgetStream: JSON Parsing Error:", err);
|
|
1771
1911
|
errorLogged = true;
|
|
1772
1912
|
}
|