Add network error retry to summarization

This commit is contained in:
Webifi 2023-06-17 11:55:15 -05:00
parent 3ab605983d
commit 4fd3303e9b
1 changed files with 31 additions and 24 deletions

View File

@ -3,7 +3,7 @@
import { mergeProfileFields, prepareSummaryPrompt } from './Profiles.svelte' import { mergeProfileFields, prepareSummaryPrompt } from './Profiles.svelte'
import { countMessageTokens, countPromptTokens, getModelMaxTokens } from './Stats.svelte' import { countMessageTokens, countPromptTokens, getModelMaxTokens } from './Stats.svelte'
import type { Chat, ChatCompletionOpts, ChatSettings, Message, Model, Request, RequestImageGeneration } from './Types.svelte' import type { Chat, ChatCompletionOpts, ChatSettings, Message, Model, Request, RequestImageGeneration } from './Types.svelte'
import { deleteMessage, getChatSettingValueNullDefault, insertMessages, getApiKey, addError, currentChatMessages, getMessages, updateMessages } from './Storage.svelte' import { deleteMessage, getChatSettingValueNullDefault, insertMessages, getApiKey, addError, currentChatMessages, getMessages, updateMessages, deleteSummaryMessage } from './Storage.svelte'
import { scrollToBottom, scrollToMessage } from './Util.svelte' import { scrollToBottom, scrollToMessage } from './Util.svelte'
import { getRequestSettingList, defaultModel } from './Settings.svelte' import { getRequestSettingList, defaultModel } from './Settings.svelte'
import { EventStreamContentType, fetchEventSource } from '@microsoft/fetch-event-source' import { EventStreamContentType, fetchEventSource } from '@microsoft/fetch-event-source'
@ -418,7 +418,9 @@ export class ChatRequest {
const summarizedIds = rw.map(m => m.uuid) const summarizedIds = rw.map(m => m.uuid)
const summaryIds = [summaryResponse.uuid] const summaryIds = [summaryResponse.uuid]
let loopCount = 0 let loopCount = 0
let networkRetry = 2 // number of retries on network error
while (continueCounter-- > 0) { while (continueCounter-- > 0) {
let error = false
try { try {
const summary = await _this.sendRequest(top.concat(rw).concat([summaryRequest]).concat(loopCount > 0 ? [summaryResponse] : []), { const summary = await _this.sendRequest(top.concat(rw).concat([summaryRequest]).concat(loopCount > 0 ? [summaryResponse] : []), {
summaryRequest: true, summaryRequest: true,
@ -445,10 +447,21 @@ export class ChatRequest {
deleteMessage(chatId, srid) deleteMessage(chatId, srid)
return summary return summary
} }
} catch (e) {
if (e.message?.includes('network error') && networkRetry > 0) {
networkRetry--
error = true
} else {
_this.updating = false
_this.updatingMessage = ''
deleteSummaryMessage(chatId, srid)
throw e
}
}
// Looks like we got our summarized messages. // Looks like we got our summarized messages.
// Mark the new summaries as such // Mark the new summaries as such
// Need more? // Need more?
if (summaryResponse.finish_reason === 'length' && continueCounter > 0) { if ((error || summaryResponse.finish_reason === 'length') && continueCounter > 0) {
// Our summary was truncated // Our summary was truncated
// Try to get more of it // Try to get more of it
delete summaryResponse.finish_reason delete summaryResponse.finish_reason
@ -464,12 +477,6 @@ export class ChatRequest {
// We're done // We're done
continueCounter = 0 continueCounter = 0
} }
} catch (e) {
_this.updating = false
_this.updatingMessage = ''
deleteMessage(chatId, srid)
throw e
}
} }
summaryResponse.summary = summarizedIds summaryResponse.summary = summarizedIds
// Disable the messages we summarized so they still show in history // Disable the messages we summarized so they still show in history