Fix issue where a message that errors out creates a bad state

This commit is contained in:
Weves
2023-12-17 22:53:41 -08:00
committed by Chris Weaver
parent edfc849652
commit 677c32ea79
3 changed files with 20 additions and 7 deletions

View File

@@ -18,6 +18,7 @@ import {
createChatSession, createChatSession,
getCitedDocumentsFromMessage, getCitedDocumentsFromMessage,
getHumanAndAIMessageFromMessageNumber, getHumanAndAIMessageFromMessageNumber,
getLastSuccessfulMessageId,
handleAutoScroll, handleAutoScroll,
handleChatFeedback, handleChatFeedback,
nameChatSession, nameChatSession,
@@ -205,12 +206,11 @@ export const Chat = ({
let error: string | null = null; let error: string | null = null;
let finalMessage: BackendMessage | null = null; let finalMessage: BackendMessage | null = null;
try { try {
const lastSuccessfulMessageId =
getLastSuccessfulMessageId(currMessageHistory);
for await (const packetBunch of sendMessage({ for await (const packetBunch of sendMessage({
message: currMessage, message: currMessage,
parentMessageId: parentMessageId: lastSuccessfulMessageId,
currMessageHistory.length > 0
? currMessageHistory[currMessageHistory.length - 1].messageId
: null,
chatSessionId: currChatSessionId, chatSessionId: currChatSessionId,
// if search-only set prompt to null to tell backend to not give an answer // if search-only set prompt to null to tell backend to not give an answer
promptId: promptId:

View File

@@ -266,3 +266,16 @@ export function groupSessionsByDateRange(chatSessions: ChatSession[]) {
return groups; 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;
}

View File

@@ -34,9 +34,9 @@ export const searchRequestStreamed = async ({
const filters = buildFilters(sources, documentSets, timeRange); const filters = buildFilters(sources, documentSets, timeRange);
const threadMessage = { const threadMessage = {
message: query, message: query,
sender: null, sender: null,
role: "user" role: "user",
}; };
const response = await fetch("/api/query/stream-answer-with-quote", { const response = await fetch("/api/query/stream-answer-with-quote", {