Skip to content

Commit 0c8c00a

Browse files
committed
fix: Ensure agent model takes precedence over starting_settings
- Move agent model assignment after starting_settings update - This fixes P1 bug where agent's model was overridden - Ensures proper precedence: agent model > starting_settings > run config - Add test to verify fix for initial session scenario Addresses feedback from chatgpt-codex-connector bot review
1 parent 75174e8 commit 0c8c00a

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

src/agents/realtime/session.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -774,10 +774,6 @@ async def _get_updated_model_settings_from_agent(
774774
# Start with the merged base settings from run and model configuration.
775775
updated_settings = self._base_model_settings.copy()
776776

777-
# Use agent-specific model if specified
778-
if agent.model is not None:
779-
updated_settings["model_name"] = agent.model
780-
781777
if agent.prompt is not None:
782778
updated_settings["prompt"] = agent.prompt
783779

@@ -794,6 +790,11 @@ async def _get_updated_model_settings_from_agent(
794790
if starting_settings:
795791
updated_settings.update(starting_settings)
796792

793+
# Use agent-specific model if specified (applied last to ensure proper precedence)
794+
# This ensures agent model > starting_settings > run config > defaults
795+
if agent.model is not None:
796+
updated_settings["model_name"] = agent.model
797+
797798
disable_tracing = self._run_config.get("tracing_disabled", False)
798799
if disable_tracing:
799800
updated_settings["tracing"] = None

tests/realtime/test_agent_model.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,3 +107,27 @@ async def test_update_agent_with_different_model():
107107

108108
# Verify the new model is in the session settings
109109
assert last_event.session_settings.get("model_name") == "gpt-4o-realtime-preview"
110+
111+
112+
@pytest.mark.asyncio
113+
async def test_agent_model_not_overridden_by_starting_settings():
114+
"""Test that agent's model is not overridden by starting_settings (fixes P1 bug)."""
115+
from agents.realtime.config import RealtimeSessionModelSettings
116+
117+
model = _DummyModel()
118+
119+
# Agent with specific model
120+
agent = RealtimeAgent(name="test_agent", instructions="Hello", model="gpt-4o-realtime-preview")
121+
122+
# Starting settings with different model (simulates model config)
123+
starting_settings: RealtimeSessionModelSettings = {"model_name": "gpt-realtime"}
124+
125+
session = RealtimeSession(model, agent, None)
126+
127+
# Get model settings with starting_settings (this simulates initial session start)
128+
model_settings = await session._get_updated_model_settings_from_agent(starting_settings, agent)
129+
130+
# Verify that agent's model takes precedence over starting_settings
131+
assert model_settings["model_name"] == "gpt-4o-realtime-preview"
132+
# Ensure it's not using the default from starting_settings
133+
assert model_settings["model_name"] != "gpt-realtime"

0 commit comments

Comments
 (0)