Users were getting "does not support parameters: ['tools']" errors when
using lowercase model names (e.g., "qwen/qwen3-next-80b-a3b-thinking")
because the model cost map has mixed-case keys and the lookup was
case-sensitive.
Added _get_model_cost_key() helper that tries exact match first (O(1)),
then falls back to case-insensitive search if not found.
extract model id from vertex ai passthrough routes that follow the pattern:
/vertex_ai/*/models/{model_id}:*
the model extraction now handles vertex ai routes by regex matching the model
segment from the url path, which allows proper model identification for
authentication and authorization in proxy pass-through endpoints.
adds comprehensive test coverage for vertex ai model extraction including:
- various vertex api versions (v1, v1beta1)
- different locations (us-central1, asia-southeast1)
- model names with special suffixes (gemini-1.5-pro, gemini-2.0-flash)
- precedence verification (request body model over url)
- non-vertex route isolation
* feat(custom_llm): add image_edit and aimage_edit support
Add support for image_edit and aimage_edit methods in CustomLLM class,
allowing users to implement custom image editing providers.
Changes:
- Add image_edit() and aimage_edit() methods to CustomLLM base class
- Add custom provider detection in litellm.image_edit() function
- Add tests for sync and async image_edit with custom handlers
* docs: add image_edit to CustomLLM documentation
- Add /v1/images/edits to supported routes
- Add Image Edit section with example
- Update Custom Handler Spec with image_edit methods
- Filter skip_mcp_handler and other internal params in fallback_utils.py before calling acompletion
Fixes issue where internal parameters were being passed to provider APIs causing errors
- Remove deployment field from GCS bucket logger test metadata
Fixes model name mismatch where deployment field was overriding the model in logging
- Update Bedrock Titan test to use non-deprecated model (titan-text-express-v1)
Fixes test failure due to deprecated amazon.titan-text-lite-v1 model
- Add @pytest.mark.flaky(retries=3, delay=1) decorator to handle intermittent Anthropic API failures
- Add error handling to skip test when Anthropic API returns InternalServerError
- Prevents false test failures due to external API 500 errors
- Removed litellm/model_prices_and_context_window_backup.json
- Updated get_model_cost_map() to read from single source
- Refactored _load_local_model_cost_map() to support:
* Package resources (production/pip install)
* Project root (development)
- Updated CI/CD workflows:
* .circleci/config.yml: Copy to litellm/ before publishing
* .github/workflows/simple_pypi_publish.yml: Same approach
* ci_cd/check_files_match.py: Updated file paths
- Updated test_get_model_file.py to use project root
- Renamed test_get_backup_model_cost_map → test_get_local_model_cost_map
Benefits:
- Eliminates file duplication
- Single source of truth for model pricing
- No need for PRs like #16460 to sync backup files
- Simpler maintenance
The backup was unnecessary because CI copies the file to the package before publishing.
* Fix bug, add new unit test
* Extract payload builder code to a separate namespace
* Update opik.py to use logic from the new namespace
* Code cleanup, type hints improvements
* Run linter
* Log model name as span field
* Reformat arguments in payload builders
* Use dataclasses for payloads, use opik native client if it's available
* Add cost and provider
* Add provider mapping