@@ -984,10 +984,17 @@ def test_agent_structured_output(agent, system_prompt, user, agenerator):
984984
985985 prompt = "Jane Doe is 30 years old and her email is [email protected] " 986986
987+ # Store initial message count
988+ initial_message_count = len (agent .messages )
989+
987990 tru_result = agent .structured_output (type (user ), prompt )
988991 exp_result = user
989992 assert tru_result == exp_result
990993
994+ # Verify conversation history is not polluted
995+ assert len (agent .messages ) == initial_message_count
996+
997+ # Verify the model was called with temporary messages array
991998 agent .model .structured_output .assert_called_once_with (
992999 type (user ), [{"role" : "user" , "content" : [{"text" : prompt }]}], system_prompt = system_prompt
9931000 )
@@ -1008,10 +1015,17 @@ def test_agent_structured_output_multi_modal_input(agent, system_prompt, user, a
10081015 },
10091016 ]
10101017
1018+ # Store initial message count
1019+ initial_message_count = len (agent .messages )
1020+
10111021 tru_result = agent .structured_output (type (user ), prompt )
10121022 exp_result = user
10131023 assert tru_result == exp_result
10141024
1025+ # Verify conversation history is not polluted
1026+ assert len (agent .messages ) == initial_message_count
1027+
1028+ # Verify the model was called with temporary messages array
10151029 agent .model .structured_output .assert_called_once_with (
10161030 type (user ), [{"role" : "user" , "content" : prompt }], system_prompt = system_prompt
10171031 )
@@ -1023,21 +1037,59 @@ async def test_agent_structured_output_in_async_context(agent, user, agenerator)
10231037
10241038 prompt = "Jane Doe is 30 years old and her email is [email protected] " 10251039
1040+ # Store initial message count
1041+ initial_message_count = len (agent .messages )
1042+
10261043 tru_result = await agent .structured_output_async (type (user ), prompt )
10271044 exp_result = user
10281045 assert tru_result == exp_result
10291046
1047+ # Verify conversation history is not polluted
1048+ assert len (agent .messages ) == initial_message_count
1049+
1050+
1051+ def test_agent_structured_output_without_prompt (agent , system_prompt , user , agenerator ):
1052+ """Test that structured_output works with existing conversation history and no new prompt."""
1053+ agent .model .structured_output = unittest .mock .Mock (return_value = agenerator ([{"output" : user }]))
1054+
1055+ # Add some existing messages to the agent
1056+ existing_messages = [
1057+ {"role" : "user" , "content" : [{"text" : "Jane Doe is 30 years old" }]},
1058+ {"role" : "assistant" , "content" : [{"text" : "I understand." }]},
1059+ ]
1060+ agent .messages .extend (existing_messages )
1061+
1062+ initial_message_count = len (agent .messages )
1063+
1064+ tru_result = agent .structured_output (type (user )) # No prompt provided
1065+ exp_result = user
1066+ assert tru_result == exp_result
1067+
1068+ # Verify conversation history is unchanged
1069+ assert len (agent .messages ) == initial_message_count
1070+ assert agent .messages == existing_messages
1071+
1072+ # Verify the model was called with existing messages only
1073+ agent .model .structured_output .assert_called_once_with (type (user ), existing_messages , system_prompt = system_prompt )
1074+
10301075
10311076@pytest .mark .asyncio
10321077async def test_agent_structured_output_async (agent , system_prompt , user , agenerator ):
10331078 agent .model .structured_output = unittest .mock .Mock (return_value = agenerator ([{"output" : user }]))
10341079
10351080 prompt = "Jane Doe is 30 years old and her email is [email protected] " 10361081
1082+ # Store initial message count
1083+ initial_message_count = len (agent .messages )
1084+
10371085 tru_result = agent .structured_output (type (user ), prompt )
10381086 exp_result = user
10391087 assert tru_result == exp_result
10401088
1089+ # Verify conversation history is not polluted
1090+ assert len (agent .messages ) == initial_message_count
1091+
1092+ # Verify the model was called with temporary messages array
10411093 agent .model .structured_output .assert_called_once_with (
10421094 type (user ), [{"role" : "user" , "content" : [{"text" : prompt }]}], system_prompt = system_prompt
10431095 )
0 commit comments