mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-15 09:21:36 +00:00
fix(codex): drop extra_headers for chatgpt.com backend
This commit is contained in:
parent
45f9099e51
commit
4fd9397ae3
2 changed files with 44 additions and 16 deletions
|
|
@ -218,22 +218,10 @@ class ResponsesApiTransport(ProviderTransport):
|
|||
kwargs.pop("timeout", None)
|
||||
|
||||
if is_codex_backend:
|
||||
prompt_cache_key = kwargs.get("prompt_cache_key")
|
||||
cache_scope_id = str(prompt_cache_key or session_id or "").strip()
|
||||
if cache_scope_id:
|
||||
existing_extra_headers = kwargs.get("extra_headers")
|
||||
merged_extra_headers: Dict[str, str] = {}
|
||||
if isinstance(existing_extra_headers, dict):
|
||||
merged_extra_headers.update(
|
||||
{
|
||||
str(key): str(value)
|
||||
for key, value in existing_extra_headers.items()
|
||||
if key and value is not None
|
||||
}
|
||||
)
|
||||
merged_extra_headers["session_id"] = cache_scope_id
|
||||
merged_extra_headers["x-client-request-id"] = cache_scope_id
|
||||
kwargs["extra_headers"] = merged_extra_headers
|
||||
# chatgpt.com/backend-api/codex rejects body-level
|
||||
# ``extra_headers`` with HTTP 400. Correlation/cache routing for
|
||||
# this backend must not be sent through the Responses payload.
|
||||
kwargs.pop("extra_headers", None)
|
||||
|
||||
max_tokens = params.get("max_tokens")
|
||||
if max_tokens is not None and not is_codex_backend:
|
||||
|
|
|
|||
|
|
@ -155,6 +155,46 @@ class TestCodexBuildKwargs:
|
|||
)
|
||||
assert "max_output_tokens" not in kw
|
||||
|
||||
def test_codex_backend_does_not_set_extra_headers(self, transport):
|
||||
messages = [{"role": "user", "content": "Hi"}]
|
||||
|
||||
kw = transport.build_kwargs(
|
||||
model="gpt-5.4",
|
||||
messages=messages,
|
||||
tools=[],
|
||||
session_id="conv-codex-1",
|
||||
is_codex_backend=True,
|
||||
)
|
||||
|
||||
assert "extra_headers" not in kw
|
||||
|
||||
def test_codex_backend_strips_caller_extra_headers(self, transport):
|
||||
messages = [{"role": "user", "content": "Hi"}]
|
||||
|
||||
kw = transport.build_kwargs(
|
||||
model="gpt-5.4",
|
||||
messages=messages,
|
||||
tools=[],
|
||||
session_id="conv-codex-1",
|
||||
is_codex_backend=True,
|
||||
request_overrides={"extra_headers": {"x-test": "1"}},
|
||||
)
|
||||
|
||||
assert "extra_headers" not in kw
|
||||
|
||||
def test_non_codex_responses_preserves_caller_extra_headers(self, transport):
|
||||
messages = [{"role": "user", "content": "Hi"}]
|
||||
|
||||
kw = transport.build_kwargs(
|
||||
model="gpt-5.4",
|
||||
messages=messages,
|
||||
tools=[],
|
||||
is_codex_backend=False,
|
||||
request_overrides={"extra_headers": {"x-test": "1"}},
|
||||
)
|
||||
|
||||
assert kw["extra_headers"] == {"x-test": "1"}
|
||||
|
||||
def test_xai_headers(self, transport):
|
||||
messages = [{"role": "user", "content": "Hi"}]
|
||||
kw = transport.build_kwargs(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue