diff options
Diffstat (limited to 'js/src/session')
| -rw-r--r-- | js/src/session/session.ts | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/js/src/session/session.ts b/js/src/session/session.ts index e773ed297..0de559dbc 100644 --- a/js/src/session/session.ts +++ b/js/src/session/session.ts @@ -149,11 +149,31 @@ export namespace Session { modelID: string; parts: Message.Part[]; }) { - using abort = lock(input.sessionID); const l = log.clone().tag("session", input.sessionID); l.info("chatting"); const model = await LLM.findModel(input.providerID, input.modelID); let msgs = await messages(input.sessionID); + const previous = msgs.at(-1); + if (previous?.metadata.assistant) { + const tokens = + previous.metadata.assistant.tokens.input + + previous.metadata.assistant.tokens.output; + console.log(tokens); + if ( + tokens > + (model.info.contextWindow - (model.info.maxOutputTokens ?? 0)) * 0.9 + ) { + await summarize({ + sessionID: input.sessionID, + providerID: input.providerID, + modelID: input.modelID, + }); + return chat(input); + } + } + + using abort = lock(input.sessionID); + const lastSummary = msgs.findLast( (msg) => msg.metadata.assistant?.summary === true, ); |
