This prevents upstream GitHub changes from breaking LLM calls by:
1. Runtime validation in get_model_cost_map.py:
- Validates JSON structure before accepting remote data
- Checks for required fields (litellm_provider)
- Validates mode values against allowed list
- Validates numeric cost fields
- Falls back to local backup if validation fails
- Logs warnings when falling back
2. Enhanced CI validation (.github/workflows/test-model-map.yaml):
- JSON syntax validation (fast fail)
- Comprehensive schema validation via Python script
- Validates both main file and backup file
- Checks backup freshness
3. New validation script (scripts/validate_model_cost_map.py):
- Validates all entries have required fields
- Checks mode values against allowed modes
- Validates numeric fields are actually numeric
- Sanity checks for suspiciously high costs
- Detailed error reporting
4. Unit tests for validation logic
The key improvement: if GitHub returns valid JSON but semantically
broken data (missing fields, wrong types), we now detect this and
fall back to the local backup instead of using the bad data.
Customers can also set LITELLM_LOCAL_MODEL_COST_MAP=True to completely
disable remote fetching for maximum stability.
Co-authored-by: ishaan <ishaan@berri.ai>
- Add health_check_client.py for monitoring model availability
- Add health_check_client_README.md with usage documentation
- Add health_check_requirements.txt for dependencies
- Add run_parallel_health_checks.ps1 (PowerShell version)
- Add run_parallel_health_checks.sh (Bash version)
- Organize all scripts under scripts/health_check/ directory
* fix(oldteams.tsx): allow org admin to create team on ui
* fix(oldteams.tsx): show org admin a dropdown of allowed orgs for team creation
* docs(access_control.md): cleanup doc
* feat(ibm_guardrails/): initial commit adding support for ibm guardrails on litellm
allows user to use self-hosted ibm guardrails
* feat(ibm_detector.py): working detector
* docs(ibm_guardrails.md): document new ibm guardrails
* fix: fix linting errors
Replace iter_lines()/aiter_lines() with iter_text()/aiter_text() using explicit
UTF-8 encoding to handle non-ASCII characters like µ in streaming responses.
- Added utf8_iter_lines() and utf8_aiter_lines() helper functions
- Ensures proper UTF-8 decoding of streaming response content
- Added comprehensive tests for Unicode character handling
Fixes#12660