From 044508e07566fab389e549b42fe8d63157488d9b Mon Sep 17 00:00:00 2001 From: azdolinski Date: Wed, 19 Mar 2025 14:37:57 +0000 Subject: [PATCH 1/3] set_local_icons --- .../public/assets/logos/anthropic.svg | 5 + .../public/assets/logos/assemblyai_small.png | Bin 0 -> 414 bytes .../public/assets/logos/aws.svg | 34 +++ .../public/assets/logos/bedrock.svg | 1 + .../public/assets/logos/cerebras.svg | 89 ++++++ .../public/assets/logos/cohere.svg | 1 + .../public/assets/logos/databricks.svg | 1 + .../public/assets/logos/deepseek.svg | 25 ++ .../public/assets/logos/fireworks.svg | 1 + .../public/assets/logos/google.svg | 2 + .../public/assets/logos/groq.svg | 3 + .../public/assets/logos/microsoft_azure.svg | 72 +++++ .../public/assets/logos/mistral.svg | 1 + .../public/assets/logos/ollama.svg | 7 + .../public/assets/logos/openai_small.svg | 5 + .../public/assets/logos/openrouter.svg | 39 +++ .../public/assets/logos/perplexity-ai.svg | 16 + .../public/assets/logos/sambanova.svg | 1 + .../public/assets/logos/togetherai.svg | 14 + .../public/assets/logos/xai.svg | 28 ++ .../src/components/provider_info_helpers.tsx | 289 +++++++++--------- ui/litellm-dashboard/src/global.d.ts | 4 + 22 files changed, 494 insertions(+), 144 deletions(-) create mode 100644 ui/litellm-dashboard/public/assets/logos/anthropic.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/assemblyai_small.png create mode 100644 ui/litellm-dashboard/public/assets/logos/aws.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/bedrock.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/cerebras.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/cohere.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/databricks.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/deepseek.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/fireworks.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/google.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/groq.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/microsoft_azure.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/mistral.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/ollama.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/openai_small.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/openrouter.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/perplexity-ai.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/sambanova.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/togetherai.svg create mode 100644 ui/litellm-dashboard/public/assets/logos/xai.svg create mode 100644 ui/litellm-dashboard/src/global.d.ts diff --git a/ui/litellm-dashboard/public/assets/logos/anthropic.svg b/ui/litellm-dashboard/public/assets/logos/anthropic.svg new file mode 100644 index 0000000000..a37f591fb7 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/anthropic.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/ui/litellm-dashboard/public/assets/logos/assemblyai_small.png b/ui/litellm-dashboard/public/assets/logos/assemblyai_small.png new file mode 100644 index 0000000000000000000000000000000000000000..19eaf1a126d68d642059f7337671322fd0766026 GIT binary patch literal 414 zcmV;P0b%}$P)(sqa8|NsB?_V(uH z=4N=<05H(h+4bq@=0954#?A7_%;qXe)DSw-q^{~RPt`?T)$Hr%kel4=?fT8r^UBZT z($(aFkK0>s*WlshsJC zoq(Gy0PI#fi%)djBRd?Cp4bSUF9;piSb4rWDkK3w$VIf<#iNzz8VhY95@WSXhsW{| zAXqTwWGgQ}_Zf4ru;7@Kd#kKuJ*ZX)U5t^`TN#PyABpR1H~0SWZWnEOA6KxjzMr7_ z-pX{@_c{lJ>>gpIX_&p0NYykpecEl;CA7DYs=j?91ls>6SKl=aQ?UaTn*aa+07*qo IM6N<$g7_BBdH?_b literal 0 HcmV?d00001 diff --git a/ui/litellm-dashboard/public/assets/logos/aws.svg b/ui/litellm-dashboard/public/assets/logos/aws.svg new file mode 100644 index 0000000000..53896fa05f --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/aws.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + diff --git a/ui/litellm-dashboard/public/assets/logos/bedrock.svg b/ui/litellm-dashboard/public/assets/logos/bedrock.svg new file mode 100644 index 0000000000..e0f929a7a9 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/bedrock.svg @@ -0,0 +1 @@ +Bedrock \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/cerebras.svg b/ui/litellm-dashboard/public/assets/logos/cerebras.svg new file mode 100644 index 0000000000..426f6430c2 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/cerebras.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ui/litellm-dashboard/public/assets/logos/cohere.svg b/ui/litellm-dashboard/public/assets/logos/cohere.svg new file mode 100644 index 0000000000..cb1b2a5919 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/cohere.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/databricks.svg b/ui/litellm-dashboard/public/assets/logos/databricks.svg new file mode 100644 index 0000000000..cd079ceb22 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/databricks.svg @@ -0,0 +1 @@ +DBRX \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/deepseek.svg b/ui/litellm-dashboard/public/assets/logos/deepseek.svg new file mode 100644 index 0000000000..c4754047da --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/deepseek.svg @@ -0,0 +1,25 @@ + + + + + + diff --git a/ui/litellm-dashboard/public/assets/logos/fireworks.svg b/ui/litellm-dashboard/public/assets/logos/fireworks.svg new file mode 100644 index 0000000000..a23445cf94 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/fireworks.svg @@ -0,0 +1 @@ +Fireworks \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/google.svg b/ui/litellm-dashboard/public/assets/logos/google.svg new file mode 100644 index 0000000000..7bc4a38ce7 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/google.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/groq.svg b/ui/litellm-dashboard/public/assets/logos/groq.svg new file mode 100644 index 0000000000..550316a7e0 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/groq.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/microsoft_azure.svg b/ui/litellm-dashboard/public/assets/logos/microsoft_azure.svg new file mode 100644 index 0000000000..cd96a7d372 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/microsoft_azure.svg @@ -0,0 +1,72 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/ui/litellm-dashboard/public/assets/logos/mistral.svg b/ui/litellm-dashboard/public/assets/logos/mistral.svg new file mode 100644 index 0000000000..8e03e244bf --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/mistral.svg @@ -0,0 +1 @@ +Mistral \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/ollama.svg b/ui/litellm-dashboard/public/assets/logos/ollama.svg new file mode 100644 index 0000000000..d7780867b5 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/ollama.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/openai_small.svg b/ui/litellm-dashboard/public/assets/logos/openai_small.svg new file mode 100644 index 0000000000..52dad8269e --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/openai_small.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/openrouter.svg b/ui/litellm-dashboard/public/assets/logos/openrouter.svg new file mode 100644 index 0000000000..c9952c11f6 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/openrouter.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/perplexity-ai.svg b/ui/litellm-dashboard/public/assets/logos/perplexity-ai.svg new file mode 100644 index 0000000000..e828b6dfbf --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/perplexity-ai.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/sambanova.svg b/ui/litellm-dashboard/public/assets/logos/sambanova.svg new file mode 100644 index 0000000000..fba90665e2 --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/sambanova.svg @@ -0,0 +1 @@ +SambaNova \ No newline at end of file diff --git a/ui/litellm-dashboard/public/assets/logos/togetherai.svg b/ui/litellm-dashboard/public/assets/logos/togetherai.svg new file mode 100644 index 0000000000..18aa72fc2c --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/togetherai.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/ui/litellm-dashboard/public/assets/logos/xai.svg b/ui/litellm-dashboard/public/assets/logos/xai.svg new file mode 100644 index 0000000000..9491b192fd --- /dev/null +++ b/ui/litellm-dashboard/public/assets/logos/xai.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + diff --git a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx index a0b2a9b30f..4c2fb0e5b4 100644 --- a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx +++ b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx @@ -2,171 +2,172 @@ import OpenAI from "openai"; import React from "react"; export enum Providers { - OpenAI = "OpenAI", - OpenAI_Compatible = "OpenAI-Compatible Endpoints (Together AI, etc.)", - OpenAI_Text = "OpenAI Text Completion", - OpenAI_Text_Compatible = "OpenAI-Compatible Text Completion Models (Together AI, etc.)", - Azure = "Azure", - Azure_AI_Studio = "Azure AI Foundry (Studio)", - Anthropic = "Anthropic", - Vertex_AI = "Vertex AI (Anthropic, Gemini, etc.)", - Google_AI_Studio = "Google AI Studio", - Bedrock = "Amazon Bedrock", - Groq = "Groq", - MistralAI = "Mistral AI", - Deepseek = "Deepseek", - Cohere = "Cohere", - Databricks = "Databricks", - Ollama = "Ollama", - xAI = "xAI", - AssemblyAI = "AssemblyAI", - Cerebras = "Cerebras", - Sambanova = "Sambanova", - Perplexity = "Perplexity", - TogetherAI = "TogetherAI", - Openrouter = "Openrouter", - FireworksAI = "Fireworks AI" + OpenAI = "OpenAI", + OpenAI_Compatible = "OpenAI-Compatible Endpoints (Together AI, etc.)", + OpenAI_Text = "OpenAI Text Completion", + OpenAI_Text_Compatible = "OpenAI-Compatible Text Completion Models (Together AI, etc.)", + Azure = "Azure", + Azure_AI_Studio = "Azure AI Foundry (Studio)", + Anthropic = "Anthropic", + Vertex_AI = "Vertex AI (Anthropic, Gemini, etc.)", + Google_AI_Studio = "Google AI Studio", + Bedrock = "Amazon Bedrock", + Groq = "Groq", + MistralAI = "Mistral AI", + Deepseek = "Deepseek", + Cohere = "Cohere", + Databricks = "Databricks", + Ollama = "Ollama", + xAI = "xAI", + AssemblyAI = "AssemblyAI", + Cerebras = "Cerebras", + Sambanova = "Sambanova", + Perplexity = "Perplexity", + TogetherAI = "TogetherAI", + Openrouter = "Openrouter", + FireworksAI = "Fireworks AI" + +} - } - export const provider_map: Record = { - OpenAI: "openai", - OpenAI_Text: "text-completion-openai", - Azure: "azure", - Azure_AI_Studio: "azure_ai", - Anthropic: "anthropic", - Google_AI_Studio: "gemini", - Bedrock: "bedrock", - Groq: "groq", - MistralAI: "mistral", - Cohere: "cohere_chat", - OpenAI_Compatible: "openai", - OpenAI_Text_Compatible: "text-completion-openai", - Vertex_AI: "vertex_ai", - Databricks: "databricks", - xAI: "xai", - Deepseek: "deepseek", - Ollama: "ollama", - AssemblyAI: "assemblyai", - Cerebras: "cerebras", - Sambanova: "sambanova", - Perplexity: "perplexity", - TogetherAI: "togetherai", - Openrouter: "openrouter", - FireworksAI: "fireworks_ai" + OpenAI: "openai", + OpenAI_Text: "text-completion-openai", + Azure: "azure", + Azure_AI_Studio: "azure_ai", + Anthropic: "anthropic", + Google_AI_Studio: "gemini", + Bedrock: "bedrock", + Groq: "groq", + MistralAI: "mistral", + Cohere: "cohere_chat", + OpenAI_Compatible: "openai", + OpenAI_Text_Compatible: "text-completion-openai", + Vertex_AI: "vertex_ai", + Databricks: "databricks", + xAI: "xai", + Deepseek: "deepseek", + Ollama: "ollama", + AssemblyAI: "assemblyai", + Cerebras: "cerebras", + Sambanova: "sambanova", + Perplexity: "perplexity", + TogetherAI: "togetherai", + Openrouter: "openrouter", + FireworksAI: "fireworks_ai" }; -export const providerLogoMap: Record = { - [Providers.OpenAI]: "https://artificialanalysis.ai/img/logos/openai_small.svg", - [Providers.OpenAI_Text]: "https://artificialanalysis.ai/img/logos/openai_small.svg", - [Providers.OpenAI_Text_Compatible]: "https://artificialanalysis.ai/img/logos/openai_small.svg", - [Providers.OpenAI_Compatible]: "https://artificialanalysis.ai/img/logos/openai_small.svg", - [Providers.Azure]: "https://upload.wikimedia.org/wikipedia/commons/a/a8/Microsoft_Azure_Logo.svg", - [Providers.Azure_AI_Studio]: "https://upload.wikimedia.org/wikipedia/commons/a/a8/Microsoft_Azure_Logo.svg", - [Providers.Anthropic]: "https://artificialanalysis.ai/img/logos/anthropic_small.svg", - [Providers.Google_AI_Studio]: "https://artificialanalysis.ai/img/logos/google_small.svg", - [Providers.Bedrock]: "https://artificialanalysis.ai/img/logos/aws_small.png", - [Providers.Groq]: "https://artificialanalysis.ai/img/logos/groq_small.png", - [Providers.MistralAI]: "https://artificialanalysis.ai/img/logos/mistral_small.png", - [Providers.Cohere]: "https://artificialanalysis.ai/img/logos/cohere_small.png", - [Providers.Vertex_AI]: "https://artificialanalysis.ai/img/logos/google_small.svg", - [Providers.Databricks]: "https://artificialanalysis.ai/img/logos/databricks_small.png", - [Providers.Ollama]: "https://artificialanalysis.ai/img/logos/ollama_small.svg", - [Providers.xAI]: "https://artificialanalysis.ai/img/logos/xai_small.svg", - [Providers.Deepseek]: "https://artificialanalysis.ai/img/logos/deepseek_small.jpg", - [Providers.AssemblyAI]: "https://artificialanalysis.ai/img/logos/assemblyai_small.png", - [Providers.Cerebras]: "https://artificialanalysis.ai/img/logos/cerebras_small.png", - [Providers.Sambanova]: "https://artificialanalysis.ai/img/logos/sambanova_small.webp", - [Providers.Perplexity]: "https://artificialanalysis.ai/img/logos/perplexity_small.png", - [Providers.TogetherAI]: "https://artificialanalysis.ai/img/logos/togetherai_small.svg", - [Providers.Openrouter]: "https://t0.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://openrouter.ai/chat&size=256", - [Providers.FireworksAI]: "https://artificialanalysis.ai/img/logos/fireworks_small_revised.png" +const asset_logos_folder = '/ui/assets/logos/'; +export const providerLogoMap: Record = { + [Providers.Anthropic]: `${asset_logos_folder}anthropic.svg`, + [Providers.AssemblyAI]: `${asset_logos_folder}assemblyai_small.png`, + [Providers.Azure]: `${asset_logos_folder}microsoft_azure.svg`, + [Providers.Azure_AI_Studio]: `${asset_logos_folder}microsoft_azure.svg`, + [Providers.Bedrock]: `${asset_logos_folder}bedrock.svg`, + [Providers.Cerebras]: `${asset_logos_folder}cerebras.svg`, + [Providers.Cohere]: `${asset_logos_folder}cohere.svg`, + [Providers.Databricks]: `${asset_logos_folder}databricks.svg`, + [Providers.Deepseek]: `${asset_logos_folder}deepseek.svg`, + [Providers.FireworksAI]: `${asset_logos_folder}fireworks.svg`, + [Providers.Groq]: `${asset_logos_folder}groq.svg`, + [Providers.Google_AI_Studio]: `${asset_logos_folder}google.svg`, + [Providers.MistralAI]: `${asset_logos_folder}mistral.svg`, + [Providers.Ollama]: `${asset_logos_folder}ollama.svg`, + [Providers.OpenAI]: `${asset_logos_folder}openai_small.svg`, + [Providers.OpenAI_Text]: `${asset_logos_folder}openai_small.svg`, + [Providers.OpenAI_Text_Compatible]: `${asset_logos_folder}openai_small.svg`, + [Providers.OpenAI_Compatible]: `${asset_logos_folder}openai_small.svg`, + [Providers.Openrouter]: `${asset_logos_folder}openrouter.svg`, + [Providers.Perplexity]: `${asset_logos_folder}perplexity-ai.svg`, + [Providers.Sambanova]: `${asset_logos_folder}sambanova.svg`, + [Providers.TogetherAI]: `${asset_logos_folder}togetherai.svg`, + [Providers.Vertex_AI]: `${asset_logos_folder}google.svg`, + [Providers.xAI]: `${asset_logos_folder}xai.svg` }; export const getProviderLogoAndName = (providerValue: string): { logo: string, displayName: string } => { - if (!providerValue) { - return { logo: "", displayName: "-" }; - } - - // Handle special case for "gemini" provider value - if (providerValue.toLowerCase() === "gemini") { - const displayName = Providers.Google_AI_Studio; - const logo = providerLogoMap[displayName]; - return { logo, displayName }; - } - - // Find the enum key by matching provider_map values - const enumKey = Object.keys(provider_map).find( - key => provider_map[key].toLowerCase() === providerValue.toLowerCase() - ); - - if (!enumKey) { - return { logo: "", displayName: providerValue }; - } - - // Get the display name from Providers enum and logo from map - const displayName = Providers[enumKey as keyof typeof Providers]; - const logo = providerLogoMap[displayName as keyof typeof providerLogoMap]; + if (!providerValue) { + return { logo: "", displayName: "-" }; + } + // Handle special case for "gemini" provider value + if (providerValue.toLowerCase() === "gemini") { + const displayName = Providers.Google_AI_Studio; + const logo = providerLogoMap[displayName]; return { logo, displayName }; + } + + // Find the enum key by matching provider_map values + const enumKey = Object.keys(provider_map).find( + key => provider_map[key].toLowerCase() === providerValue.toLowerCase() + ); + + if (!enumKey) { + return { logo: "", displayName: providerValue }; + } + + // Get the display name from Providers enum and logo from map + const displayName = Providers[enumKey as keyof typeof Providers]; + const logo = providerLogoMap[displayName as keyof typeof providerLogoMap]; + + return { logo, displayName }; }; export const getPlaceholder = (selectedProvider: string): string => { - if (selectedProvider === Providers.Vertex_AI) { - return "gemini-pro"; - } else if (selectedProvider == Providers.Anthropic) { - return "claude-3-opus"; - } else if (selectedProvider == Providers.Bedrock) { - return "claude-3-opus"; - } else if (selectedProvider == Providers.Google_AI_Studio) { - return "gemini-pro"; - } else if (selectedProvider == Providers.Azure_AI_Studio) { - return "azure_ai/command-r-plus"; - } else if (selectedProvider == Providers.Azure) { - return "azure/my-deployment"; - } else { - return "gpt-3.5-turbo"; - } - }; + if (selectedProvider === Providers.Vertex_AI) { + return "gemini-pro"; + } else if (selectedProvider == Providers.Anthropic) { + return "claude-3-opus"; + } else if (selectedProvider == Providers.Bedrock) { + return "claude-3-opus"; + } else if (selectedProvider == Providers.Google_AI_Studio) { + return "gemini-pro"; + } else if (selectedProvider == Providers.Azure_AI_Studio) { + return "azure_ai/command-r-plus"; + } else if (selectedProvider == Providers.Azure) { + return "azure/my-deployment"; + } else { + return "gpt-3.5-turbo"; + } +}; - export const getProviderModels = (provider: Providers, modelMap: any): Array => { - let providerKey = provider; - console.log(`Provider key: ${providerKey}`); - let custom_llm_provider = provider_map[providerKey]; - console.log(`Provider mapped to: ${custom_llm_provider}`); - - let providerModels: Array = []; - - if (providerKey && typeof modelMap === "object") { +export const getProviderModels = (provider: Providers, modelMap: any): Array => { + let providerKey = provider; + console.log(`Provider key: ${providerKey}`); + let custom_llm_provider = provider_map[providerKey]; + console.log(`Provider mapped to: ${custom_llm_provider}`); + + let providerModels: Array = []; + + if (providerKey && typeof modelMap === "object") { + Object.entries(modelMap).forEach(([key, value]) => { + if ( + value !== null && + typeof value === "object" && + "litellm_provider" in (value as object) && + ((value as any)["litellm_provider"] === custom_llm_provider || + (value as any)["litellm_provider"].includes(custom_llm_provider)) + ) { + providerModels.push(key); + } + }); + + // Special case for cohere_chat + // we need both cohere_chat and cohere models to show on dropdown + if (providerKey == Providers.Cohere) { + console.log("Adding cohere chat models"); Object.entries(modelMap).forEach(([key, value]) => { if ( value !== null && typeof value === "object" && "litellm_provider" in (value as object) && - ((value as any)["litellm_provider"] === custom_llm_provider || - (value as any)["litellm_provider"].includes(custom_llm_provider)) + ((value as any)["litellm_provider"] === "cohere") ) { providerModels.push(key); } }); - - // Special case for cohere_chat - // we need both cohere_chat and cohere models to show on dropdown - if (providerKey == Providers.Cohere) { - console.log("Adding cohere chat models"); - Object.entries(modelMap).forEach(([key, value]) => { - if ( - value !== null && - typeof value === "object" && - "litellm_provider" in (value as object) && - ((value as any)["litellm_provider"] === "cohere") - ) { - providerModels.push(key); - } - }); - } } - - return providerModels; - }; + } + + return providerModels; +}; diff --git a/ui/litellm-dashboard/src/global.d.ts b/ui/litellm-dashboard/src/global.d.ts new file mode 100644 index 0000000000..cdb2b1a9a2 --- /dev/null +++ b/ui/litellm-dashboard/src/global.d.ts @@ -0,0 +1,4 @@ +declare module '*.svg' { + const content: string; + export default content; +} From 95c762e572db116673641ffc4fc20ad4aa8eba75 Mon Sep 17 00:00:00 2001 From: azdolinski Date: Wed, 19 Mar 2025 14:47:34 +0000 Subject: [PATCH 2/3] sync_latest_changes --- ui/litellm-dashboard/src/components/provider_info_helpers.tsx | 2 +- ui/litellm-dashboard/src/global.d.ts | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) delete mode 100644 ui/litellm-dashboard/src/global.d.ts diff --git a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx index 4c2fb0e5b4..73285d33a5 100644 --- a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx +++ b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx @@ -170,4 +170,4 @@ export const getProviderModels = (provider: Providers, modelMap: any): Array Date: Wed, 19 Mar 2025 22:35:14 +0100 Subject: [PATCH 3/3] remove linter changes to match old code style --- .../src/components/provider_info_helpers.tsx | 286 +++++++++--------- 1 file changed, 143 insertions(+), 143 deletions(-) diff --git a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx index 73285d33a5..c3112db055 100644 --- a/ui/litellm-dashboard/src/components/provider_info_helpers.tsx +++ b/ui/litellm-dashboard/src/components/provider_info_helpers.tsx @@ -2,172 +2,172 @@ import OpenAI from "openai"; import React from "react"; export enum Providers { - OpenAI = "OpenAI", - OpenAI_Compatible = "OpenAI-Compatible Endpoints (Together AI, etc.)", - OpenAI_Text = "OpenAI Text Completion", - OpenAI_Text_Compatible = "OpenAI-Compatible Text Completion Models (Together AI, etc.)", - Azure = "Azure", - Azure_AI_Studio = "Azure AI Foundry (Studio)", - Anthropic = "Anthropic", - Vertex_AI = "Vertex AI (Anthropic, Gemini, etc.)", - Google_AI_Studio = "Google AI Studio", - Bedrock = "Amazon Bedrock", - Groq = "Groq", - MistralAI = "Mistral AI", - Deepseek = "Deepseek", - Cohere = "Cohere", - Databricks = "Databricks", - Ollama = "Ollama", - xAI = "xAI", - AssemblyAI = "AssemblyAI", - Cerebras = "Cerebras", - Sambanova = "Sambanova", - Perplexity = "Perplexity", - TogetherAI = "TogetherAI", - Openrouter = "Openrouter", - FireworksAI = "Fireworks AI" - -} + OpenAI = "OpenAI", + OpenAI_Compatible = "OpenAI-Compatible Endpoints (Together AI, etc.)", + OpenAI_Text = "OpenAI Text Completion", + OpenAI_Text_Compatible = "OpenAI-Compatible Text Completion Models (Together AI, etc.)", + Azure = "Azure", + Azure_AI_Studio = "Azure AI Foundry (Studio)", + Anthropic = "Anthropic", + Vertex_AI = "Vertex AI (Anthropic, Gemini, etc.)", + Google_AI_Studio = "Google AI Studio", + Bedrock = "Amazon Bedrock", + Groq = "Groq", + MistralAI = "Mistral AI", + Deepseek = "Deepseek", + Cohere = "Cohere", + Databricks = "Databricks", + Ollama = "Ollama", + xAI = "xAI", + AssemblyAI = "AssemblyAI", + Cerebras = "Cerebras", + Sambanova = "Sambanova", + Perplexity = "Perplexity", + TogetherAI = "TogetherAI", + Openrouter = "Openrouter", + FireworksAI = "Fireworks AI" + } + export const provider_map: Record = { - OpenAI: "openai", - OpenAI_Text: "text-completion-openai", - Azure: "azure", - Azure_AI_Studio: "azure_ai", - Anthropic: "anthropic", - Google_AI_Studio: "gemini", - Bedrock: "bedrock", - Groq: "groq", - MistralAI: "mistral", - Cohere: "cohere_chat", - OpenAI_Compatible: "openai", - OpenAI_Text_Compatible: "text-completion-openai", - Vertex_AI: "vertex_ai", - Databricks: "databricks", - xAI: "xai", - Deepseek: "deepseek", - Ollama: "ollama", - AssemblyAI: "assemblyai", - Cerebras: "cerebras", - Sambanova: "sambanova", - Perplexity: "perplexity", - TogetherAI: "togetherai", - Openrouter: "openrouter", - FireworksAI: "fireworks_ai" + OpenAI: "openai", + OpenAI_Text: "text-completion-openai", + Azure: "azure", + Azure_AI_Studio: "azure_ai", + Anthropic: "anthropic", + Google_AI_Studio: "gemini", + Bedrock: "bedrock", + Groq: "groq", + MistralAI: "mistral", + Cohere: "cohere_chat", + OpenAI_Compatible: "openai", + OpenAI_Text_Compatible: "text-completion-openai", + Vertex_AI: "vertex_ai", + Databricks: "databricks", + xAI: "xai", + Deepseek: "deepseek", + Ollama: "ollama", + AssemblyAI: "assemblyai", + Cerebras: "cerebras", + Sambanova: "sambanova", + Perplexity: "perplexity", + TogetherAI: "togetherai", + Openrouter: "openrouter", + FireworksAI: "fireworks_ai" }; const asset_logos_folder = '/ui/assets/logos/'; export const providerLogoMap: Record = { - [Providers.Anthropic]: `${asset_logos_folder}anthropic.svg`, - [Providers.AssemblyAI]: `${asset_logos_folder}assemblyai_small.png`, - [Providers.Azure]: `${asset_logos_folder}microsoft_azure.svg`, - [Providers.Azure_AI_Studio]: `${asset_logos_folder}microsoft_azure.svg`, - [Providers.Bedrock]: `${asset_logos_folder}bedrock.svg`, - [Providers.Cerebras]: `${asset_logos_folder}cerebras.svg`, - [Providers.Cohere]: `${asset_logos_folder}cohere.svg`, - [Providers.Databricks]: `${asset_logos_folder}databricks.svg`, - [Providers.Deepseek]: `${asset_logos_folder}deepseek.svg`, - [Providers.FireworksAI]: `${asset_logos_folder}fireworks.svg`, - [Providers.Groq]: `${asset_logos_folder}groq.svg`, - [Providers.Google_AI_Studio]: `${asset_logos_folder}google.svg`, - [Providers.MistralAI]: `${asset_logos_folder}mistral.svg`, - [Providers.Ollama]: `${asset_logos_folder}ollama.svg`, - [Providers.OpenAI]: `${asset_logos_folder}openai_small.svg`, - [Providers.OpenAI_Text]: `${asset_logos_folder}openai_small.svg`, - [Providers.OpenAI_Text_Compatible]: `${asset_logos_folder}openai_small.svg`, - [Providers.OpenAI_Compatible]: `${asset_logos_folder}openai_small.svg`, - [Providers.Openrouter]: `${asset_logos_folder}openrouter.svg`, - [Providers.Perplexity]: `${asset_logos_folder}perplexity-ai.svg`, - [Providers.Sambanova]: `${asset_logos_folder}sambanova.svg`, - [Providers.TogetherAI]: `${asset_logos_folder}togetherai.svg`, - [Providers.Vertex_AI]: `${asset_logos_folder}google.svg`, - [Providers.xAI]: `${asset_logos_folder}xai.svg` + [Providers.Anthropic]: `${asset_logos_folder}anthropic.svg`, + [Providers.AssemblyAI]: `${asset_logos_folder}assemblyai_small.png`, + [Providers.Azure]: `${asset_logos_folder}microsoft_azure.svg`, + [Providers.Azure_AI_Studio]: `${asset_logos_folder}microsoft_azure.svg`, + [Providers.Bedrock]: `${asset_logos_folder}bedrock.svg`, + [Providers.Cerebras]: `${asset_logos_folder}cerebras.svg`, + [Providers.Cohere]: `${asset_logos_folder}cohere.svg`, + [Providers.Databricks]: `${asset_logos_folder}databricks.svg`, + [Providers.Deepseek]: `${asset_logos_folder}deepseek.svg`, + [Providers.FireworksAI]: `${asset_logos_folder}fireworks.svg`, + [Providers.Groq]: `${asset_logos_folder}groq.svg`, + [Providers.Google_AI_Studio]: `${asset_logos_folder}google.svg`, + [Providers.MistralAI]: `${asset_logos_folder}mistral.svg`, + [Providers.Ollama]: `${asset_logos_folder}ollama.svg`, + [Providers.OpenAI]: `${asset_logos_folder}openai_small.svg`, + [Providers.OpenAI_Text]: `${asset_logos_folder}openai_small.svg`, + [Providers.OpenAI_Text_Compatible]: `${asset_logos_folder}openai_small.svg`, + [Providers.OpenAI_Compatible]: `${asset_logos_folder}openai_small.svg`, + [Providers.Openrouter]: `${asset_logos_folder}openrouter.svg`, + [Providers.Perplexity]: `${asset_logos_folder}perplexity-ai.svg`, + [Providers.Sambanova]: `${asset_logos_folder}sambanova.svg`, + [Providers.TogetherAI]: `${asset_logos_folder}togetherai.svg`, + [Providers.Vertex_AI]: `${asset_logos_folder}google.svg`, + [Providers.xAI]: `${asset_logos_folder}xai.svg` }; export const getProviderLogoAndName = (providerValue: string): { logo: string, displayName: string } => { - if (!providerValue) { - return { logo: "", displayName: "-" }; - } + if (!providerValue) { + return { logo: "", displayName: "-" }; + } + + // Handle special case for "gemini" provider value + if (providerValue.toLowerCase() === "gemini") { + const displayName = Providers.Google_AI_Studio; + const logo = providerLogoMap[displayName]; + return { logo, displayName }; + } + + // Find the enum key by matching provider_map values + const enumKey = Object.keys(provider_map).find( + key => provider_map[key].toLowerCase() === providerValue.toLowerCase() + ); + + if (!enumKey) { + return { logo: "", displayName: providerValue }; + } + + // Get the display name from Providers enum and logo from map + const displayName = Providers[enumKey as keyof typeof Providers]; + const logo = providerLogoMap[displayName as keyof typeof providerLogoMap]; - // Handle special case for "gemini" provider value - if (providerValue.toLowerCase() === "gemini") { - const displayName = Providers.Google_AI_Studio; - const logo = providerLogoMap[displayName]; return { logo, displayName }; - } - - // Find the enum key by matching provider_map values - const enumKey = Object.keys(provider_map).find( - key => provider_map[key].toLowerCase() === providerValue.toLowerCase() - ); - - if (!enumKey) { - return { logo: "", displayName: providerValue }; - } - - // Get the display name from Providers enum and logo from map - const displayName = Providers[enumKey as keyof typeof Providers]; - const logo = providerLogoMap[displayName as keyof typeof providerLogoMap]; - - return { logo, displayName }; }; export const getPlaceholder = (selectedProvider: string): string => { - if (selectedProvider === Providers.Vertex_AI) { - return "gemini-pro"; - } else if (selectedProvider == Providers.Anthropic) { - return "claude-3-opus"; - } else if (selectedProvider == Providers.Bedrock) { - return "claude-3-opus"; - } else if (selectedProvider == Providers.Google_AI_Studio) { - return "gemini-pro"; - } else if (selectedProvider == Providers.Azure_AI_Studio) { - return "azure_ai/command-r-plus"; - } else if (selectedProvider == Providers.Azure) { - return "azure/my-deployment"; - } else { - return "gpt-3.5-turbo"; - } -}; + if (selectedProvider === Providers.Vertex_AI) { + return "gemini-pro"; + } else if (selectedProvider == Providers.Anthropic) { + return "claude-3-opus"; + } else if (selectedProvider == Providers.Bedrock) { + return "claude-3-opus"; + } else if (selectedProvider == Providers.Google_AI_Studio) { + return "gemini-pro"; + } else if (selectedProvider == Providers.Azure_AI_Studio) { + return "azure_ai/command-r-plus"; + } else if (selectedProvider == Providers.Azure) { + return "azure/my-deployment"; + } else { + return "gpt-3.5-turbo"; + } + }; -export const getProviderModels = (provider: Providers, modelMap: any): Array => { - let providerKey = provider; - console.log(`Provider key: ${providerKey}`); - let custom_llm_provider = provider_map[providerKey]; - console.log(`Provider mapped to: ${custom_llm_provider}`); - - let providerModels: Array = []; - - if (providerKey && typeof modelMap === "object") { - Object.entries(modelMap).forEach(([key, value]) => { - if ( - value !== null && - typeof value === "object" && - "litellm_provider" in (value as object) && - ((value as any)["litellm_provider"] === custom_llm_provider || - (value as any)["litellm_provider"].includes(custom_llm_provider)) - ) { - providerModels.push(key); - } - }); - - // Special case for cohere_chat - // we need both cohere_chat and cohere models to show on dropdown - if (providerKey == Providers.Cohere) { - console.log("Adding cohere chat models"); + export const getProviderModels = (provider: Providers, modelMap: any): Array => { + let providerKey = provider; + console.log(`Provider key: ${providerKey}`); + let custom_llm_provider = provider_map[providerKey]; + console.log(`Provider mapped to: ${custom_llm_provider}`); + + let providerModels: Array = []; + + if (providerKey && typeof modelMap === "object") { Object.entries(modelMap).forEach(([key, value]) => { if ( value !== null && typeof value === "object" && "litellm_provider" in (value as object) && - ((value as any)["litellm_provider"] === "cohere") + ((value as any)["litellm_provider"] === custom_llm_provider || + (value as any)["litellm_provider"].includes(custom_llm_provider)) ) { providerModels.push(key); } }); + + // Special case for cohere_chat + // we need both cohere_chat and cohere models to show on dropdown + if (providerKey == Providers.Cohere) { + console.log("Adding cohere chat models"); + Object.entries(modelMap).forEach(([key, value]) => { + if ( + value !== null && + typeof value === "object" && + "litellm_provider" in (value as object) && + ((value as any)["litellm_provider"] === "cohere") + ) { + providerModels.push(key); + } + }); + } } - } - - return providerModels; -}; \ No newline at end of file + + return providerModels; + };