@@ -984,10 +984,17 @@ def test_agent_structured_output(agent, system_prompt, user, agenerator):
984
984
985
985
prompt = "Jane Doe is 30 years old and her email is [email protected] "
986
986
987
+ # Store initial message count
988
+ initial_message_count = len (agent .messages )
989
+
987
990
tru_result = agent .structured_output (type (user ), prompt )
988
991
exp_result = user
989
992
assert tru_result == exp_result
990
993
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
991
998
agent .model .structured_output .assert_called_once_with (
992
999
type (user ), [{"role" : "user" , "content" : [{"text" : prompt }]}], system_prompt = system_prompt
993
1000
)
@@ -1008,10 +1015,17 @@ def test_agent_structured_output_multi_modal_input(agent, system_prompt, user, a
1008
1015
},
1009
1016
]
1010
1017
1018
+ # Store initial message count
1019
+ initial_message_count = len (agent .messages )
1020
+
1011
1021
tru_result = agent .structured_output (type (user ), prompt )
1012
1022
exp_result = user
1013
1023
assert tru_result == exp_result
1014
1024
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
1015
1029
agent .model .structured_output .assert_called_once_with (
1016
1030
type (user ), [{"role" : "user" , "content" : prompt }], system_prompt = system_prompt
1017
1031
)
@@ -1023,21 +1037,59 @@ async def test_agent_structured_output_in_async_context(agent, user, agenerator)
1023
1037
1024
1038
prompt = "Jane Doe is 30 years old and her email is [email protected] "
1025
1039
1040
+ # Store initial message count
1041
+ initial_message_count = len (agent .messages )
1042
+
1026
1043
tru_result = await agent .structured_output_async (type (user ), prompt )
1027
1044
exp_result = user
1028
1045
assert tru_result == exp_result
1029
1046
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
+
1030
1075
1031
1076
@pytest .mark .asyncio
1032
1077
async def test_agent_structured_output_async (agent , system_prompt , user , agenerator ):
1033
1078
agent .model .structured_output = unittest .mock .Mock (return_value = agenerator ([{"output" : user }]))
1034
1079
1035
1080
prompt = "Jane Doe is 30 years old and her email is [email protected] "
1036
1081
1082
+ # Store initial message count
1083
+ initial_message_count = len (agent .messages )
1084
+
1037
1085
tru_result = agent .structured_output (type (user ), prompt )
1038
1086
exp_result = user
1039
1087
assert tru_result == exp_result
1040
1088
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
1041
1093
agent .model .structured_output .assert_called_once_with (
1042
1094
type (user ), [{"role" : "user" , "content" : [{"text" : prompt }]}], system_prompt = system_prompt
1043
1095
)
0 commit comments