@baishuyun/coze-provider 0.0.15 → 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.
@@ -1,23 +1,22 @@
1
-
2
- 
3
- > @baishuyun/coze-provider@0.0.8 build /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider
4
- > tsup --tsconfig tsconfig.json --clean
5
-
6
- CLI Building entry: src/index.ts
7
- CLI Using tsconfig: tsconfig.json
8
- CLI tsup v8.5.1
9
- CLI Using tsup config: /Users/bbbottle/Code/bs-chat-sdk/packages/coze-provider/tsup.config.ts
10
- CLI Target: es2022
11
- CLI Cleaning output folder
12
- CJS Build start
13
- ESM Build start
14
- CJS dist/index.js 46.81 KB
15
- CJS dist/index.js.map 86.03 KB
16
- CJS ⚡️ Build success in 32ms
17
- ESM dist/index.mjs 44.72 KB
18
- ESM dist/index.mjs.map 85.63 KB
19
- ESM ⚡️ Build success in 32ms
20
- DTS Build start
21
- DTS ⚡️ Build success in 1097ms
22
- DTS dist/index.d.ts 1.57 KB
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
@@ -1,5 +1,17 @@
1
1
  # @baishuyun/coze-provider
2
2
 
3
+ ## 0.0.17
4
+
5
+ ### Patch Changes
6
+
7
+ - update style and bug fix
8
+
9
+ ## 0.0.16
10
+
11
+ ### Patch Changes
12
+
13
+ - update sdk style
14
+
3
15
  ## 0.0.15
4
16
 
5
17
  ### Patch Changes
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
- doGenerate(options) {
383
- throw new Error("Method not implemented.");
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") {
@@ -407,20 +534,22 @@ var CozeLanguageModel = class {
407
534
  const body = {
408
535
  bot_id: this.config.botId,
409
536
  auto_save_history: false,
410
- user_id,
537
+ user_id: "7543191937730215936",
538
+ // user_id,
411
539
  stream: true,
412
540
  additional_messages: messages
413
541
  };
414
- console.log("Request body for Coze API:", JSON.stringify(body));
415
542
  if (customVar) {
416
543
  body.custom_var = customVar;
417
544
  }
418
545
  const headers = this.config.headers();
546
+ const abortSignal = options.abortSignal;
419
547
  const response = await fetch(url, {
420
548
  method: "POST",
421
549
  headers,
422
550
  credentials: "include",
423
- body: JSON.stringify(body)
551
+ body: JSON.stringify(body),
552
+ signal: abortSignal
424
553
  });
425
554
  if (!response.ok || !response.body) {
426
555
  const rawError = await response.text();
@@ -1689,6 +1818,9 @@ var RebuilderMap = {
1689
1818
  dept: rebuildDept,
1690
1819
  sn: rebuildSn,
1691
1820
  deptgroup: rebuildDeptGroup,
1821
+ flowState: defaultBuilder,
1822
+ flowstate: defaultBuilder,
1823
+ formula: defaultBuilder,
1692
1824
  unknown: defaultBuilder
1693
1825
  };
1694
1826
  var rebuildFieldsJsonStructure = (truncatedJson, subItemsOnly = false) => {
@@ -1707,6 +1839,7 @@ var rebuildFieldsJsonStructure = (truncatedJson, subItemsOnly = false) => {
1707
1839
  var createFieldsJsonTransformStream = (enableJsonParser) => {
1708
1840
  let parser;
1709
1841
  let id;
1842
+ let isFirstChunk = true;
1710
1843
  const chunkGuard = (chunk) => {
1711
1844
  if (!enableJsonParser) {
1712
1845
  return false;
@@ -1732,12 +1865,21 @@ var createFieldsJsonTransformStream = (enableJsonParser) => {
1732
1865
  if (chunkGuard(chunk)) {
1733
1866
  if ("id" in chunk && "delta" in chunk) {
1734
1867
  id = chunk.id;
1735
- parser.write(chunk.delta);
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);
1736
1877
  }
1737
1878
  } else {
1738
1879
  controller.enqueue(chunk);
1739
1880
  }
1740
1881
  } catch (e) {
1882
+ console.log("write or enqueue error", e);
1741
1883
  controller.error(e);
1742
1884
  }
1743
1885
  },
@@ -1764,6 +1906,7 @@ var createFieldsJsonTransformStream = (enableJsonParser) => {
1764
1906
  let errorLogged = false;
1765
1907
  parser.onError = (err) => {
1766
1908
  if (!errorLogged) {
1909
+ console.log("is enabled", enableJsonParser);
1767
1910
  console.error("JsonWidgetStream: JSON Parsing Error:", err);
1768
1911
  errorLogged = true;
1769
1912
  }