@gendive/chatllm 0.10.1 → 0.10.2
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/dist/react/index.js +14 -13
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +14 -13
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.js
CHANGED
|
@@ -1030,7 +1030,12 @@ ${finalContent}`;
|
|
|
1030
1030
|
setQuotedText(null);
|
|
1031
1031
|
setSelectedAction(null);
|
|
1032
1032
|
const capturedSessionId = sessionId;
|
|
1033
|
-
const
|
|
1033
|
+
const currentSession2 = sessions.find((s) => s.id === capturedSessionId);
|
|
1034
|
+
const existingMessages = currentSession2?.messages || [];
|
|
1035
|
+
const isFirstMessage = !existingMessages.length;
|
|
1036
|
+
const contextSummary = currentSession2?.compressionState?.contextSummary || currentSession2?.contextSummary;
|
|
1037
|
+
const summaryAfterIndex = currentSession2?.compressionState?.summaryAfterIndex || currentSession2?.summaryAfterIndex || 0;
|
|
1038
|
+
let compressionCount = currentSession2?.compressionState?.compressionCount || 0;
|
|
1034
1039
|
setSessions(
|
|
1035
1040
|
(prev) => prev.map((s) => {
|
|
1036
1041
|
if (s.id === capturedSessionId) {
|
|
@@ -1061,29 +1066,25 @@ ${finalContent}`;
|
|
|
1061
1066
|
setIsLoading(true);
|
|
1062
1067
|
abortControllerRef.current = new AbortController();
|
|
1063
1068
|
try {
|
|
1064
|
-
const session = sessions.find((s) => s.id === capturedSessionId);
|
|
1065
|
-
const existingMessages = session?.messages || [];
|
|
1066
1069
|
let messagesToSend = [...existingMessages, userMessage];
|
|
1067
1070
|
const recompressionThreshold = DEFAULT_RECOMPRESSION_THRESHOLD;
|
|
1068
1071
|
const tokenLimit = DEFAULT_TOKEN_LIMIT;
|
|
1069
|
-
let
|
|
1070
|
-
const summaryAfterIndex = session?.compressionState?.summaryAfterIndex || session?.summaryAfterIndex || 0;
|
|
1071
|
-
let compressionCount = session?.compressionState?.compressionCount || 0;
|
|
1072
|
+
let currentContextSummary = contextSummary;
|
|
1072
1073
|
const newMessageCount = messagesToSend.length - summaryAfterIndex;
|
|
1073
1074
|
const estimatedTokensCount = estimateTokens(messagesToSend);
|
|
1074
|
-
const needsInitialCompression = !
|
|
1075
|
-
const needsRecompression =
|
|
1075
|
+
const needsInitialCompression = !currentContextSummary && messagesToSend.length > contextCompressionThreshold;
|
|
1076
|
+
const needsRecompression = currentContextSummary && (newMessageCount > recompressionThreshold || estimatedTokensCount > tokenLimit * 0.7);
|
|
1076
1077
|
if (needsInitialCompression || needsRecompression) {
|
|
1077
1078
|
const toCompress = messagesToSend.slice(0, -keepRecentMessages);
|
|
1078
1079
|
let summary;
|
|
1079
|
-
if (needsRecompression &&
|
|
1080
|
+
if (needsRecompression && currentContextSummary) {
|
|
1080
1081
|
const newMessages = toCompress.slice(summaryAfterIndex);
|
|
1081
|
-
summary = await incrementalCompressContext(
|
|
1082
|
+
summary = await incrementalCompressContext(currentContextSummary, newMessages, selectedModel);
|
|
1082
1083
|
} else {
|
|
1083
1084
|
summary = await compressContext(toCompress, selectedModel);
|
|
1084
1085
|
}
|
|
1085
1086
|
if (summary) {
|
|
1086
|
-
|
|
1087
|
+
currentContextSummary = summary;
|
|
1087
1088
|
compressionCount += 1;
|
|
1088
1089
|
setSessions(
|
|
1089
1090
|
(prev) => prev.map(
|
|
@@ -1111,11 +1112,11 @@ ${finalContent}`;
|
|
|
1111
1112
|
}
|
|
1112
1113
|
}
|
|
1113
1114
|
let chatMessages;
|
|
1114
|
-
if (
|
|
1115
|
+
if (currentContextSummary) {
|
|
1115
1116
|
const recentMessages = messagesToSend.slice(-keepRecentMessages);
|
|
1116
1117
|
chatMessages = [
|
|
1117
1118
|
{ role: "system", content: `[\uC774\uC804 \uB300\uD654 \uC694\uC57D]
|
|
1118
|
-
${
|
|
1119
|
+
${currentContextSummary}` },
|
|
1119
1120
|
...recentMessages.map((m) => ({ role: m.role, content: m.content }))
|
|
1120
1121
|
];
|
|
1121
1122
|
} else {
|