diff --git a/litellm/proxy/guardrails/auto_router_compression.py b/litellm/proxy/guardrails/auto_router_compression.py
index 490ce550003..2122d353def 100644
--- a/litellm/proxy/guardrails/auto_router_compression.py
+++ b/litellm/proxy/guardrails/auto_router_compression.py
@@ -93,9 +93,7 @@ def policy_for_model(
)
requested: Final = frozenset(request_tags)
tag_matched: Final = tuple(
- params
- for params in markers
- if (tags := params.get("tags")) and requested.issuperset(frozenset(tags))
+ params for params in markers if (tags := params.get("tags")) and requested.issuperset(frozenset(tags))
)
for params in (*tag_matched, *markers):
policy = policy_from_litellm_params(params)
diff --git a/ui/litellm-dashboard/src/components/add_model/ComplexityRouterConfig.tsx b/ui/litellm-dashboard/src/components/add_model/ComplexityRouterConfig.tsx
index 42115265034..92fd9893995 100644
--- a/ui/litellm-dashboard/src/components/add_model/ComplexityRouterConfig.tsx
+++ b/ui/litellm-dashboard/src/components/add_model/ComplexityRouterConfig.tsx
@@ -1,11 +1,11 @@
import { SimpleTooltip } from "@/components/ui/tooltip";
import { MultiSelect } from "@/components/shared/MultiSelect";
import { SearchSelect } from "@/components/shared/SearchSelect";
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
import { ChevronRight, Info, Plus, Trash2, X } from "lucide-react";
import { Switch } from "@/components/ui/switch";
import { AffinityControls } from "./AffinityControls";
+import TierRowSelect from "./TierRowSelect";
import { ModalityRoutingControls } from "./ModalityRoutingControls";
import { Card, CardContent } from "@/components/ui/card";
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible";
@@ -370,27 +370,6 @@ const TierRowEditFields: React.FC<{
>
);
-const TierRowSelect: React.FC<{
- label: string;
- options: { value: string; label: string }[];
- value: string | null;
- onValueChange: (rowId: string) => void;
- placeholder?: string;
-}> = ({ label, options, value, onValueChange, placeholder }) => (
-
-);
-
export type AdaptiveEligible = "all" | "classified_tier";
export type ComplexityTierLabels = Partial>;
@@ -889,22 +868,7 @@ const ComplexityRouterConfig: React.FC = ({
key: "compression",
label: Advanced: Compression,
children: (
-
- onAutoRouterCompressionChange({
- ...autoRouterCompression,
- routing,
- sameAsRouting: routing === undefined ? true : autoRouterCompression.sameAsRouting,
- })
- }
- sameAsRouting={autoRouterCompression.sameAsRouting}
- onSameAsRoutingChange={(sameAsRouting) =>
- onAutoRouterCompressionChange({ ...autoRouterCompression, sameAsRouting })
- }
- model={autoRouterCompression.model}
- onModelChange={(model) => onAutoRouterCompressionChange({ ...autoRouterCompression, model })}
- />
+
),
},
]
diff --git a/ui/litellm-dashboard/src/components/add_model/CompressionControls.tsx b/ui/litellm-dashboard/src/components/add_model/CompressionControls.tsx
index 52ea7645034..c1817918f60 100644
--- a/ui/litellm-dashboard/src/components/add_model/CompressionControls.tsx
+++ b/ui/litellm-dashboard/src/components/add_model/CompressionControls.tsx
@@ -5,27 +5,26 @@ import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
import { Info } from "lucide-react";
import React from "react";
import { useGuardrails } from "@/app/(dashboard)/hooks/guardrails/useGuardrails";
-import { isCompressionGuardrailProvider, NO_COMPRESSION } from "./buildAutoRouterCompression";
+import {
+ AutoRouterCompressionState,
+ isCompressionGuardrailProvider,
+ NO_COMPRESSION,
+} from "./buildAutoRouterCompression";
interface CompressionControlsProps {
- routing: string | undefined;
- onRoutingChange: (value: string | undefined) => void;
- sameAsRouting: boolean;
- onSameAsRoutingChange: (same: boolean) => void;
- model: string | undefined;
- onModelChange: (value: string | undefined) => void;
+ value: AutoRouterCompressionState;
+ onChange: (state: AutoRouterCompressionState) => void;
}
const NONE_OPTION: SearchSelectOption = { label: "None (no compression)", value: NO_COMPRESSION };
-const CompressionControls: React.FC = ({
- routing,
- onRoutingChange,
- sameAsRouting,
- onSameAsRoutingChange,
- model,
- onModelChange,
-}) => {
+const CompressionControls: React.FC = ({ value, onChange }) => {
+ const { routing, sameAsRouting, model } = value;
+ const onRoutingChange = (newRouting: string | undefined) =>
+ onChange({ ...value, routing: newRouting, sameAsRouting: newRouting === undefined ? true : sameAsRouting });
+ const onSameAsRoutingChange = (newSameAsRouting: boolean) => onChange({ ...value, sameAsRouting: newSameAsRouting });
+ const onModelChange = (newModel: string | undefined) => onChange({ ...value, model: newModel });
+
const { data } = useGuardrails();
const compressionOptions: SearchSelectOption[] = (data?.guardrails ?? [])
.filter((g) => isCompressionGuardrailProvider(g.litellm_params?.guardrail))
diff --git a/ui/litellm-dashboard/src/components/add_model/TierRowSelect.tsx b/ui/litellm-dashboard/src/components/add_model/TierRowSelect.tsx
new file mode 100644
index 00000000000..ad7d53f9eae
--- /dev/null
+++ b/ui/litellm-dashboard/src/components/add_model/TierRowSelect.tsx
@@ -0,0 +1,25 @@
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select";
+import React from "react";
+
+const TierRowSelect: React.FC<{
+ label: string;
+ options: { value: string; label: string }[];
+ value: string | null;
+ onValueChange: (rowId: string) => void;
+ placeholder?: string;
+}> = ({ label, options, value, onValueChange, placeholder }) => (
+
+);
+
+export default TierRowSelect;
diff --git a/ui/litellm-dashboard/src/components/add_model/buildAutoRouterCompression.ts b/ui/litellm-dashboard/src/components/add_model/buildAutoRouterCompression.ts
index 5afdcf2b15c..c86416b507f 100644
--- a/ui/litellm-dashboard/src/components/add_model/buildAutoRouterCompression.ts
+++ b/ui/litellm-dashboard/src/components/add_model/buildAutoRouterCompression.ts
@@ -42,7 +42,7 @@ export const buildAutoRouterCompressionParams = (
if (state.routing === undefined) return {};
return {
auto_router_routing_compression: state.routing,
- auto_router_model_compression: state.sameAsRouting ? state.routing : (state.model ?? NO_COMPRESSION),
+ auto_router_model_compression: state.sameAsRouting ? state.routing : state.model ?? NO_COMPRESSION,
};
};
diff --git a/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.test.tsx b/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.test.tsx
index b93db8d963e..d8474b492e1 100644
--- a/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.test.tsx
+++ b/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.test.tsx
@@ -1040,9 +1040,10 @@ describe("EditAutoRouterModal prompt compression", () => {
return payload?.litellm_params;
};
- const renderWithStoredCompression = (
- compression?: { auto_router_routing_compression?: string; auto_router_model_compression?: string },
- ) =>
+ const renderWithStoredCompression = (compression?: {
+ auto_router_routing_compression?: string;
+ auto_router_model_compression?: string;
+ }) =>
renderWithProviders(