File tree Expand file tree Collapse file tree 2 files changed +29
-4
lines changed Expand file tree Collapse file tree 2 files changed +29
-4
lines changed Original file line number Diff line number Diff 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
Original file line number Diff line number Diff 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"
You can’t perform that action at this time.
0 commit comments