@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/dist/index.mjs
CHANGED
|
@@ -333,6 +333,118 @@ var LLMPartTrasnformStream = class extends TransformStream {
|
|
|
333
333
|
}
|
|
334
334
|
};
|
|
335
335
|
|
|
336
|
+
// src/utils/create-coze-non-streaming-chat.ts
|
|
337
|
+
var createCozeNonStreamingChat = async (botId, options, chatConfig) => {
|
|
338
|
+
const messages = convertPromptToMessages(options.prompt);
|
|
339
|
+
const url = chatConfig.url({
|
|
340
|
+
path: "/chat"
|
|
341
|
+
});
|
|
342
|
+
const user_id = (options.headers ? options.headers["x-user-id"] : "") || Date.now().toString();
|
|
343
|
+
const user_var = options.headers ? options.headers["x-user-var"] : "";
|
|
344
|
+
let customVar;
|
|
345
|
+
if (user_var) {
|
|
346
|
+
try {
|
|
347
|
+
customVar = JSON.parse(user_var);
|
|
348
|
+
} catch (e) {
|
|
349
|
+
console.warn("x-user-var parse error", e);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
const body = {
|
|
353
|
+
bot_id: botId,
|
|
354
|
+
auto_save_history: true,
|
|
355
|
+
user_id: user_id || "7543191937730215936",
|
|
356
|
+
additional_messages: messages,
|
|
357
|
+
stream: false
|
|
358
|
+
};
|
|
359
|
+
if (customVar) {
|
|
360
|
+
body.custom_var = customVar;
|
|
361
|
+
}
|
|
362
|
+
const headers = chatConfig.headers();
|
|
363
|
+
const abortSignal = options.abortSignal;
|
|
364
|
+
const response = await fetch(url, {
|
|
365
|
+
method: "POST",
|
|
366
|
+
headers,
|
|
367
|
+
credentials: "include",
|
|
368
|
+
body: JSON.stringify(body),
|
|
369
|
+
signal: abortSignal
|
|
370
|
+
});
|
|
371
|
+
return response;
|
|
372
|
+
};
|
|
373
|
+
|
|
374
|
+
// src/utils/get-coze-chat-msg-detail.ts
|
|
375
|
+
var getCozeChatMsgDetail = async (conversationId, chatId, chatConfig) => {
|
|
376
|
+
const url = chatConfig.url({
|
|
377
|
+
path: `/chat/message/list?conversation_id=${conversationId}&chat_id=${chatId}`
|
|
378
|
+
});
|
|
379
|
+
const response = await fetch(url, {
|
|
380
|
+
method: "POST",
|
|
381
|
+
headers: chatConfig.headers(),
|
|
382
|
+
credentials: "include"
|
|
383
|
+
});
|
|
384
|
+
return response;
|
|
385
|
+
};
|
|
386
|
+
|
|
387
|
+
// src/utils/build-generate-result-by-chat-res.ts
|
|
388
|
+
var BuildWarningGenerateResult = (message) => {
|
|
389
|
+
return {
|
|
390
|
+
content: [],
|
|
391
|
+
finishReason: "error",
|
|
392
|
+
request: {
|
|
393
|
+
body: null
|
|
394
|
+
},
|
|
395
|
+
usage: {
|
|
396
|
+
inputTokens: 0,
|
|
397
|
+
outputTokens: 0,
|
|
398
|
+
totalTokens: 0
|
|
399
|
+
},
|
|
400
|
+
response: {
|
|
401
|
+
body: null
|
|
402
|
+
},
|
|
403
|
+
warnings: [
|
|
404
|
+
{
|
|
405
|
+
type: "other",
|
|
406
|
+
message
|
|
407
|
+
}
|
|
408
|
+
]
|
|
409
|
+
};
|
|
410
|
+
};
|
|
411
|
+
var BuildGenerateResultByChatRes = async (response, chatConfig, reqBody) => {
|
|
412
|
+
if (!response.ok) {
|
|
413
|
+
return Promise.reject(
|
|
414
|
+
BuildWarningGenerateResult(`Coze API error: ${response.status} ${response.statusText}`)
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
const res = await response.json();
|
|
418
|
+
if (res.code !== 0) {
|
|
419
|
+
return Promise.reject(BuildWarningGenerateResult(`Coze API error: ${res.code} ${res.msg}`));
|
|
420
|
+
}
|
|
421
|
+
const msgRes = await getCozeChatMsgDetail(res.data.conversation_id, res.data.id, chatConfig);
|
|
422
|
+
if (!msgRes.ok) {
|
|
423
|
+
return Promise.reject(
|
|
424
|
+
BuildWarningGenerateResult(
|
|
425
|
+
`Failed to get message detail: ${msgRes.status} ${msgRes.statusText}`
|
|
426
|
+
)
|
|
427
|
+
);
|
|
428
|
+
}
|
|
429
|
+
const msgDetail = await msgRes.json();
|
|
430
|
+
return {
|
|
431
|
+
content: msgDetail.data.message.content,
|
|
432
|
+
finishReason: msgDetail.data.message.status === "finished" ? "stop" : "error",
|
|
433
|
+
request: {
|
|
434
|
+
body: reqBody
|
|
435
|
+
},
|
|
436
|
+
usage: {
|
|
437
|
+
inputTokens: 0,
|
|
438
|
+
outputTokens: 0,
|
|
439
|
+
totalTokens: 0
|
|
440
|
+
},
|
|
441
|
+
response: {
|
|
442
|
+
body: msgDetail
|
|
443
|
+
},
|
|
444
|
+
warnings: []
|
|
445
|
+
};
|
|
446
|
+
};
|
|
447
|
+
|
|
336
448
|
// src/coze-language-model.ts
|
|
337
449
|
var CozeLanguageModel = class {
|
|
338
450
|
specificationVersion = "v2";
|
|
@@ -346,8 +458,23 @@ var CozeLanguageModel = class {
|
|
|
346
458
|
this.supportedUrls = config.supportedUrls?.() || {};
|
|
347
459
|
this.config = config;
|
|
348
460
|
}
|
|
349
|
-
|
|
350
|
-
|
|
461
|
+
// @not-support
|
|
462
|
+
// coze 目前不支持非流式接口,为了兼容接口规范,仍然实现了 doGenerate 方法
|
|
463
|
+
async doGenerate(options) {
|
|
464
|
+
return BuildWarningGenerateResult(
|
|
465
|
+
"Coze provider does not support non-streaming calls, please use streaming interface"
|
|
466
|
+
);
|
|
467
|
+
const botIdFromProvider = options.providerOptions?.bot?.botId;
|
|
468
|
+
if (!botIdFromProvider) {
|
|
469
|
+
return BuildWarningGenerateResult("bot id missing in provider options");
|
|
470
|
+
}
|
|
471
|
+
const response = await createCozeNonStreamingChat(
|
|
472
|
+
botIdFromProvider,
|
|
473
|
+
options,
|
|
474
|
+
this.config
|
|
475
|
+
);
|
|
476
|
+
const result = await BuildGenerateResultByChatRes(response, this.config);
|
|
477
|
+
return result;
|
|
351
478
|
}
|
|
352
479
|
isVisibleMsgPart(evtData) {
|
|
353
480
|
if (evtData.type === "knowledge" && evtData.role === "assistant") {
|
|
@@ -379,7 +506,6 @@ var CozeLanguageModel = class {
|
|
|
379
506
|
stream: true,
|
|
380
507
|
additional_messages: messages
|
|
381
508
|
};
|
|
382
|
-
console.log("Request body for Coze API:", JSON.stringify(body));
|
|
383
509
|
if (customVar) {
|
|
384
510
|
body.custom_var = customVar;
|
|
385
511
|
}
|
|
@@ -1659,6 +1785,9 @@ var RebuilderMap = {
|
|
|
1659
1785
|
dept: rebuildDept,
|
|
1660
1786
|
sn: rebuildSn,
|
|
1661
1787
|
deptgroup: rebuildDeptGroup,
|
|
1788
|
+
flowState: defaultBuilder,
|
|
1789
|
+
flowstate: defaultBuilder,
|
|
1790
|
+
formula: defaultBuilder,
|
|
1662
1791
|
unknown: defaultBuilder
|
|
1663
1792
|
};
|
|
1664
1793
|
var rebuildFieldsJsonStructure = (truncatedJson, subItemsOnly = false) => {
|
|
@@ -1677,6 +1806,7 @@ var rebuildFieldsJsonStructure = (truncatedJson, subItemsOnly = false) => {
|
|
|
1677
1806
|
var createFieldsJsonTransformStream = (enableJsonParser) => {
|
|
1678
1807
|
let parser;
|
|
1679
1808
|
let id;
|
|
1809
|
+
let isFirstChunk = true;
|
|
1680
1810
|
const chunkGuard = (chunk) => {
|
|
1681
1811
|
if (!enableJsonParser) {
|
|
1682
1812
|
return false;
|
|
@@ -1702,12 +1832,21 @@ var createFieldsJsonTransformStream = (enableJsonParser) => {
|
|
|
1702
1832
|
if (chunkGuard(chunk)) {
|
|
1703
1833
|
if ("id" in chunk && "delta" in chunk) {
|
|
1704
1834
|
id = chunk.id;
|
|
1705
|
-
|
|
1835
|
+
let delta = chunk.delta;
|
|
1836
|
+
if (isFirstChunk) {
|
|
1837
|
+
delta = delta.replace(/^\uFEFF/, "");
|
|
1838
|
+
isFirstChunk = false;
|
|
1839
|
+
}
|
|
1840
|
+
parser.write(delta);
|
|
1841
|
+
} else {
|
|
1842
|
+
console.warn("Unexpected chunk format for JSON parsing:", chunk);
|
|
1843
|
+
controller.enqueue(chunk);
|
|
1706
1844
|
}
|
|
1707
1845
|
} else {
|
|
1708
1846
|
controller.enqueue(chunk);
|
|
1709
1847
|
}
|
|
1710
1848
|
} catch (e) {
|
|
1849
|
+
console.log("write or enqueue error", e);
|
|
1711
1850
|
controller.error(e);
|
|
1712
1851
|
}
|
|
1713
1852
|
},
|
|
@@ -1734,6 +1873,7 @@ var createFieldsJsonTransformStream = (enableJsonParser) => {
|
|
|
1734
1873
|
let errorLogged = false;
|
|
1735
1874
|
parser.onError = (err) => {
|
|
1736
1875
|
if (!errorLogged) {
|
|
1876
|
+
console.log("is enabled", enableJsonParser);
|
|
1737
1877
|
console.error("JsonWidgetStream: JSON Parsing Error:", err);
|
|
1738
1878
|
errorLogged = true;
|
|
1739
1879
|
}
|