From 84f4205b56961cd1d681f8d54da1ecb1b24564ca Mon Sep 17 00:00:00 2001 From: n4ze3m Date: Sat, 3 Feb 2024 00:33:31 +0530 Subject: [PATCH] Add chat mode functionality to EmptySidePanel component --- src/components/Sidepanel/Chat/empty.tsx | 40 ++++++++++++++++++++++++- src/hooks/useMessage.tsx | 20 ++++++++----- src/libs/get-html.ts | 11 +++++-- src/store/index.tsx | 6 +++- 4 files changed, 65 insertions(+), 12 deletions(-) diff --git a/src/components/Sidepanel/Chat/empty.tsx b/src/components/Sidepanel/Chat/empty.tsx index 7573cad..6f7b2b2 100644 --- a/src/components/Sidepanel/Chat/empty.tsx +++ b/src/components/Sidepanel/Chat/empty.tsx @@ -36,7 +36,8 @@ export const EmptySidePanel = () => { } }, [ollamaInfo]) - const { setSelectedModel, selectedModel } = useMessage() + const { setSelectedModel, selectedModel, chatMode, setChatMode } = + useMessage() return (
@@ -107,6 +108,43 @@ export const EmptySidePanel = () => { ))} + +
+
+ + +
+
)} diff --git a/src/hooks/useMessage.tsx b/src/hooks/useMessage.tsx index 380bf73..beb76cc 100644 --- a/src/hooks/useMessage.tsx +++ b/src/hooks/useMessage.tsx @@ -72,7 +72,9 @@ export const useMessage = () => { isProcessing, setIsProcessing, selectedModel, - setSelectedModel + setSelectedModel, + chatMode, + setChatMode } = useStoreMessage() const abortControllerRef = React.useRef(null) @@ -89,7 +91,7 @@ export const useMessage = () => { setIsFirstMessage(true) } - const voyEmbedding = async ( + const memoryEmbedding = async ( url: string, html: string, ollamaEmbedding: OllamaEmbeddings @@ -155,7 +157,7 @@ export const useMessage = () => { if (isAlreadyExistEmbedding) { vectorstore = isAlreadyExistEmbedding } else { - vectorstore = await voyEmbedding(url, html, ollamaEmbedding) + vectorstore = await memoryEmbedding(url, html, ollamaEmbedding) } const questionPrompt = @@ -173,8 +175,6 @@ export const useMessage = () => { retriever: vectorstore.asRetriever() }) - - try { const chunks = await chain.stream({ question: sanitizedQuestion @@ -336,7 +336,11 @@ export const useMessage = () => { } const onSubmit = async (message: string) => { - await chatWithWebsiteMode(message) + if (chatMode === "normal") { + await normalChatMode(message) + } else { + await chatWithWebsiteMode(message) + } } const stopStreamingRequest = () => { @@ -362,6 +366,8 @@ export const useMessage = () => { stopStreamingRequest, clearChat, selectedModel, - setSelectedModel + setSelectedModel, + chatMode, + setChatMode } } diff --git a/src/libs/get-html.ts b/src/libs/get-html.ts index 699352a..4ced3ff 100644 --- a/src/libs/get-html.ts +++ b/src/libs/get-html.ts @@ -1,7 +1,12 @@ const _getHtml = () => { - const url = window.location.href - const html = document.documentElement.outerHTML - return { url, html } + const url = window.location.href + const html = Array.from(document.querySelectorAll("script")).reduce( + (acc, script) => { + return acc.replace(script.outerHTML, "") + }, + document.documentElement.outerHTML + ) + return { url, html } } export const getHtmlOfCurrentTab = async () => { diff --git a/src/store/index.tsx b/src/store/index.tsx index f0596e9..4569357 100644 --- a/src/store/index.tsx +++ b/src/store/index.tsx @@ -29,6 +29,8 @@ type State = { setIsProcessing: (isProcessing: boolean) => void selectedModel: string | null setSelectedModel: (selectedModel: string) => void + chatMode: "normal" | "rag" + setChatMode: (chatMode: "normal" | "rag") => void } export const useStoreMessage = create((set) => ({ @@ -48,5 +50,7 @@ export const useStoreMessage = create((set) => ({ setIsProcessing: (isProcessing) => set({ isProcessing }), defaultSpeechToTextLanguage: "en-US", selectedModel: null, - setSelectedModel: (selectedModel) => set({ selectedModel }) + setSelectedModel: (selectedModel) => set({ selectedModel }), + chatMode: "normal", + setChatMode: (chatMode) => set({ chatMode }), }))