From 677c32ea793fcb1593f0439babab187207e03187 Mon Sep 17 00:00:00 2001 From: Weves Date: Sun, 17 Dec 2023 22:53:41 -0800 Subject: [PATCH] Fix issue where a message that errors out creates a bad state --- web/src/app/chat/Chat.tsx | 8 ++++---- web/src/app/chat/lib.tsx | 13 +++++++++++++ web/src/lib/search/streamingQa.ts | 6 +++--- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/web/src/app/chat/Chat.tsx b/web/src/app/chat/Chat.tsx index 26a656298..6420ff473 100644 --- a/web/src/app/chat/Chat.tsx +++ b/web/src/app/chat/Chat.tsx @@ -18,6 +18,7 @@ import { createChatSession, getCitedDocumentsFromMessage, getHumanAndAIMessageFromMessageNumber, + getLastSuccessfulMessageId, handleAutoScroll, handleChatFeedback, nameChatSession, @@ -205,12 +206,11 @@ export const Chat = ({ let error: string | null = null; let finalMessage: BackendMessage | null = null; try { + const lastSuccessfulMessageId = + getLastSuccessfulMessageId(currMessageHistory); for await (const packetBunch of sendMessage({ message: currMessage, - parentMessageId: - currMessageHistory.length > 0 - ? currMessageHistory[currMessageHistory.length - 1].messageId - : null, + parentMessageId: lastSuccessfulMessageId, chatSessionId: currChatSessionId, // if search-only set prompt to null to tell backend to not give an answer promptId: diff --git a/web/src/app/chat/lib.tsx b/web/src/app/chat/lib.tsx index 44f914cd1..849f58a4f 100644 --- a/web/src/app/chat/lib.tsx +++ b/web/src/app/chat/lib.tsx @@ -266,3 +266,16 @@ export function groupSessionsByDateRange(chatSessions: ChatSession[]) { return groups; } + +export function getLastSuccessfulMessageId(messageHistory: Message[]) { + const lastSuccessfulMessage = messageHistory + .slice() + .reverse() + .find( + (message) => + message.type === "assistant" && + message.messageId !== -1 && + message.messageId !== null + ); + return lastSuccessfulMessage ? lastSuccessfulMessage?.messageId : null; +} diff --git a/web/src/lib/search/streamingQa.ts b/web/src/lib/search/streamingQa.ts index f51a22652..836a036d1 100644 --- a/web/src/lib/search/streamingQa.ts +++ b/web/src/lib/search/streamingQa.ts @@ -34,9 +34,9 @@ export const searchRequestStreamed = async ({ const filters = buildFilters(sources, documentSets, timeRange); const threadMessage = { - message: query, - sender: null, - role: "user" + message: query, + sender: null, + role: "user", }; const response = await fetch("/api/query/stream-answer-with-quote", {