mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-06 08:16:43 +00:00
* fix(router): drop a tier param the routed target cannot take A complexity tier's litellm_params are an operator override applied to every request that tier routes, and they were written into the request kwargs unconditionally. When the tier set a param the target does not declare, get_optional_params raised UnsupportedParamsError before the request left the proxy, so the whole tier answered 400. The bundled Lite preset sets reasoning_effort on its complex tier, and four of the thirteen kimi-k3 map entries reject that param, so a router built from a first-party template failed on every complex prompt Filter the tier params at both store sites against what the group's deployments declare. The candidate set is asked of the module that raises rather than derived from a second list, so credentials, endpoint and transport controls are never at risk: base_url, timeout, default_headers, organization and deployment_id are not chat completion params and never reach that comparison. A param survives if any deployment could take it, since routing has not picked one yet, and it survives an unresolvable provider or an empty group, since a best-effort filter must not narrow what the request already did The skip list _check_valid_arg applies before rejecting a param now has one owner both it and the router read, so the two cannot drift * fix(router): honor allowed_openai_params when gating tier params * test(router): cover _declared_param_allowlist malformed declarations * fix(router): never ask an authenticating provider whether it takes a tier param Resolving github_copilot or chatgpt runs their OAuth device flow, so the capability question _deployment_accepts_param asks would freeze the event loop for minutes inside async_get_available_deployment. Promote register_model's local skip set to constants.PROVIDERS_THAT_AUTHENTICATE_ON_PROVIDER_INFO and fail open on those providers before any lookup * fix(utils): adopt a declared authenticating prefix instead of resolving it The tier-param guard alone was not enough: the savings baseline and the model-info funnels also resolve deployments during routing, and each resolution of github_copilot or chatgpt runs their OAuth device flow. declared_authenticating_provider gives every metadata funnel (get_supported_openai_params, _get_potential_model_names, _supports_factory, canonical_model) the resolver's answer by string, so the whole routing path answers without authenticating. A through-test drives async_get_available_deployment with a copilot deployment and records that no copilot resolution happens |
||
|---|---|---|
| .. | ||
| agent_tests | ||
| audio_tests | ||
| base_sdk_tests | ||
| basic_proxy_startup_tests | ||
| batches_tests | ||
| benchmarks | ||
| code_coverage_tests | ||
| documentation_tests | ||
| e2e | ||
| enterprise | ||
| guardrails_tests | ||
| image_gen_tests | ||
| integration | ||
| litellm-proxy-extras | ||
| litellm_utils_tests | ||
| llm_responses_api_testing | ||
| llm_translation | ||
| load_tests | ||
| local_testing | ||
| logging_callback_tests | ||
| mcp_tests | ||
| multi_instance_e2e_tests | ||
| ocr_tests | ||
| openai_endpoints_tests | ||
| otel_tests | ||
| pass_through_tests | ||
| pass_through_unit_tests | ||
| proxy_admin_ui_tests | ||
| proxy_behavior | ||
| proxy_e2e_anthropic_messages_tests | ||
| proxy_migration_tests | ||
| proxy_security_tests | ||
| proxy_unit_tests | ||
| router_unit_tests | ||
| search_tests | ||
| spend_tracking_tests | ||
| store_model_in_db_tests | ||
| test_litellm | ||
| unified_google_tests | ||
| vector_store_tests | ||
| windows_tests | ||
| __init__.py | ||
| _fake_openai_endpoint_server.py | ||
| _flush_vcr_cache.py | ||
| _live_test_helpers.py | ||
| _openai_record_replay_proxy.py | ||
| _vcr_conftest_common.py | ||
| _vcr_redis_persister.py | ||
| _wait_helpers.py | ||
| _ws_vcr.py | ||
| eval_swe_bench.py | ||
| fake_openai_endpoint.py | ||
| gettysburg.wav | ||
| large_text.py | ||
| openai_batch_completions.jsonl | ||
| pyrightconfig.json | ||
| README.MD | ||
| test_anthropic_compaction_usage.py | ||
| test_budget_management.py | ||
| test_callbacks_on_proxy.py | ||
| test_debug_warning.py | ||
| test_default_encoding_non_root.py | ||
| test_end_users.py | ||
| test_fallbacks.py | ||
| test_gpt5_azure_temperature_support.py | ||
| test_health.py | ||
| test_keys.py | ||
| test_litellm_proxy_responses_config.py | ||
| test_logging.conf | ||
| test_models.py | ||
| test_new_vector_store_endpoints.py | ||
| test_openai_endpoints.py | ||
| test_organizations.py | ||
| test_otel_thread_leak.py | ||
| test_presidio_latency.py | ||
| test_proxy_server_non_root.py | ||
| test_ratelimit.py | ||
| test_resource_cleanup.py | ||
| test_service_logger_otel.py | ||
| test_spend_logs.py | ||
| test_team.py | ||
| test_team_logging.py | ||
| test_team_members.py | ||
| test_users.py | ||
In total litellm runs 1000+ tests
[02/20/2025] Update:
To make it easier to contribute and map what behavior is tested,
we've started mapping the litellm directory in tests/test_litellm
This folder can only run mock tests.