= ({
),
children: ,
},
+ {
+ key: "response",
+ label: (
+
+ Advanced: Response Format
+
+ ),
+ children: (
+ <>
+
+ onChange({ ...value, return_raw_model_name: returnRawModelName })}
+ />
+ Return raw model name
+
+
+ Return the resolved underlying model name in responses instead of the autorouter alias.
+
+ >
+ ),
+ },
...(onEscalationKeywordsChange
? [
{
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 6e7bc49afce..e7826e09dce 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
@@ -100,6 +100,7 @@ const AddAutoRouterTab: React.FC = ({ form, handleOk, acc
adaptive_weights: adaptiveWeights = DEFAULT_ADAPTIVE_WEIGHTS,
tier_distance_penalty: tierDistancePenalty = DEFAULT_TIER_DISTANCE_PENALTY,
adaptive_eligible: adaptiveEligible = "all",
+ return_raw_model_name: returnRawModelName = false,
} = complexityRouterConfig;
const missingTiersError = getMissingTiersError(tiers);
@@ -148,6 +149,7 @@ const AddAutoRouterTab: React.FC = ({ form, handleOk, acc
adaptiveWeights,
tierDistancePenalty,
adaptiveEligible,
+ returnRawModelName,
};
const submitValues = {
diff --git a/ui/litellm-dashboard/src/components/add_model/build_complexity_router_config.test.ts b/ui/litellm-dashboard/src/components/add_model/build_complexity_router_config.test.ts
index 0c9c19d1286..b5973bf7101 100644
--- a/ui/litellm-dashboard/src/components/add_model/build_complexity_router_config.test.ts
+++ b/ui/litellm-dashboard/src/components/add_model/build_complexity_router_config.test.ts
@@ -26,6 +26,7 @@ const baseParams: BuildComplexityRouterConfigParams = {
adaptiveWeights: { quality: 0.3, cost: 0.7 },
tierDistancePenalty: 0.5,
adaptiveEligible: "all",
+ returnRawModelName: false,
};
describe("buildComplexityRouterConfig", () => {
@@ -164,6 +165,16 @@ describe("buildComplexityRouterConfig", () => {
expect(config.adaptive_eligible).toBeUndefined();
});
+ it("omits return_raw_model_name when disabled", () => {
+ const config = buildComplexityRouterConfig({ ...baseParams, returnRawModelName: false });
+ expect(config.return_raw_model_name).toBeUndefined();
+ });
+
+ it("includes return_raw_model_name when enabled", () => {
+ const config = buildComplexityRouterConfig({ ...baseParams, returnRawModelName: true });
+ expect(config.return_raw_model_name).toBe(true);
+ });
+
it("includes tier_distance_penalty when adaptive is enabled with eligible='all'", () => {
const config = buildComplexityRouterConfig({
...baseParams,
diff --git a/ui/litellm-dashboard/src/components/add_model/build_complexity_router_config.ts b/ui/litellm-dashboard/src/components/add_model/build_complexity_router_config.ts
index 0b92dc1b02d..3b41b916611 100644
--- a/ui/litellm-dashboard/src/components/add_model/build_complexity_router_config.ts
+++ b/ui/litellm-dashboard/src/components/add_model/build_complexity_router_config.ts
@@ -21,6 +21,7 @@ export interface BuildComplexityRouterConfigParams {
adaptiveWeights: AdaptiveRouterWeights;
tierDistancePenalty: number;
adaptiveEligible: AdaptiveEligible;
+ returnRawModelName: boolean;
}
export interface ComplexityRouterConfigPayload {
@@ -37,6 +38,7 @@ export interface ComplexityRouterConfigPayload {
adaptive_weights?: AdaptiveRouterWeights;
tier_distance_penalty?: number;
adaptive_eligible?: AdaptiveEligible;
+ return_raw_model_name?: boolean;
}
const TIER_KEYS: Array = ["SIMPLE", "MEDIUM", "COMPLEX", "REASONING"];
@@ -76,6 +78,7 @@ export const buildComplexityRouterConfig = ({
adaptiveWeights,
tierDistancePenalty,
adaptiveEligible,
+ returnRawModelName,
}: BuildComplexityRouterConfigParams): ComplexityRouterConfigPayload => {
const cleanedEscalationKeywords = escalationKeywords.map((keyword) => keyword.trim()).filter(Boolean);
// Trim keywords and drop empty ones; drop any rule left with no keywords. Clicking
@@ -104,5 +107,6 @@ export const buildComplexityRouterConfig = ({
...(adaptiveEligible === "all" && { tier_distance_penalty: tierDistancePenalty }),
adaptive_eligible: adaptiveEligible,
}),
+ ...(returnRawModelName && { return_raw_model_name: true }),
};
};
diff --git a/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.test.ts b/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.test.ts
index cd8093928d5..17fa810b529 100644
--- a/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.test.ts
+++ b/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.test.ts
@@ -18,6 +18,7 @@ const storedConfigValue = {
adaptive_weights: { quality: 0.3, cost: 0.7 },
tier_distance_penalty: 0.8,
adaptive_eligible: "all",
+ return_raw_model_name: true,
};
const storedConfig = JSON.stringify(storedConfigValue);
@@ -80,6 +81,15 @@ describe("buildUpdatedComplexityRouterConfig", () => {
expect(updatedConfig).toEqual(expectedAdaptiveDisabledConfig);
});
+ it("includes return_raw_model_name only when enabled", () => {
+ const updatedConfig = buildUpdatedComplexityRouterConfig(storedConfig, {
+ ...classifiedTierValue,
+ return_raw_model_name: true,
+ });
+
+ expect(updatedConfig.return_raw_model_name).toBe(true);
+ });
+
it("updates custom technical keywords when they are edited", () => {
const updatedConfig = buildUpdatedComplexityRouterConfig(storedConfig, classifiedTierValue, ["postgres"]);
diff --git a/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.tsx b/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.tsx
index f85cd16486a..46d7d41d9b3 100644
--- a/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.tsx
+++ b/ui/litellm-dashboard/src/components/edit_auto_router/edit_auto_router_modal.tsx
@@ -38,6 +38,7 @@ const MANAGED_COMPLEXITY_ROUTER_KEYS = new Set([
"adaptive_weights",
"tier_distance_penalty",
"adaptive_eligible",
+ "return_raw_model_name",
]);
const toRecord = (value: unknown): Record => {
@@ -78,6 +79,7 @@ export const buildUpdatedComplexityRouterConfig = (
}),
adaptive_eligible: adaptiveEligible,
}),
+ ...(value.return_raw_model_name && { return_raw_model_name: true }),
};
};
@@ -158,6 +160,7 @@ const EditAutoRouterModal: React.FC = ({
adaptive_weights: parsedConfig.adaptive_weights,
tier_distance_penalty: parsedConfig.tier_distance_penalty,
adaptive_eligible: parsedConfig.adaptive_eligible || "all",
+ return_raw_model_name: parsedConfig.return_raw_model_name || false,
});
setCustomTechnicalKeywords(
Array.isArray(parsedConfig.custom_technical_keywords) ? parsedConfig.custom_technical_keywords : [],