diff --git a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/panels/AddModelPanel.integration.test.tsx b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/panels/AddModelPanel.integration.test.tsx index 9f9f9668760..05560c9e7cd 100644 --- a/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/panels/AddModelPanel.integration.test.tsx +++ b/ui/litellm-dashboard/src/app/(dashboard)/models-and-endpoints/panels/AddModelPanel.integration.test.tsx @@ -563,14 +563,6 @@ describe("AddModelPanel decision models", () => { const decisionNotice = () => screen.queryByRole("note", { name: "Decision model notice" }); - it("finds a provider by the name of one of its decision models", async () => { - const { user } = await setup(); - await user.type(screen.getByRole("combobox", { name: /provider/i }), "jev"); - - expect(await screen.findByRole("option", { name: /TypeSafe/ })).toBeInTheDocument(); - expect(screen.queryByRole("option", { name: /Anthropic/ })).not.toBeInTheDocument(); - }); - it("points a decision-only provider at the decision routes, the docs, and the playground", async () => { const { user } = await setup(); await user.type(screen.getByRole("combobox", { name: /provider/i }), "TypeSafe"); diff --git a/ui/litellm-dashboard/src/components/add_model/AddModelForm.tsx b/ui/litellm-dashboard/src/components/add_model/AddModelForm.tsx index e8b7ca62c3d..2a93b642d6e 100644 --- a/ui/litellm-dashboard/src/components/add_model/AddModelForm.tsx +++ b/ui/litellm-dashboard/src/components/add_model/AddModelForm.tsx @@ -39,7 +39,7 @@ import ProviderSpecificFields from "./provider_specific_fields"; import { authTypesFor } from "./provider_auth_types"; import { TEST_MODES } from "./add_model_modes"; import DecisionModelNote from "./DecisionModelNote"; -import { decisionModelsSublabel, type DecisionCatalog } from "@/lib/decisionModels"; +import { type DecisionCatalog } from "@/lib/decisionModels"; import useAuthorized from "@/app/(dashboard)/hooks/useAuthorized"; import { credentialsKeys } from "@/app/(dashboard)/hooks/credentials/useCredentials"; import { extractProxyErrorMessage } from "@/lib/http/client"; @@ -173,10 +173,9 @@ const AddModelForm: React.FC = ({ sortedProviderMetadata.map((providerInfo) => ({ label: providerInfo.provider_display_name, value: providerInfo.provider, - sublabel: decisionModelsSublabel(decisionCatalog, providerInfo.litellm_provider), icon: , })), - [sortedProviderMetadata, decisionCatalog], + [sortedProviderMetadata], ); const pickedLitellmProvider = sortedProviderMetadata.find( diff --git a/ui/litellm-dashboard/src/lib/decisionModels.test.ts b/ui/litellm-dashboard/src/lib/decisionModels.test.ts index c0f3842993c..0876d88b261 100644 --- a/ui/litellm-dashboard/src/lib/decisionModels.test.ts +++ b/ui/litellm-dashboard/src/lib/decisionModels.test.ts @@ -1,11 +1,5 @@ import { describe, expect, it } from "vitest"; -import { - EMPTY_DECISION_CATALOG, - buildDecisionCatalog, - decisionModelsSublabel, - isDecisionMode, - isDecisionSelection, -} from "./decisionModels"; +import { EMPTY_DECISION_CATALOG, buildDecisionCatalog, isDecisionMode, isDecisionSelection } from "./decisionModels"; const COST_MAP = { "typesafe/jev-latest": { litellm_provider: "typesafe", mode: "evaluation" }, @@ -46,12 +40,6 @@ describe("buildDecisionCatalog", () => { ); }); - it("strips the provider prefix from the names shown per provider", () => { - expect(catalog.providers.get("typesafe")?.names).toEqual(["jev-latest", "jev-preview"]); - expect(catalog.providers.get("perplexity")?.names).toEqual(["pplx-decider-v1-27b"]); - expect(catalog.providers.get("openai")?.names).toEqual(["gpt-6-luna"]); - }); - it("marks a provider decision-only when every one of its models is a decision model", () => { expect(catalog.providers.get("typesafe")?.decisionOnly).toBe(true); expect(catalog.providers.get("somevendor")?.decisionOnly).toBe(true); @@ -70,18 +58,6 @@ describe("buildDecisionCatalog", () => { }); }); -describe("decisionModelsSublabel", () => { - const catalog = buildDecisionCatalog(COST_MAP); - - it("lists the provider's decision models", () => { - expect(decisionModelsSublabel(catalog, "typesafe")).toBe("Decision models: jev-latest, jev-preview"); - }); - - it("is undefined for a provider with no decision models", () => { - expect(decisionModelsSublabel(catalog, "anthropic")).toBeUndefined(); - }); -}); - describe("isDecisionSelection", () => { const catalog = buildDecisionCatalog(COST_MAP); diff --git a/ui/litellm-dashboard/src/lib/decisionModels.ts b/ui/litellm-dashboard/src/lib/decisionModels.ts index 635d005b2df..51de8d62ace 100644 --- a/ui/litellm-dashboard/src/lib/decisionModels.ts +++ b/ui/litellm-dashboard/src/lib/decisionModels.ts @@ -15,7 +15,6 @@ const costMapEntrySchema = z.object({ type CostMapEntry = z.infer; interface ProviderDecisionModels { - readonly names: readonly string[]; readonly decisionOnly: boolean; } @@ -31,9 +30,6 @@ export const isDecisionMode = (mode: string | null | undefined): boolean => mode const isDecisionEntry = (entry: CostMapEntry): boolean => isDecisionMode(entry.mode) || (entry.supported_endpoints ?? []).some((endpoint) => DECISION_ENDPOINTS.has(endpoint)); -const withoutProviderPrefix = (key: string, provider: string): string => - key.startsWith(`${provider}/`) ? key.slice(provider.length + 1) : key; - const parsedEntries = (costMap: unknown): ReadonlyArray => { const record = z.record(z.string(), z.unknown()).safeParse(costMap); if (!record.success) { @@ -52,20 +48,12 @@ export function buildDecisionCatalog(costMap: unknown): DecisionCatalog { const providers = new Map( [...decisionProviders].map((provider) => { const providerEntries = entries.filter(([, entry]) => entry.litellm_provider === provider); - const names = decisionEntries - .filter(([, entry]) => entry.litellm_provider === provider) - .map(([key]) => withoutProviderPrefix(key, provider)); - return [provider, { names, decisionOnly: providerEntries.every(([, entry]) => isDecisionEntry(entry)) }] as const; + return [provider, { decisionOnly: providerEntries.every(([, entry]) => isDecisionEntry(entry)) }] as const; }), ); return { models: new Set(decisionEntries.map(([key]) => key)), providers }; } -export const decisionModelsSublabel = (catalog: DecisionCatalog, litellmProvider: string): string | undefined => { - const names = catalog.providers.get(litellmProvider)?.names ?? []; - return names.length > 0 ? `Decision models: ${names.join(", ")}` : undefined; -}; - export const isDecisionSelection = ( catalog: DecisionCatalog, litellmProvider: string | undefined,