fix(agent): honor model.default_headers for custom OpenAI-compatible providers (#40033)
Custom OpenAI-compatible endpoints sitting behind a gateway/WAF can reject the OpenAI Python SDK's default identifying headers (User-Agent: OpenAI/Python, X-Stainless-*) and return an opaque 502/4xx even though the same request body succeeds under curl. There was no supported way to override those headers. Add a model.default_headers config key whose values are merged onto the OpenAI client's default_headers, taking precedence over provider- and SDK-supplied defaults. Applied at client construction and on every credential swap / client rebuild so the override survives reconnects. No-op for native Anthropic / Bedrock modes and when unconfigured.
This commit is contained in:
@@ -885,6 +885,14 @@ def init_agent(
|
||||
headers["x-anthropic-beta"] = _FINE_GRAINED
|
||||
client_kwargs["default_headers"] = headers
|
||||
|
||||
# User-configured request headers (model.default_headers in
|
||||
# config.yaml) override provider/SDK defaults. Lets custom
|
||||
# OpenAI-compatible endpoints behind a gateway/WAF that rejects the
|
||||
# OpenAI SDK's identifying headers swap in a plain User-Agent. (#40033)
|
||||
# client_kwargs is the same dict object as agent._client_kwargs, so
|
||||
# this mutation is reflected in the client built just below.
|
||||
agent._apply_user_default_headers()
|
||||
|
||||
agent.api_key = client_kwargs.get("api_key", "")
|
||||
agent.base_url = client_kwargs.get("base_url", agent.base_url)
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user