Fix summary size issue
This commit is contained in:
parent
18e10b38d1
commit
7f29f87ca6
|
@ -233,6 +233,10 @@
|
|||
}
|
||||
focusInput()
|
||||
|
||||
chatRequest.updating = true
|
||||
chatRequest.updatingMessage = ''
|
||||
|
||||
try {
|
||||
const response = await chatRequest.sendRequest(chat.messages, {
|
||||
chat,
|
||||
autoAddMessages: true, // Auto-add and update messages in array
|
||||
|
@ -247,6 +251,13 @@
|
|||
if (message) {
|
||||
ttsStart(message.content, recorded)
|
||||
}
|
||||
} catch (e) {
|
||||
console.error(e)
|
||||
}
|
||||
|
||||
chatRequest.updating = false
|
||||
chatRequest.updatingMessage = ''
|
||||
|
||||
focusInput()
|
||||
}
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
import { getRequestSettingList, defaultModel } from './Settings.svelte'
|
||||
import { EventStreamContentType, fetchEventSource } from '@microsoft/fetch-event-source'
|
||||
import { getApiBase, getEndpointCompletions } from './ApiUtil.svelte'
|
||||
import { v4 as uuidv4 } from 'uuid'
|
||||
|
||||
export class ChatRequest {
|
||||
constructor () {
|
||||
|
@ -302,16 +303,18 @@ export class ChatRequest {
|
|||
const getSS = ():number => (ss < 1 && ss > 0)
|
||||
? Math.round(reductionPoolSize * ss) // If summarySize between 0 and 1, use percentage of reduced
|
||||
: Math.min(ss, reductionPoolSize * 0.5) // If > 1, use token count
|
||||
let promptSummary = prepareSummaryPrompt(chatId, reductionPoolSize)
|
||||
let maxSummaryTokens = getSS()
|
||||
let promptSummary = prepareSummaryPrompt(chatId, maxSummaryTokens)
|
||||
const summaryRequest = { role: 'user', content: promptSummary } as Message
|
||||
let promptSummarySize = countMessageTokens(summaryRequest, model)
|
||||
// Make sure there is enough room to generate the summary, and try to make sure
|
||||
// the last prompt is a user prompt as that seems to work better for summaries
|
||||
while ((reductionPoolSize + promptSummarySize + getSS()) >= maxTokens ||
|
||||
while ((reductionPoolSize + promptSummarySize + maxSummaryTokens) >= maxTokens ||
|
||||
(reductionPoolSize >= 100 && rw[rw.length - 1]?.role !== 'user')) {
|
||||
bottom.unshift(rw.pop() as Message)
|
||||
reductionPoolSize = countPromptTokens(rw, model)
|
||||
promptSummary = prepareSummaryPrompt(chatId, reductionPoolSize)
|
||||
maxSummaryTokens = getSS()
|
||||
promptSummary = prepareSummaryPrompt(chatId, maxSummaryTokens)
|
||||
summaryRequest.content = promptSummary
|
||||
promptSummarySize = countMessageTokens(summaryRequest, model)
|
||||
}
|
||||
|
@ -321,13 +324,15 @@ export class ChatRequest {
|
|||
}
|
||||
|
||||
// Create a message the summary will be loaded into
|
||||
const summaryResponse = {
|
||||
const srid = uuidv4()
|
||||
const summaryResponse:Message = {
|
||||
role: 'assistant',
|
||||
content: '',
|
||||
uuid: srid,
|
||||
streaming: opts.streaming,
|
||||
summary: [] as string[],
|
||||
model
|
||||
} as Message
|
||||
}
|
||||
|
||||
// Insert summary completion prompt after that last message we're summarizing
|
||||
insertMessages(chatId, rw[rw.length - 1], [summaryResponse])
|
||||
|
@ -335,10 +340,11 @@ export class ChatRequest {
|
|||
|
||||
// Request and load the summarization prompt
|
||||
_this.updatingMessage = 'Summarizing...'
|
||||
try {
|
||||
const summary = await _this.sendRequest(top.concat(rw).concat([summaryRequest]), {
|
||||
summaryRequest: true,
|
||||
streaming: opts.streaming,
|
||||
maxTokens: chatSettings.summarySize,
|
||||
maxTokens: maxSummaryTokens,
|
||||
fillMessage: summaryResponse,
|
||||
autoAddMessages: true,
|
||||
onMessageChange: (m) => {
|
||||
|
@ -374,6 +380,12 @@ export class ChatRequest {
|
|||
didSummary: true
|
||||
})
|
||||
}
|
||||
} catch (e) {
|
||||
_this.updating = false
|
||||
_this.updatingMessage = ''
|
||||
deleteMessage(chatId, srid)
|
||||
throw e
|
||||
}
|
||||
} else {
|
||||
/***************
|
||||
* Unknown mode.
|
||||
|
|
Loading…
Reference in New Issue