@@ -143,17 +143,14 @@ async def test_agent_invocation_span(
143143 assert transaction ["contexts" ]["trace" ]["origin" ] == "auto.ai.openai_agents"
144144
145145 assert invoke_agent_span ["description" ] == "invoke_agent test_agent"
146- assert invoke_agent_span ["data" ]["gen_ai.request.messages" ] == safe_serialize (
147- [
148- {
149- "content" : [
150- {"text" : "You are a helpful test assistant." , "type" : "text" }
151- ],
152- "role" : "system" ,
153- },
154- {"content" : [{"text" : "Test input" , "type" : "text" }], "role" : "user" },
155- ]
156- )
146+ assert invoke_agent_span ["data" ]["gen_ai.request.messages" ] == [
147+ {
148+ "content" : [{"text" : "You are a helpful test assistant." , "type" : "text" }],
149+ "role" : "system" ,
150+ },
151+ {"content" : [{"text" : "Test input" , "type" : "text" }], "role" : "user" },
152+ ]
153+
157154 assert (
158155 invoke_agent_span ["data" ]["gen_ai.response.text" ]
159156 == "Hello, how can I help you?"
@@ -488,22 +485,16 @@ def simple_test_tool(message: str) -> str:
488485 assert ai_client_span1 ["data" ]["gen_ai.agent.name" ] == "test_agent"
489486 assert ai_client_span1 ["data" ]["gen_ai.request.available_tools" ] == available_tools
490487 assert ai_client_span1 ["data" ]["gen_ai.request.max_tokens" ] == 100
491- assert ai_client_span1 ["data" ]["gen_ai.request.messages" ] == safe_serialize (
492- [
493- {
494- "role" : "system" ,
495- "content" : [
496- {"type" : "text" , "text" : "You are a helpful test assistant." }
497- ],
498- },
499- {
500- "role" : "user" ,
501- "content" : [
502- {"type" : "text" , "text" : "Please use the simple test tool" }
503- ],
504- },
505- ]
506- )
488+ assert ai_client_span1 ["data" ]["gen_ai.request.messages" ] == [
489+ {
490+ "role" : "system" ,
491+ "content" : [{"type" : "text" , "text" : "You are a helpful test assistant." }],
492+ },
493+ {
494+ "role" : "user" ,
495+ "content" : [{"type" : "text" , "text" : "Please use the simple test tool" }],
496+ },
497+ ]
507498 assert ai_client_span1 ["data" ]["gen_ai.request.model" ] == "gpt-4"
508499 assert ai_client_span1 ["data" ]["gen_ai.request.temperature" ] == 0.7
509500 assert ai_client_span1 ["data" ]["gen_ai.request.top_p" ] == 1.0
@@ -564,49 +555,50 @@ def simple_test_tool(message: str) -> str:
564555 == available_tools
565556 )
566557 assert ai_client_span2 ["data" ]["gen_ai.request.max_tokens" ] == 100
567- assert re .sub (
558+
559+ # Convert list to JSON string, do regex replacement, then parse back
560+ messages_json = json .dumps (ai_client_span2 ["data" ]["gen_ai.request.messages" ])
561+ messages_json_cleaned = re .sub (
568562 r"SerializationIterator\(.*\)" ,
569563 "NOT_CHECKED" ,
570- ai_client_span2 ["data" ]["gen_ai.request.messages" ],
571- ) == safe_serialize (
572- [
573- {
574- "role" : "system" ,
575- "content" : [
576- {"type" : "text" , "text" : "You are a helpful test assistant." }
577- ],
578- },
579- {
580- "role" : "user" ,
581- "content" : [
582- {"type" : "text" , "text" : "Please use the simple test tool" }
583- ],
584- },
585- {
586- "role" : "assistant" ,
587- "content" : [
588- {
589- "arguments" : '{"message": "hello"}' ,
590- "call_id" : "call_123" ,
591- "name" : "simple_test_tool" ,
592- "type" : "function_call" ,
593- "id" : "call_123" ,
594- "function" : "NOT_CHECKED" ,
595- }
596- ],
597- },
598- {
599- "role" : "tool" ,
600- "content" : [
601- {
602- "call_id" : "call_123" ,
603- "output" : "Tool executed with: hello" ,
604- "type" : "function_call_output" ,
605- }
606- ],
607- },
608- ]
564+ messages_json ,
609565 )
566+ messages_cleaned = json .loads (messages_json_cleaned )
567+
568+ assert messages_cleaned == [
569+ {
570+ "role" : "system" ,
571+ "content" : [{"type" : "text" , "text" : "You are a helpful test assistant." }],
572+ },
573+ {
574+ "role" : "user" ,
575+ "content" : [{"type" : "text" , "text" : "Please use the simple test tool" }],
576+ },
577+ {
578+ "role" : "assistant" ,
579+ "content" : [
580+ {
581+ "arguments" : '{"message": "hello"}' ,
582+ "call_id" : "call_123" ,
583+ "name" : "simple_test_tool" ,
584+ "type" : "function_call" ,
585+ "id" : "call_123" ,
586+ "function" : "NOT_CHECKED" ,
587+ }
588+ ],
589+ },
590+ {
591+ "role" : "tool" ,
592+ "content" : [
593+ {
594+ "call_id" : "call_123" ,
595+ "output" : "Tool executed with: hello" ,
596+ "type" : "function_call_output" ,
597+ }
598+ ],
599+ },
600+ ]
601+
610602 assert ai_client_span2 ["data" ]["gen_ai.request.model" ] == "gpt-4"
611603 assert ai_client_span2 ["data" ]["gen_ai.request.temperature" ] == 0.7
612604 assert ai_client_span2 ["data" ]["gen_ai.request.top_p" ] == 1.0
@@ -1126,17 +1118,15 @@ def test_openai_agents_message_truncation(
11261118 assert "gen_ai.request.messages" in invoke_agent_span ["data" ]
11271119
11281120 messages_data = invoke_agent_span ["data" ]["gen_ai.request.messages" ]
1129- assert isinstance (messages_data , str )
1121+ assert isinstance (messages_data , list )
11301122
1131- parsed_messages = json .loads (messages_data )
1132- assert isinstance (parsed_messages , list )
1133- assert len (parsed_messages ) >= 1
1123+ assert len (messages_data ) >= 1
11341124
1135- result_size = len (messages_data . encode ( "utf-8" ))
1125+ result_size = len (serialize ( messages_data , is_vars = False ))
11361126 assert result_size <= MAX_GEN_AI_MESSAGE_BYTES
11371127
11381128 total_original_size = len (large_system_prompt ) + len (large_user_message )
1139- total_parsed_size = sum (len (str (msg )) for msg in parsed_messages )
1129+ total_parsed_size = sum (len (str (msg )) for msg in messages_data )
11401130 assert total_parsed_size < total_original_size
11411131
11421132
@@ -1181,14 +1171,12 @@ def test_openai_agents_single_large_message_preservation(
11811171 assert "gen_ai.request.messages" in invoke_agent_span ["data" ]
11821172
11831173 messages_data = invoke_agent_span ["data" ]["gen_ai.request.messages" ]
1184- assert isinstance (messages_data , str )
1174+ assert isinstance (messages_data , list )
11851175
1186- parsed_messages = json .loads (messages_data )
1187- assert isinstance (parsed_messages , list )
1188- assert len (parsed_messages ) >= 1
1176+ assert len (messages_data ) >= 1
11891177
11901178 user_message = next (
1191- (msg for msg in parsed_messages if msg .get ("role" ) == "user" ), None
1179+ (msg for msg in messages_data if msg .get ("role" ) == "user" ), None
11921180 )
11931181 if user_message and "content" in user_message :
11941182 assert len (user_message ["content" ]) < len (huge_content )
0 commit comments