11from __future__ import annotations
22
33import pytest
4+ from openai .types .responses .response_create_params import ContextManagement
45
56from agents import Agent , ModelSettings , RunConfig , Runner
67
@@ -125,7 +126,7 @@ async def test_runner_respects_existing_extra_body_prompt_cache_key() -> None:
125126async def test_runner_generates_prompt_cache_key_with_unrelated_extra_args () -> None :
126127 model = PromptCacheFakeModel ()
127128 model .set_next_output ([get_text_message ("done" )])
128- model_settings = ModelSettings (extra_args = {"context_management " : [{ "type" : "compaction" }] })
129+ model_settings = ModelSettings (extra_args = {"service_tier " : "flex" })
129130 agent = Agent (
130131 name = "test" ,
131132 model = model ,
@@ -137,10 +138,34 @@ async def test_runner_generates_prompt_cache_key_with_unrelated_extra_args() ->
137138 assert _sent_prompt_cache_key (model ) is not None
138139 sent_model_settings = _sent_model_settings (model )
139140 assert sent_model_settings .extra_args == {
140- "context_management " : [{ "type" : "compaction" }] ,
141+ "service_tier " : "flex" ,
141142 "prompt_cache_key" : _sent_prompt_cache_key (model ),
142143 }
143- assert model_settings .extra_args == {"context_management" : [{"type" : "compaction" }]}
144+ assert model_settings .extra_args == {"service_tier" : "flex" }
145+
146+
147+ @pytest .mark .asyncio
148+ async def test_runner_preserves_context_management_when_adding_prompt_cache_key () -> None :
149+ model = PromptCacheFakeModel ()
150+ model .set_next_output ([get_text_message ("done" )])
151+ context_management : list [ContextManagement ] = [
152+ {"type" : "compaction" , "compact_threshold" : 200000 }
153+ ]
154+ model_settings = ModelSettings (context_management = context_management )
155+ agent = Agent (
156+ name = "test" ,
157+ model = model ,
158+ model_settings = model_settings ,
159+ )
160+
161+ await Runner .run (agent , "hi" )
162+
163+ assert _sent_prompt_cache_key (model ) is not None
164+ sent_model_settings = _sent_model_settings (model )
165+ assert sent_model_settings .context_management == context_management
166+ assert sent_model_settings .extra_args == {"prompt_cache_key" : _sent_prompt_cache_key (model )}
167+ assert model_settings .context_management == context_management
168+ assert model_settings .extra_args is None
144169
145170
146171@pytest .mark .asyncio
0 commit comments