fix(azure): let the caller's api-version override a full-URL api_base on relays

This commit is contained in:
mateo-berri 2026-09-08 12:21:34 -07:00
parent 13db79da46
commit db59e99932
2 changed files with 40 additions and 1 deletions

View file

@ -65,6 +65,12 @@ def logged_responses_stream(all_chunks: Sequence[str], logging_obj: Logging) ->
return terminal_event
def without_api_version(api_base: str) -> str:
url: Final = httpx.URL(api_base)
kept_params: Final = tuple((key, value) for key, value in url.params.multi_items() if key != "api-version")
return str(url.copy_with(params=httpx.QueryParams(kept_params)))
class AzurePassthroughConfig(BasePassthroughConfig):
def is_streaming_request(self, endpoint: str, request_data: dict) -> bool:
return bool(request_data.get("stream"))
@ -89,8 +95,9 @@ class AzurePassthroughConfig(BasePassthroughConfig):
native_endpoint: Final = strip_leading_model_segment(routed_endpoint, (model,))
caller_api_version: Final = request_query_params.get("api-version") if request_query_params else None
relay_base: Final = without_api_version(base_target_url) if caller_api_version else base_target_url
complete_url: Final = BaseAzureLLM._get_base_azure_url(
api_base=base_target_url,
api_base=relay_base,
litellm_params={**litellm_params, "api_version": caller_api_version or litellm_params.get("api_version")},
route=native_endpoint,
)

View file

@ -369,6 +369,38 @@ def test_azure_passthrough_url_fills_in_the_deployments_api_version_when_the_cal
assert url.params["api-version"] == "2024-10-21"
FULL_URL_API_BASE = (
"https://my-resource.openai.azure.com/openai/deployments/gpt-4.1-mini/chat/completions?api-version=2024-10-21"
)
def _full_url_complete_url(request_query_params: dict) -> httpx.URL:
url, _ = AzurePassthroughConfig().get_complete_url(
api_base=FULL_URL_API_BASE,
api_key="key",
model="gpt-4.1-mini",
endpoint="chat/completions",
request_query_params=request_query_params,
litellm_params={},
)
return url
def test_azure_passthrough_url_prefers_the_callers_api_version_over_a_full_url_api_bases():
url = _full_url_complete_url(request_query_params={"api-version": "2025-04-01-preview"})
assert str(url) == (
"https://my-resource.openai.azure.com/openai/deployments/gpt-4.1-mini/chat/completions"
"?api-version=2025-04-01-preview"
)
def test_azure_passthrough_url_keeps_a_full_url_api_bases_api_version_when_the_caller_sends_none():
url = _full_url_complete_url(request_query_params={})
assert url.params["api-version"] == "2024-10-21"
def test_azure_passthrough_url_strips_the_leading_router_model_segment():
url, _ = AzurePassthroughConfig().get_complete_url(
api_base="https://my-resource.openai.azure.com",