mirror of
https://github.com/BerriAI/litellm.git
synced 2026-09-13 23:11:40 +00:00
fix(azure): let the caller's api-version override a full-URL api_base on relays
This commit is contained in:
parent
13db79da46
commit
db59e99932
2 changed files with 40 additions and 1 deletions
|
|
@ -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,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue