@chatluna/v1-shared-adapter 1.0.35 → 1.0.36
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/lib/index.cjs +18 -9
- package/lib/index.mjs +18 -9
- package/lib/requester.d.ts +1 -1
- package/lib/utils.d.ts +2 -2
- package/package.json +2 -2
package/lib/index.cjs
CHANGED
|
@@ -517,6 +517,9 @@ function processInterleavedThinkMessages(convertedMessages, originalMessages) {
|
|
|
517
517
|
if (originalMessages.length === 0) {
|
|
518
518
|
return convertedMessages;
|
|
519
519
|
}
|
|
520
|
+
const hasToolCallRound = convertedMessages.some(
|
|
521
|
+
(message) => message.role === "assistant" && (message.tool_calls?.length ?? 0) > 0
|
|
522
|
+
);
|
|
520
523
|
let lastTurnStartIndex = -1;
|
|
521
524
|
for (let i = originalMessages.length - 1; i >= 0; i--) {
|
|
522
525
|
const message = originalMessages[i];
|
|
@@ -538,10 +541,10 @@ function processInterleavedThinkMessages(convertedMessages, originalMessages) {
|
|
|
538
541
|
lastTurnStartIndex = 0;
|
|
539
542
|
}
|
|
540
543
|
return convertedMessages.map((message, index) => {
|
|
541
|
-
if (index >= lastTurnStartIndex) {
|
|
544
|
+
if (hasToolCallRound || index >= lastTurnStartIndex) {
|
|
542
545
|
const originalMessage = originalMessages[index];
|
|
543
546
|
const reasoningContent = originalMessage?.additional_kwargs?.reasoning_content;
|
|
544
|
-
if (reasoningContent) {
|
|
547
|
+
if (reasoningContent != null) {
|
|
545
548
|
return {
|
|
546
549
|
...message,
|
|
547
550
|
reasoning_content: reasoningContent
|
|
@@ -732,10 +735,10 @@ function removeAdditionalProperties(schema) {
|
|
|
732
735
|
__name(removeAdditionalProperties, "removeAdditionalProperties");
|
|
733
736
|
function convertMessageToMessageChunk(message) {
|
|
734
737
|
const content = message.content ?? "";
|
|
735
|
-
const reasoningContent = message.reasoning_content
|
|
738
|
+
const reasoningContent = message.reasoning_content;
|
|
736
739
|
const role = ((message.role?.length ?? 0) > 0 ? message.role : "assistant").toLowerCase();
|
|
737
740
|
const additionalKwargs = {};
|
|
738
|
-
if (reasoningContent
|
|
741
|
+
if (reasoningContent != null) {
|
|
739
742
|
additionalKwargs.reasoning_content = reasoningContent;
|
|
740
743
|
}
|
|
741
744
|
if (role === "user") {
|
|
@@ -782,7 +785,7 @@ __name(convertMessageToMessageChunk, "convertMessageToMessageChunk");
|
|
|
782
785
|
function convertDeltaToMessageChunk(delta, defaultRole) {
|
|
783
786
|
const role = ((delta.role?.length ?? 0) > 0 ? delta.role : defaultRole).toLowerCase();
|
|
784
787
|
const content = delta.content ?? "";
|
|
785
|
-
const reasoningContent = delta.reasoning_content
|
|
788
|
+
const reasoningContent = delta.reasoning_content;
|
|
786
789
|
let additionalKwargs;
|
|
787
790
|
if (delta.function_call) {
|
|
788
791
|
additionalKwargs = {
|
|
@@ -791,7 +794,7 @@ function convertDeltaToMessageChunk(delta, defaultRole) {
|
|
|
791
794
|
} else {
|
|
792
795
|
additionalKwargs = {};
|
|
793
796
|
}
|
|
794
|
-
if (reasoningContent
|
|
797
|
+
if (reasoningContent != null) {
|
|
795
798
|
additionalKwargs.reasoning_content = reasoningContent;
|
|
796
799
|
}
|
|
797
800
|
if (role === "user") {
|
|
@@ -925,6 +928,7 @@ async function* processStreamResponse(requestContext, iterator) {
|
|
|
925
928
|
let errorCount = 0;
|
|
926
929
|
const reasoningState = {
|
|
927
930
|
content: "",
|
|
931
|
+
seen: false,
|
|
928
932
|
startedAt: Date.now(),
|
|
929
933
|
endedAt: void 0
|
|
930
934
|
};
|
|
@@ -978,8 +982,11 @@ async function* processStreamResponse(requestContext, iterator) {
|
|
|
978
982
|
if (reasoningState.endedAt == null && hasResult) {
|
|
979
983
|
reasoningState.endedAt = Date.now();
|
|
980
984
|
}
|
|
981
|
-
if (
|
|
982
|
-
reasoningState.
|
|
985
|
+
if (Object.hasOwn(delta, "reasoning_content")) {
|
|
986
|
+
reasoningState.seen = true;
|
|
987
|
+
if (reasoningState.endedAt == null && !hasResult && typeof delta.reasoning_content === "string") {
|
|
988
|
+
reasoningState.content += delta.reasoning_content;
|
|
989
|
+
}
|
|
983
990
|
}
|
|
984
991
|
const messageChunk = convertDeltaToMessageChunk(
|
|
985
992
|
{
|
|
@@ -1016,12 +1023,14 @@ async function* processStreamResponse(requestContext, iterator) {
|
|
|
1016
1023
|
errorCount++;
|
|
1017
1024
|
}
|
|
1018
1025
|
}
|
|
1019
|
-
if (reasoningState.content.length > 0) {
|
|
1026
|
+
if (reasoningState.seen || reasoningState.content.length > 0) {
|
|
1020
1027
|
const reasoningTime = (reasoningState.endedAt ?? Date.now()) - reasoningState.startedAt;
|
|
1021
1028
|
yield new import_outputs.ChatGenerationChunk({
|
|
1022
1029
|
message: new import_messages2.AIMessageChunk({
|
|
1023
1030
|
content: "",
|
|
1024
1031
|
additional_kwargs: {
|
|
1032
|
+
// Always emit the field (possibly "") so DeepSeek-V4
|
|
1033
|
+
// thinking mode receives reasoning_content back verbatim.
|
|
1025
1034
|
reasoning_content: reasoningState.content,
|
|
1026
1035
|
...reasoningTime != null ? { reasoning_time: reasoningTime } : {}
|
|
1027
1036
|
}
|
package/lib/index.mjs
CHANGED
|
@@ -464,6 +464,9 @@ function processInterleavedThinkMessages(convertedMessages, originalMessages) {
|
|
|
464
464
|
if (originalMessages.length === 0) {
|
|
465
465
|
return convertedMessages;
|
|
466
466
|
}
|
|
467
|
+
const hasToolCallRound = convertedMessages.some(
|
|
468
|
+
(message) => message.role === "assistant" && (message.tool_calls?.length ?? 0) > 0
|
|
469
|
+
);
|
|
467
470
|
let lastTurnStartIndex = -1;
|
|
468
471
|
for (let i = originalMessages.length - 1; i >= 0; i--) {
|
|
469
472
|
const message = originalMessages[i];
|
|
@@ -485,10 +488,10 @@ function processInterleavedThinkMessages(convertedMessages, originalMessages) {
|
|
|
485
488
|
lastTurnStartIndex = 0;
|
|
486
489
|
}
|
|
487
490
|
return convertedMessages.map((message, index) => {
|
|
488
|
-
if (index >= lastTurnStartIndex) {
|
|
491
|
+
if (hasToolCallRound || index >= lastTurnStartIndex) {
|
|
489
492
|
const originalMessage = originalMessages[index];
|
|
490
493
|
const reasoningContent = originalMessage?.additional_kwargs?.reasoning_content;
|
|
491
|
-
if (reasoningContent) {
|
|
494
|
+
if (reasoningContent != null) {
|
|
492
495
|
return {
|
|
493
496
|
...message,
|
|
494
497
|
reasoning_content: reasoningContent
|
|
@@ -679,10 +682,10 @@ function removeAdditionalProperties(schema) {
|
|
|
679
682
|
__name(removeAdditionalProperties, "removeAdditionalProperties");
|
|
680
683
|
function convertMessageToMessageChunk(message) {
|
|
681
684
|
const content = message.content ?? "";
|
|
682
|
-
const reasoningContent = message.reasoning_content
|
|
685
|
+
const reasoningContent = message.reasoning_content;
|
|
683
686
|
const role = ((message.role?.length ?? 0) > 0 ? message.role : "assistant").toLowerCase();
|
|
684
687
|
const additionalKwargs = {};
|
|
685
|
-
if (reasoningContent
|
|
688
|
+
if (reasoningContent != null) {
|
|
686
689
|
additionalKwargs.reasoning_content = reasoningContent;
|
|
687
690
|
}
|
|
688
691
|
if (role === "user") {
|
|
@@ -729,7 +732,7 @@ __name(convertMessageToMessageChunk, "convertMessageToMessageChunk");
|
|
|
729
732
|
function convertDeltaToMessageChunk(delta, defaultRole) {
|
|
730
733
|
const role = ((delta.role?.length ?? 0) > 0 ? delta.role : defaultRole).toLowerCase();
|
|
731
734
|
const content = delta.content ?? "";
|
|
732
|
-
const reasoningContent = delta.reasoning_content
|
|
735
|
+
const reasoningContent = delta.reasoning_content;
|
|
733
736
|
let additionalKwargs;
|
|
734
737
|
if (delta.function_call) {
|
|
735
738
|
additionalKwargs = {
|
|
@@ -738,7 +741,7 @@ function convertDeltaToMessageChunk(delta, defaultRole) {
|
|
|
738
741
|
} else {
|
|
739
742
|
additionalKwargs = {};
|
|
740
743
|
}
|
|
741
|
-
if (reasoningContent
|
|
744
|
+
if (reasoningContent != null) {
|
|
742
745
|
additionalKwargs.reasoning_content = reasoningContent;
|
|
743
746
|
}
|
|
744
747
|
if (role === "user") {
|
|
@@ -872,6 +875,7 @@ async function* processStreamResponse(requestContext, iterator) {
|
|
|
872
875
|
let errorCount = 0;
|
|
873
876
|
const reasoningState = {
|
|
874
877
|
content: "",
|
|
878
|
+
seen: false,
|
|
875
879
|
startedAt: Date.now(),
|
|
876
880
|
endedAt: void 0
|
|
877
881
|
};
|
|
@@ -925,8 +929,11 @@ async function* processStreamResponse(requestContext, iterator) {
|
|
|
925
929
|
if (reasoningState.endedAt == null && hasResult) {
|
|
926
930
|
reasoningState.endedAt = Date.now();
|
|
927
931
|
}
|
|
928
|
-
if (
|
|
929
|
-
reasoningState.
|
|
932
|
+
if (Object.hasOwn(delta, "reasoning_content")) {
|
|
933
|
+
reasoningState.seen = true;
|
|
934
|
+
if (reasoningState.endedAt == null && !hasResult && typeof delta.reasoning_content === "string") {
|
|
935
|
+
reasoningState.content += delta.reasoning_content;
|
|
936
|
+
}
|
|
930
937
|
}
|
|
931
938
|
const messageChunk = convertDeltaToMessageChunk(
|
|
932
939
|
{
|
|
@@ -963,12 +970,14 @@ async function* processStreamResponse(requestContext, iterator) {
|
|
|
963
970
|
errorCount++;
|
|
964
971
|
}
|
|
965
972
|
}
|
|
966
|
-
if (reasoningState.content.length > 0) {
|
|
973
|
+
if (reasoningState.seen || reasoningState.content.length > 0) {
|
|
967
974
|
const reasoningTime = (reasoningState.endedAt ?? Date.now()) - reasoningState.startedAt;
|
|
968
975
|
yield new ChatGenerationChunk({
|
|
969
976
|
message: new AIMessageChunk2({
|
|
970
977
|
content: "",
|
|
971
978
|
additional_kwargs: {
|
|
979
|
+
// Always emit the field (possibly "") so DeepSeek-V4
|
|
980
|
+
// thinking mode receives reasoning_content back verbatim.
|
|
972
981
|
reasoning_content: reasoningState.content,
|
|
973
982
|
...reasoningTime != null ? { reasoning_time: reasoningTime } : {}
|
|
974
983
|
}
|
package/lib/requester.d.ts
CHANGED
|
@@ -54,7 +54,7 @@ export declare function buildResponseParams(params: ModelRequestParams, plugin:
|
|
|
54
54
|
top_p: number;
|
|
55
55
|
prompt_cache_key: string;
|
|
56
56
|
reasoning: {
|
|
57
|
-
effort: "
|
|
57
|
+
effort: "low" | "high" | "minimal" | "medium" | "max" | "xhigh";
|
|
58
58
|
};
|
|
59
59
|
stream: boolean;
|
|
60
60
|
stream_options: {
|
package/lib/utils.d.ts
CHANGED
|
@@ -71,6 +71,6 @@ export declare function messageTypeToOpenAIRole(type: MessageType): ChatCompleti
|
|
|
71
71
|
export declare function formatToolsToOpenAITools(tools: StructuredTool[], includeGoogleSearch: boolean): ChatCompletionTool[];
|
|
72
72
|
export declare function formatToolToOpenAITool(tool: StructuredTool): ChatCompletionTool;
|
|
73
73
|
export declare function removeAdditionalProperties(schema: JsonSchema7Type): JsonSchema7Type;
|
|
74
|
-
export declare function convertMessageToMessageChunk(message: ChatCompletionResponseMessage):
|
|
75
|
-
export declare function convertDeltaToMessageChunk(delta: Record<string, any>, defaultRole?: ChatCompletionResponseMessageRoleEnum):
|
|
74
|
+
export declare function convertMessageToMessageChunk(message: ChatCompletionResponseMessage): HumanMessageChunk | AIMessageChunk | SystemMessageChunk | FunctionMessageChunk | ToolMessageChunk | ChatMessageChunk;
|
|
75
|
+
export declare function convertDeltaToMessageChunk(delta: Record<string, any>, defaultRole?: ChatCompletionResponseMessageRoleEnum): HumanMessageChunk | AIMessageChunk | SystemMessageChunk | FunctionMessageChunk | ToolMessageChunk | ChatMessageChunk;
|
|
76
76
|
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chatluna/v1-shared-adapter",
|
|
3
3
|
"description": "chatluna shared adapter",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.36",
|
|
5
5
|
"main": "lib/index.cjs",
|
|
6
6
|
"module": "lib/index.mjs",
|
|
7
7
|
"typings": "lib/index.d.ts",
|
|
@@ -70,6 +70,6 @@
|
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"koishi": "^4.18.9",
|
|
73
|
-
"koishi-plugin-chatluna": "^1.4.0-alpha.
|
|
73
|
+
"koishi-plugin-chatluna": "^1.4.0-alpha.13"
|
|
74
74
|
}
|
|
75
75
|
}
|