diff --git a/ui/litellm-dashboard/src/components/add_model/add_auto_router_tab.test.tsx b/ui/litellm-dashboard/src/components/add_model/add_auto_router_tab.test.tsx index 4713f8c6869..1e58437c878 100644 --- a/ui/litellm-dashboard/src/components/add_model/add_auto_router_tab.test.tsx +++ b/ui/litellm-dashboard/src/components/add_model/add_auto_router_tab.test.tsx @@ -10,7 +10,7 @@ vi.mock("../networking", () => ({ })); vi.mock("@/components/llm_calls/fetch_models", () => ({ - fetchAvailableModels: vi.fn().mockResolvedValue([]), + fetchAvailableModels: vi.fn().mockResolvedValue([{ model_group: "gpt-4o", mode: "chat" }]), })); vi.mock("./handle_add_auto_router_submit", () => ({ @@ -37,4 +37,20 @@ describe("AddAutoRouterTab", () => { expect(screen.getAllByText("This tier is required")).toHaveLength(4); expect(NotificationManager.fromBackend).toHaveBeenCalledWith("Please enter an Auto Router Name"); }); + + it("blocks the semantic router submit until an embedding model is selected", async () => { + const user = userEvent.setup(); + renderWithProviders(); + + await user.click(screen.getByRole("radio", { name: /semantic router/i })); + await user.type(screen.getByPlaceholderText(/smart_router/i), "sem_router"); + + const defaultModelSelect = await screen.findByRole("combobox", { name: /default model/i }); + await user.click(defaultModelSelect); + await user.click(await screen.findByTitle("gpt-4o")); + + await user.click(screen.getByRole("button", { name: /add auto router/i })); + + expect(NotificationManager.fromBackend).toHaveBeenCalledWith("Please select an Embedding Model"); + }); }); diff --git a/ui/litellm-dashboard/src/components/add_model/add_auto_router_tab.tsx b/ui/litellm-dashboard/src/components/add_model/add_auto_router_tab.tsx index a74eab0abdd..f199542b65a 100644 --- a/ui/litellm-dashboard/src/components/add_model/add_auto_router_tab.tsx +++ b/ui/litellm-dashboard/src/components/add_model/add_auto_router_tab.tsx @@ -157,6 +157,11 @@ const AddAutoRouterTab: React.FC = ({ form, handleOk, acc return; } + if (!form.getFieldValue("auto_router_embedding_model")) { + NotificationManager.fromBackend("Please select an Embedding Model"); + return; + } + if (!routerConfig || !routerConfig.routes || routerConfig.routes.length === 0) { NotificationManager.fromBackend("Please configure at least one route for the auto router"); return; @@ -346,18 +351,18 @@ const AddAutoRouterTab: React.FC = ({ form, handleOk, acc