fix: preserve URL query params for Azure OpenAI and custom endpoints
Azure OpenAI requires an `api-version` query parameter on every request. When users include it in the base_url (e.g. `?api-version=2025-04-01-preview`), the OpenAI SDK silently drops it during URL construction, causing 404 errors. Extract query params from base_url and pass them via `default_query` so the SDK appends them to every request. This is a generic solution that works for any custom endpoint requiring query parameters, not just Azure. No-op for URLs without query params — fully backward compatible.
This commit is contained in:
18
run_agent.py
18
run_agent.py
@@ -40,6 +40,7 @@ from types import SimpleNamespace
|
||||
import urllib.request
|
||||
import uuid
|
||||
from typing import List, Dict, Any, Optional
|
||||
from urllib.parse import urlparse, parse_qs, urlunparse
|
||||
from openai import OpenAI
|
||||
import fire
|
||||
from datetime import datetime
|
||||
@@ -1314,7 +1315,22 @@ class AIAgent:
|
||||
if api_key and base_url:
|
||||
# Explicit credentials from CLI/gateway — construct directly.
|
||||
# The runtime provider resolver already handled auth for us.
|
||||
client_kwargs = {"api_key": api_key, "base_url": base_url}
|
||||
# Extract query params (e.g. Azure api-version) from base_url
|
||||
# and pass via default_query to prevent loss during SDK URL
|
||||
# joining (httpx drops query string when joining paths).
|
||||
_parsed_url = urlparse(base_url)
|
||||
if _parsed_url.query:
|
||||
_clean_url = urlunparse(_parsed_url._replace(query=""))
|
||||
_query_params = {
|
||||
k: v[0] for k, v in parse_qs(_parsed_url.query).items()
|
||||
}
|
||||
client_kwargs = {
|
||||
"api_key": api_key,
|
||||
"base_url": _clean_url,
|
||||
"default_query": _query_params,
|
||||
}
|
||||
else:
|
||||
client_kwargs = {"api_key": api_key, "base_url": base_url}
|
||||
if _provider_timeout is not None:
|
||||
client_kwargs["timeout"] = _provider_timeout
|
||||
if self.provider == "copilot-acp":
|
||||
|
||||
Reference in New Issue
Block a user