@@ -692,3 +692,47 @@ def __repr__(self):
692
692
'event.name' : 'gen_ai.tool.message' ,
693
693
},
694
694
]
695
+
696
+
697
+ def test_messages_to_otel_events_instructions ():
698
+ messages = [
699
+ ModelRequest (instructions = 'instructions' , parts = [UserPromptPart ('user_prompt' )]),
700
+ ModelResponse (parts = [TextPart ('text1' )]),
701
+ ]
702
+ assert [
703
+ InstrumentedModel .event_to_dict (e ) for e in InstrumentedModel .messages_to_otel_events (messages )
704
+ ] == snapshot (
705
+ [
706
+ {'content' : 'instructions' , 'role' : 'system' , 'event.name' : 'gen_ai.system.message' },
707
+ {'content' : 'user_prompt' , 'role' : 'user' , 'gen_ai.message.index' : 0 , 'event.name' : 'gen_ai.user.message' },
708
+ {
709
+ 'role' : 'assistant' ,
710
+ 'content' : 'text1' ,
711
+ 'gen_ai.message.index' : 1 ,
712
+ 'event.name' : 'gen_ai.assistant.message' ,
713
+ },
714
+ ]
715
+ )
716
+
717
+
718
+ def test_messages_to_otel_events_instructions_multiple_messages ():
719
+ messages = [
720
+ ModelRequest (instructions = 'instructions' , parts = [UserPromptPart ('user_prompt' )]),
721
+ ModelResponse (parts = [TextPart ('text1' )]),
722
+ ModelRequest (instructions = 'instructions2' , parts = [UserPromptPart ('user_prompt2' )]),
723
+ ]
724
+ assert [
725
+ InstrumentedModel .event_to_dict (e ) for e in InstrumentedModel .messages_to_otel_events (messages )
726
+ ] == snapshot (
727
+ [
728
+ {'content' : 'instructions2' , 'role' : 'system' , 'event.name' : 'gen_ai.system.message' },
729
+ {'content' : 'user_prompt' , 'role' : 'user' , 'gen_ai.message.index' : 0 , 'event.name' : 'gen_ai.user.message' },
730
+ {
731
+ 'role' : 'assistant' ,
732
+ 'content' : 'text1' ,
733
+ 'gen_ai.message.index' : 1 ,
734
+ 'event.name' : 'gen_ai.assistant.message' ,
735
+ },
736
+ {'content' : 'user_prompt2' , 'role' : 'user' , 'gen_ai.message.index' : 2 , 'event.name' : 'gen_ai.user.message' },
737
+ ]
738
+ )
0 commit comments