diff --git a/web/src/app/chat/ChatPage.tsx b/web/src/app/chat/ChatPage.tsx index 70bb46058..083f36ebf 100644 --- a/web/src/app/chat/ChatPage.tsx +++ b/web/src/app/chat/ChatPage.tsx @@ -111,10 +111,8 @@ export function ChatPage({ const selectedChatSession = chatSessions.find( (chatSession) => chatSession.id === existingChatSessionId ); - const chatSessionIdRef = useRef(existingChatSessionId); - // LLM - const llmOverrideManager = useLlmOverride(selectedChatSession); + const chatSessionIdRef = useRef(existingChatSessionId); // Assistants const filteredAssistants = orderAssistantsForUser(availableAssistants, user); @@ -136,6 +134,25 @@ export function ChatPage({ ) : undefined ); + + // Gather default temperature settings + const search_param_temperature = searchParams.get( + SEARCH_PARAM_NAMES.TEMPERATURE + ); + const defaultTemperature = search_param_temperature + ? parseFloat(search_param_temperature) + : selectedAssistant?.tools.some( + (tool) => + tool.in_code_tool_id === "SearchTool" || + tool.in_code_tool_id === "InternetSearchTool" + ) + ? 0 + : 0.7; + const llmOverrideManager = useLlmOverride( + selectedChatSession, + defaultTemperature + ); + const setSelectedAssistantFromId = (assistantId: number) => { // NOTE: also intentionally look through available assistants here, so that // even if the user has hidden an assistant they can still go back to it @@ -764,10 +781,7 @@ export function ChatPage({ llmOverrideManager.llmOverride.modelName || searchParams.get(SEARCH_PARAM_NAMES.MODEL_VERSION) || undefined, - temperature: - llmOverrideManager.temperature || - parseFloat(searchParams.get(SEARCH_PARAM_NAMES.TEMPERATURE) || "") || - undefined, + temperature: llmOverrideManager.temperature || undefined, systemPromptOverride: searchParams.get(SEARCH_PARAM_NAMES.SYSTEM_PROMPT) || undefined, useExistingUserMessage: isSeededChat, diff --git a/web/src/lib/hooks.ts b/web/src/lib/hooks.ts index ac00e6f95..cb4645d11 100644 --- a/web/src/lib/hooks.ts +++ b/web/src/lib/hooks.ts @@ -6,7 +6,7 @@ import { } from "@/lib/types"; import useSWR, { mutate, useSWRConfig } from "swr"; import { errorHandlingFetcher } from "./fetcher"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import { DateRangePickerValue } from "@tremor/react"; import { SourceMetadata } from "./search/interfaces"; import { destructureValue } from "./llm/utils"; @@ -143,7 +143,8 @@ export interface LlmOverrideManager { } export function useLlmOverride( - currentChatSession?: ChatSession + currentChatSession?: ChatSession, + defaultTemperature?: number ): LlmOverrideManager { const [llmOverride, setLlmOverride] = useState( currentChatSession && currentChatSession.current_alternate_model @@ -167,7 +168,13 @@ export function useLlmOverride( ); }; - const [temperature, setTemperature] = useState(null); + const [temperature, setTemperature] = useState( + defaultTemperature != undefined ? defaultTemperature : 0 + ); + + useEffect(() => { + setTemperature(defaultTemperature !== undefined ? defaultTemperature : 0); + }, [defaultTemperature]); return { updateModelOverrideForChatSession,