mirror of
https://github.com/BerriAI/litellm.git
synced 2026-08-28 05:25:59 +00:00
* fix(ui): carry a preset's per-tier litellm_params through the prefill buildPresetPrefill rebuilt the complexity router config field by field and never emitted tier_model_params, so a bundled preset that declares per-model litellm_params (reasoning_effort, for instance) lost them before the create form ever saw them. Both halves of the round trip already existed: hydrateTierModelParams reads either storage shape, and serializeTierModelConfigs writes them back on submit. Hydrating alone is not enough. Tier entries get rewritten to the caller's registered model spelling, which can differ from the preset's literal string by version-separator punctuation, while the params stay keyed on what the preset spelled. serializeTierModelConfigs then drops any param whose key is not in the tier, silently. The param keys go through the same resolver as the tier entries. * test(ui): catch a preset spelling the same model two ways in one tier buildPresetPrefill resolves every model reference through normalizeModelName, so two spellings of the same model in one tier (e.g. "claude-sonnet-4-5" and "claude-sonnet-4.5") collapse to one key. For tier_model_configs that means one model's litellm_params silently overwrites the other's - flagged by Greptile on #38453 (P2, confirmed real via a throwaway repro, not a regression: on the merge base both param sets were already dropped). Nothing else validates preset authoring, and these are trusted, checked-in JSON, so the fix is a static test over the bundled data rather than runtime code. Exports normalizeModelName so the test exercises the actual resolution rule instead of a hand-rolled copy of it. Verified the test fails when a preset is mutated to spell one model two ways, and passes clean on the real bundled presets. |
||
|---|---|---|
| .. | ||
| litellm-dashboard | ||
| Dockerfile | ||
| nginx.conf | ||