Skip to content

Commit abaa8c6

Browse files
authored
Merge branch 'main' into feature/redis-session-support
2 parents f383bff + 4c4b7c2 commit abaa8c6

File tree

7 files changed

+27
-31
lines changed

7 files changed

+27
-31
lines changed

src/agents/extensions/models/litellm_model.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
from ...logger import logger
4040
from ...model_settings import ModelSettings
4141
from ...models.chatcmpl_converter import Converter
42-
from ...models.chatcmpl_helpers import HEADERS, USER_AGENT_OVERRIDE
42+
from ...models.chatcmpl_helpers import HEADERS, HEADERS_OVERRIDE
4343
from ...models.chatcmpl_stream_handler import ChatCmplStreamHandler
4444
from ...models.fake_id import FAKE_RESPONSES_ID
4545
from ...models.interface import Model, ModelTracing
@@ -385,11 +385,7 @@ def _remove_not_given(self, value: Any) -> Any:
385385
return value
386386

387387
def _merge_headers(self, model_settings: ModelSettings):
388-
merged = {**HEADERS, **(model_settings.extra_headers or {})}
389-
ua_ctx = USER_AGENT_OVERRIDE.get()
390-
if ua_ctx is not None:
391-
merged["User-Agent"] = ua_ctx
392-
return merged
388+
return {**HEADERS, **(model_settings.extra_headers or {}), **(HEADERS_OVERRIDE.get() or {})}
393389

394390

395391
class LitellmConverter:

src/agents/models/chatcmpl_helpers.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
_USER_AGENT = f"Agents/Python {__version__}"
1111
HEADERS = {"User-Agent": _USER_AGENT}
1212

13-
USER_AGENT_OVERRIDE: ContextVar[str | None] = ContextVar(
14-
"openai_chatcompletions_user_agent_override", default=None
13+
HEADERS_OVERRIDE: ContextVar[dict[str, str] | None] = ContextVar(
14+
"openai_chatcompletions_headers_override", default=None
1515
)
1616

1717

src/agents/models/openai_chatcompletions.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from ..usage import Usage
2626
from ..util._json import _to_dump_compatible
2727
from .chatcmpl_converter import Converter
28-
from .chatcmpl_helpers import HEADERS, USER_AGENT_OVERRIDE, ChatCmplHelpers
28+
from .chatcmpl_helpers import HEADERS, HEADERS_OVERRIDE, ChatCmplHelpers
2929
from .chatcmpl_stream_handler import ChatCmplStreamHandler
3030
from .fake_id import FAKE_RESPONSES_ID
3131
from .interface import Model, ModelTracing
@@ -351,8 +351,8 @@ def _get_client(self) -> AsyncOpenAI:
351351
return self._client
352352

353353
def _merge_headers(self, model_settings: ModelSettings):
354-
merged = {**HEADERS, **(model_settings.extra_headers or {})}
355-
ua_ctx = USER_AGENT_OVERRIDE.get()
356-
if ua_ctx is not None:
357-
merged["User-Agent"] = ua_ctx
358-
return merged
354+
return {
355+
**HEADERS,
356+
**(model_settings.extra_headers or {}),
357+
**(HEADERS_OVERRIDE.get() or {}),
358+
}

src/agents/models/openai_responses.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,9 @@
5050
_USER_AGENT = f"Agents/Python {__version__}"
5151
_HEADERS = {"User-Agent": _USER_AGENT}
5252

53-
# Override for the User-Agent header used by the Responses API.
54-
_USER_AGENT_OVERRIDE: ContextVar[str | None] = ContextVar(
55-
"openai_responses_user_agent_override", default=None
53+
# Override headers used by the Responses API.
54+
_HEADERS_OVERRIDE: ContextVar[dict[str, str] | None] = ContextVar(
55+
"openai_responses_headers_override", default=None
5656
)
5757

5858

@@ -334,11 +334,11 @@ def _get_client(self) -> AsyncOpenAI:
334334
return self._client
335335

336336
def _merge_headers(self, model_settings: ModelSettings):
337-
merged = {**_HEADERS, **(model_settings.extra_headers or {})}
338-
ua_ctx = _USER_AGENT_OVERRIDE.get()
339-
if ua_ctx is not None:
340-
merged["User-Agent"] = ua_ctx
341-
return merged
337+
return {
338+
**_HEADERS,
339+
**(model_settings.extra_headers or {}),
340+
**(_HEADERS_OVERRIDE.get() or {}),
341+
}
342342

343343

344344
@dataclass

tests/models/test_litellm_user_agent.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import pytest
66

77
from agents import ModelSettings, ModelTracing, __version__
8-
from agents.models.chatcmpl_helpers import USER_AGENT_OVERRIDE
8+
from agents.models.chatcmpl_helpers import HEADERS_OVERRIDE
99

1010

1111
@pytest.mark.allow_call_model_methods
@@ -65,7 +65,7 @@ async def acompletion(**kwargs):
6565
model = LitellmModel(model="gpt-4")
6666

6767
if override_ua is not None:
68-
token = USER_AGENT_OVERRIDE.set(override_ua)
68+
token = HEADERS_OVERRIDE.set({"User-Agent": override_ua})
6969
else:
7070
token = None
7171
try:
@@ -83,7 +83,7 @@ async def acompletion(**kwargs):
8383
)
8484
finally:
8585
if token is not None:
86-
USER_AGENT_OVERRIDE.reset(token)
86+
HEADERS_OVERRIDE.reset(token)
8787

8888
assert "extra_headers" in called_kwargs
8989
assert called_kwargs["extra_headers"]["User-Agent"] == expected_ua

tests/test_openai_chatcompletions.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
__version__,
3535
generation_span,
3636
)
37-
from agents.models.chatcmpl_helpers import USER_AGENT_OVERRIDE, ChatCmplHelpers
37+
from agents.models.chatcmpl_helpers import HEADERS_OVERRIDE, ChatCmplHelpers
3838
from agents.models.fake_id import FAKE_RESPONSES_ID
3939

4040

@@ -402,7 +402,7 @@ def __init__(self):
402402
model = OpenAIChatCompletionsModel(model="gpt-4", openai_client=DummyChatClient()) # type: ignore
403403

404404
if override_ua is not None:
405-
token = USER_AGENT_OVERRIDE.set(override_ua)
405+
token = HEADERS_OVERRIDE.set({"User-Agent": override_ua})
406406
else:
407407
token = None
408408

@@ -420,7 +420,7 @@ def __init__(self):
420420
)
421421
finally:
422422
if token is not None:
423-
USER_AGENT_OVERRIDE.reset(token)
423+
HEADERS_OVERRIDE.reset(token)
424424

425425
assert "extra_headers" in called_kwargs
426426
assert called_kwargs["extra_headers"]["User-Agent"] == expected_ua

tests/test_openai_responses.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from openai.types.responses import ResponseCompletedEvent
77

88
from agents import ModelSettings, ModelTracing, __version__
9-
from agents.models.openai_responses import _USER_AGENT_OVERRIDE as RESP_UA, OpenAIResponsesModel
9+
from agents.models.openai_responses import _HEADERS_OVERRIDE as RESP_HEADERS, OpenAIResponsesModel
1010
from tests.fake_model import get_response_obj
1111

1212

@@ -41,7 +41,7 @@ def __init__(self):
4141
model = OpenAIResponsesModel(model="gpt-4", openai_client=DummyResponsesClient()) # type: ignore
4242

4343
if override_ua is not None:
44-
token = RESP_UA.set(override_ua)
44+
token = RESP_HEADERS.set({"User-Agent": override_ua})
4545
else:
4646
token = None
4747

@@ -59,7 +59,7 @@ def __init__(self):
5959
pass
6060
finally:
6161
if token is not None:
62-
RESP_UA.reset(token)
62+
RESP_HEADERS.reset(token)
6363

6464
assert "extra_headers" in called_kwargs
6565
assert called_kwargs["extra_headers"]["User-Agent"] == expected_ua

0 commit comments

Comments
 (0)