From 2dc11316f2135d850bfbfcccf96ee67ef5372446 Mon Sep 17 00:00:00 2001 From: Ishaan Jaffer Date: Sat, 4 Oct 2025 11:50:30 -0700 Subject: [PATCH 1/2] fix failing deepseek-ai/DeepSeek-V3.1 --- litellm/model_prices_and_context_window_backup.json | 3 ++- model_prices_and_context_window.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/litellm/model_prices_and_context_window_backup.json b/litellm/model_prices_and_context_window_backup.json index 5b862b98a8..72b9c551d7 100644 --- a/litellm/model_prices_and_context_window_backup.json +++ b/litellm/model_prices_and_context_window_backup.json @@ -7023,7 +7023,8 @@ "cache_read_input_token_cost": 2.16e-07, "litellm_provider": "deepinfra", "mode": "chat", - "supports_tool_choice": true + "supports_tool_choice": true, + "supports_reasoning": true }, "deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus": { "max_tokens": 163840, diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 5b862b98a8..72b9c551d7 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -7023,7 +7023,8 @@ "cache_read_input_token_cost": 2.16e-07, "litellm_provider": "deepinfra", "mode": "chat", - "supports_tool_choice": true + "supports_tool_choice": true, + "supports_reasoning": true }, "deepinfra/deepseek-ai/DeepSeek-V3.1-Terminus": { "max_tokens": 163840, From 06d50b55d75cb31bbf08591396f9f7b63519bcf3 Mon Sep 17 00:00:00 2001 From: = Date: Sat, 4 Oct 2025 12:13:18 -0700 Subject: [PATCH 2/2] fixes surrounding selection state on model info update --- ui/litellm-dashboard/src/app/page.tsx | 2 +- .../{chat_ui.tsx => chat_ui/ChatUI.tsx} | 70 ++++++++++--------- 2 files changed, 38 insertions(+), 34 deletions(-) rename ui/litellm-dashboard/src/components/{chat_ui.tsx => chat_ui/ChatUI.tsx} (96%) diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx index c2479aa175..0503e5c608 100644 --- a/ui/litellm-dashboard/src/app/page.tsx +++ b/ui/litellm-dashboard/src/app/page.tsx @@ -22,7 +22,7 @@ import SpendLogsTable from "@/components/view_logs" import ModelHubTable from "@/components/model_hub_table" import NewUsagePage from "@/components/new_usage" import APIRef from "@/components/api_ref" -import ChatUI from "@/components/chat_ui" +import ChatUI from "@/components/chat_ui/ChatUI" import Sidebar from "@/components/leftnav" import Usage from "@/components/usage" import CacheDashboard from "@/components/cache_dashboard" diff --git a/ui/litellm-dashboard/src/components/chat_ui.tsx b/ui/litellm-dashboard/src/components/chat_ui/ChatUI.tsx similarity index 96% rename from ui/litellm-dashboard/src/components/chat_ui.tsx rename to ui/litellm-dashboard/src/components/chat_ui/ChatUI.tsx index 6504576578..1eb5f58c14 100644 --- a/ui/litellm-dashboard/src/components/chat_ui.tsx +++ b/ui/litellm-dashboard/src/components/chat_ui/ChatUI.tsx @@ -25,34 +25,34 @@ import { import { v4 as uuidv4 } from 'uuid'; import { message, Select, Spin, Typography, Tooltip, Input, Upload, Modal, Button } from "antd"; -import { makeOpenAIChatCompletionRequest } from "./chat_ui/llm_calls/chat_completion"; -import { makeOpenAIImageGenerationRequest } from "./chat_ui/llm_calls/image_generation"; -import { makeOpenAIImageEditsRequest } from "./chat_ui/llm_calls/image_edits"; -import { makeOpenAIResponsesRequest } from "./chat_ui/llm_calls/responses_api"; -import { makeAnthropicMessagesRequest } from "./chat_ui/llm_calls/anthropic_messages"; -import { fetchAvailableModels, ModelGroup } from "./chat_ui/llm_calls/fetch_models"; -import { fetchAvailableMCPTools } from "./chat_ui/llm_calls/fetch_mcp_tools"; -import type { MCPTool } from "./chat_ui/llm_calls/fetch_mcp_tools"; -import { litellmModeMapping, ModelMode, EndpointType, getEndpointType } from "./chat_ui/mode_endpoint_mapping"; +import { makeOpenAIChatCompletionRequest } from "./llm_calls/chat_completion"; +import { makeOpenAIImageGenerationRequest } from "./llm_calls/image_generation"; +import { makeOpenAIImageEditsRequest } from "./llm_calls/image_edits"; +import { makeOpenAIResponsesRequest } from "./llm_calls/responses_api"; +import { makeAnthropicMessagesRequest } from "./llm_calls/anthropic_messages"; +import { fetchAvailableModels, ModelGroup } from "./llm_calls/fetch_models"; +import { fetchAvailableMCPTools } from "./llm_calls/fetch_mcp_tools"; +import type { MCPTool } from "./llm_calls/fetch_mcp_tools"; +import { litellmModeMapping, ModelMode, EndpointType, getEndpointType } from "./mode_endpoint_mapping"; import { Prism as SyntaxHighlighter } from "react-syntax-highlighter"; import { coy } from 'react-syntax-highlighter/dist/esm/styles/prism'; -import EndpointSelector from "./chat_ui/EndpointSelector"; -import TagSelector from "./tag_management/TagSelector"; -import VectorStoreSelector from "./vector_store_management/VectorStoreSelector"; -import GuardrailSelector from "./guardrails/GuardrailSelector"; -import { determineEndpointType } from "./chat_ui/EndpointUtils"; -import { generateCodeSnippet } from "./chat_ui/CodeSnippets"; -import { MessageType } from "./chat_ui/types"; -import ReasoningContent from "./chat_ui/ReasoningContent"; -import ResponseMetrics, { TokenUsage } from "./chat_ui/ResponseMetrics"; -import ResponsesImageUpload from "./chat_ui/ResponsesImageUpload"; -import ResponsesImageRenderer from "./chat_ui/ResponsesImageRenderer"; -import { convertImageToBase64, createMultimodalMessage, createDisplayMessage } from "./chat_ui/ResponsesImageUtils"; -import ChatImageUpload from "./chat_ui/ChatImageUpload"; -import ChatImageRenderer from "./chat_ui/ChatImageRenderer"; -import { createChatMultimodalMessage, createChatDisplayMessage } from "./chat_ui/ChatImageUtils"; -import SessionManagement from "./chat_ui/SessionManagement"; -import MCPEventsDisplay, { MCPEvent } from "./chat_ui/MCPEventsDisplay"; +import EndpointSelector from "./EndpointSelector"; +import TagSelector from "../tag_management/TagSelector"; +import VectorStoreSelector from "../vector_store_management/VectorStoreSelector"; +import GuardrailSelector from "../guardrails/GuardrailSelector"; +import { determineEndpointType } from "./EndpointUtils"; +import { generateCodeSnippet } from "./CodeSnippets"; +import { MessageType } from "./types"; +import ReasoningContent from "./ReasoningContent"; +import ResponseMetrics, { TokenUsage } from "./ResponseMetrics"; +import ResponsesImageUpload from "./ResponsesImageUpload"; +import ResponsesImageRenderer from "./ResponsesImageRenderer"; +import { convertImageToBase64, createMultimodalMessage, createDisplayMessage } from "./ResponsesImageUtils"; +import ChatImageUpload from "./ChatImageUpload"; +import ChatImageRenderer from "./ChatImageRenderer"; +import { createChatMultimodalMessage, createChatDisplayMessage } from "./ChatImageUtils"; +import SessionManagement from "./SessionManagement"; +import MCPEventsDisplay, { MCPEvent } from "./MCPEventsDisplay"; import { SendOutlined, ApiOutlined, @@ -73,7 +73,7 @@ import { FilePdfOutlined, ArrowUpOutlined } from "@ant-design/icons"; -import NotificationsManager from "./molecules/notifications_manager"; +import NotificationsManager from "../molecules/notifications_manager"; const { TextArea } = Input; const { Dragger } = Upload; @@ -282,13 +282,17 @@ const ChatUI: React.FC = ({ ); console.log("Fetched models:", uniqueModels); - - if (uniqueModels.length > 0) { - setModelInfo(uniqueModels); - if (!selectedModel) { - setSelectedModel(uniqueModels[0].model_group); - } + + setModelInfo(uniqueModels); + + // check for selection overlap or empty model list + const hasSelection = uniqueModels.some(m => m.model_group === selectedModel); + if (!uniqueModels.length) { + setSelectedModel(undefined); + } else if (!hasSelection) { + setSelectedModel(uniqueModels[0].model_group); } + } catch (error) { console.error("Error fetching model info:", error); }