From 23dc8b5dad2e479fec621c7a90208ec9add74dab Mon Sep 17 00:00:00 2001 From: pablodanswer Date: Tue, 3 Dec 2024 10:56:27 -0800 Subject: [PATCH] Search flow improvements (#3314) * untoggle if no docs * update * nits * nit * typing * nit --- web/src/app/chat/ChatPage.tsx | 19 ++++++++++++++----- web/src/app/chat/lib.tsx | 4 ++-- web/src/lib/search/interfaces.ts | 4 ---- web/src/lib/search/streamingQa.ts | 5 ++--- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/web/src/app/chat/ChatPage.tsx b/web/src/app/chat/ChatPage.tsx index e433ad2ea7..8d59402e3c 100644 --- a/web/src/app/chat/ChatPage.tsx +++ b/web/src/app/chat/ChatPage.tsx @@ -70,7 +70,7 @@ import { StarterMessages } from "../../components/assistants/StarterMessage"; import { AnswerPiecePacket, DanswerDocument, - FinalContextDocs, + DocumentInfoPacket, StreamStopInfo, StreamStopReason, } from "@/lib/search/interfaces"; @@ -109,6 +109,7 @@ import AssistantBanner from "../../components/assistants/AssistantBanner"; import TextView from "@/components/chat_search/TextView"; import AssistantSelector from "@/components/chat_search/AssistantSelector"; import { Modal } from "@/components/Modal"; +import { createPostponedAbortSignal } from "next/dist/server/app-render/dynamic-rendering"; const TEMP_USER_MESSAGE_ID = -1; const TEMP_ASSISTANT_MESSAGE_ID = -2; @@ -921,7 +922,6 @@ export function ChatPage({ setHasPerformedInitialScroll(true); }, 100); } else { - console.log("All messages are already rendered, scrolling immediately"); // If all messages are already rendered, scroll immediately endDivRef.current.scrollIntoView({ behavior: fast ? "auto" : "smooth", @@ -974,6 +974,16 @@ export function ChatPage({ } }; + useEffect(() => { + if ( + (!selectedDocuments || selectedDocuments.length === 0) && + documentSidebarToggled && + !filtersToggled + ) { + setDocumentSidebarToggled(false); + } + }, [selectedDocuments, filtersToggled]); + useEffect(() => { adjustDocumentSidebarWidth(); // Adjust the width on initial render window.addEventListener("resize", adjustDocumentSidebarWidth); // Add resize event listener @@ -1252,7 +1262,6 @@ export function ChatPage({ if (!packet) { continue; } - if (!initialFetchDetails) { if (!Object.hasOwn(packet, "user_message_id")) { console.error( @@ -1326,8 +1335,8 @@ export function ChatPage({ if (Object.hasOwn(packet, "answer_piece")) { answer += (packet as AnswerPiecePacket).answer_piece; - } else if (Object.hasOwn(packet, "final_context_docs")) { - documents = (packet as FinalContextDocs).final_context_docs; + } else if (Object.hasOwn(packet, "top_documents")) { + documents = (packet as DocumentInfoPacket).top_documents; retrievalType = RetrievalType.Search; if (documents && documents.length > 0) { // point to the latest message (we don't know the messageId yet, which is why diff --git a/web/src/app/chat/lib.tsx b/web/src/app/chat/lib.tsx index 195e0df9bf..2be44379ed 100644 --- a/web/src/app/chat/lib.tsx +++ b/web/src/app/chat/lib.tsx @@ -2,7 +2,7 @@ import { AnswerPiecePacket, DanswerDocument, Filters, - FinalContextDocs, + DocumentInfoPacket, StreamStopInfo, } from "@/lib/search/interfaces"; import { handleSSEStream } from "@/lib/search/streamingUtils"; @@ -103,7 +103,7 @@ export type PacketType = | ToolCallMetadata | BackendMessage | AnswerPiecePacket - | FinalContextDocs + | DocumentInfoPacket | DocumentsResponse | FileChatDisplay | StreamingError diff --git a/web/src/lib/search/interfaces.ts b/web/src/lib/search/interfaces.ts index 9f5c5f2639..92492662c8 100644 --- a/web/src/lib/search/interfaces.ts +++ b/web/src/lib/search/interfaces.ts @@ -19,10 +19,6 @@ export interface AnswerPiecePacket { answer_piece: string; } -export interface FinalContextDocs { - final_context_docs: DanswerDocument[]; -} - export enum StreamStopReason { CONTEXT_LENGTH = "CONTEXT_LENGTH", CANCELLED = "CANCELLED", diff --git a/web/src/lib/search/streamingQa.ts b/web/src/lib/search/streamingQa.ts index c2a197a629..b0e4888b11 100644 --- a/web/src/lib/search/streamingQa.ts +++ b/web/src/lib/search/streamingQa.ts @@ -5,9 +5,8 @@ import { import { AnswerPiecePacket, DanswerDocument, - DocumentInfoPacket, ErrorMessagePacket, - FinalContextDocs, + DocumentInfoPacket, Quote, QuotesInfoPacket, RelevanceChunk, @@ -92,7 +91,7 @@ export const searchRequestStreamed = async ({ | DocumentInfoPacket | LLMRelevanceFilterPacket | BackendMessage - | FinalContextDocs + | DocumentInfoPacket | RelevanceChunk >(decoder.decode(value, { stream: true }), previousPartialChunk); if (!completedChunks.length && !partialChunk) {