From 143eb7d547351b28520e646826c22e335d950f22 Mon Sep 17 00:00:00 2001 From: ElishaKay Date: Fri, 1 Nov 2024 03:15:15 +0000 Subject: [PATCH 1/5] pulling nextjs chat settings from config --- backend/chat/chat.py | 32 ++++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/backend/chat/chat.py b/backend/chat/chat.py index a1be8e936..49c0cf739 100644 --- a/backend/chat/chat.py +++ b/backend/chat/chat.py @@ -28,20 +28,36 @@ def __init__( def create_agent(self): """Create React Agent Graph""" - #If not vector store, split and talk to the report - llm_provider_name = getattr(self.config, "llm_provider") - fast_llm_model = getattr(self.config, "fast_llm_model") - temperature = getattr(self.config, "temperature") - fast_token_limit = getattr(self.config, "fast_token_limit") + cfg = Config() - provider = get_llm(llm_provider_name, model=fast_llm_model, temperature=temperature, max_tokens=fast_token_limit, **self.config.llm_kwargs).llm + # Retrieve LLM using get_llm with settings from config + provider = get_llm( + llm_provider=cfg.smart_llm_provider, + model=cfg.smart_llm_model, + temperature=0.35, + max_tokens=cfg.smart_token_limit, + **self.config.llm_kwargs + ).llm + + # If vector_store is not initialized, process documents and add to vector_store if not self.vector_store: documents = self._process_document(self.report) self.chat_config = {"configurable": {"thread_id": str(uuid.uuid4())}} - self.embedding = Memory(getattr(self.config, 'embedding_provider', None), self.headers).get_embeddings() + self.embedding = Memory( + cfg.embedding_provider, + cfg.embedding_model, + **cfg.embedding_kwargs + ).get_embeddings() self.vector_store = InMemoryVectorStore(self.embedding) self.vector_store.add_texts(documents) - graph = create_react_agent(provider, tools=[self.vector_store_tool(self.vector_store)], checkpointer=MemorySaver()) + + # Create the React Agent Graph with the configured provider + graph = create_react_agent( + provider, + tools=[self.vector_store_tool(self.vector_store)], + checkpointer=MemorySaver() + ) + return graph def vector_store_tool(self, vector_store) -> Tool: From ad71a773d155cd95bd2ed99064eea2e45acb5d65 Mon Sep 17 00:00:00 2001 From: ElishaKay Date: Fri, 1 Nov 2024 04:34:14 +0000 Subject: [PATCH 2/5] input box auto-expands its height to encourage longer prompts --- frontend/nextjs/app/globals.css | 4 ++ frontend/nextjs/components/InputArea.tsx | 47 +++++++++++++++++++++--- 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/frontend/nextjs/app/globals.css b/frontend/nextjs/app/globals.css index b8cec3521..8e180aa1b 100644 --- a/frontend/nextjs/app/globals.css +++ b/frontend/nextjs/app/globals.css @@ -12,6 +12,10 @@ html { scroll-behavior: smooth; } +textarea { + transition: height 0.2s ease-in-out; +} + .log-message { word-wrap: break-word; /* For handling long URLs or text */ overflow-wrap: break-word; /* For handling overflow in modern browsers */ diff --git a/frontend/nextjs/components/InputArea.tsx b/frontend/nextjs/components/InputArea.tsx index 4168132f4..0e47441f4 100644 --- a/frontend/nextjs/components/InputArea.tsx +++ b/frontend/nextjs/components/InputArea.tsx @@ -1,6 +1,7 @@ import Image from "next/image"; import { FC } from "react"; import TypeAnimation from "./TypeAnimation"; +import { useRef } from "react"; type TInputAreaProps = { promptValue: string; @@ -20,13 +21,40 @@ const InputArea: FC = ({ reset, }) => { const placeholder = handleSecondary ? "Follow up questions..." : "What would you like to research next?" + + const textareaRef = useRef(null); + + const resetHeight = () => { + if (textareaRef.current) { + textareaRef.current.style.setProperty('height', '3em', 'important'); + } + }; + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'Enter') { + if (e.shiftKey) { + // Allow new line on Shift+Enter + return; + } else { + // Submit form on Enter + e.preventDefault(); + if (!disabled) { + if (reset) reset(); + handleSubmit(promptValue); + resetHeight() + } + } + } + }; + return (
{ e.preventDefault(); if (reset) reset(); handleSubmit(promptValue); + resetHeight(); }} > { @@ -40,6 +68,7 @@ const InputArea: FC = ({ e.preventDefault(); if (reset) reset(); handleSecondary(promptValue); + resetHeight() } } } @@ -60,14 +89,22 @@ const InputArea: FC = ({ /> } - setPromptValue(e.target.value)} + rows={2} + onKeyDown={handleKeyDown} + onChange={(e) => { + // Auto-adjust height + e.target.style.height = `${e.target.scrollHeight}px`; + setPromptValue(e.target.value); + }} />