mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-28 01:32:17 +00:00
* fix(router): parse the classifier verdict out of prose and fences on every parse path The complexity router's classifier parsers only tolerated a bare JSON object (labeled tier) or a leading Markdown fence (capability, LLM V2), so a json_object classifier that writes its verdict fenced and then explains it in markdown, which Bedrock Haiku 4.5 does on nearly every Claude Code request, failed validation and every request fell to the fallback tier. All three parse paths now extract the first complete JSON object from the reply with json.JSONDecoder.raw_decode, whatever prose or fence surrounds it, and a reply that still fails validation is logged with the pydantic field problems and the raw reply text, withheld when the request turns off message logging. The capability failure reason names the exception type like the labeled path does instead of interpolating str(e), which for a ValidationError carried the whole reply as input_value and for TimeoutError was empty. * fix(router): stop rejecting an LLM V2 forecast over a long explanation field LLMV2Verdict capped crux and each forecast's likely_failure at 512 characters through the ShortText alias, so a verdict whose explanation ran long failed validation and the request fell to the capable tier, even though nothing downstream reads either field. Five of nineteen real Claude Code replies from Bedrock Haiku 4.5 tripped the cap. Both fields keep the strip and non-empty constraints and lose the length cap; the operator-set calibration version keeps ShortText. * fix(complexity_router): withhold the rejected classifier reply under every message-logging opt-out and survive undecodable replies * fix(complexity_router): withhold the rejected classifier reply when the redaction decision cannot be made --------- Co-authored-by: mateo-berri <277851410+mateo-berri@users.noreply.github.com> |
||
|---|---|---|
| .. | ||
| adaptive_router | ||
| auto_router | ||
| complexity_router | ||
| quality_router | ||
| base_routing_strategy.py | ||
| budget_limiter.py | ||
| lar1_routing.py | ||
| least_busy.py | ||
| lowest_cost.py | ||
| lowest_latency.py | ||
| lowest_tpm_rpm.py | ||
| lowest_tpm_rpm_v2.py | ||
| savings_baseline.py | ||
| simple_shuffle.py | ||
| tag_based_routing.py | ||