@@ -715,7 +715,11 @@ def new_invoke(self, *args, **kwargs):
715715 return f (self , * args , ** kwargs )
716716
717717 try :
718- agent_name = self .agent .runnable .config .get ("run_name" )
718+ agent_name = None
719+ if len (args ) > 1 :
720+ agent_name = args [1 ].get ("run_name" )
721+ if agent_name is None :
722+ agent_name = self .agent .runnable .config .get ("run_name" )
719723 except Exception :
720724 agent_name = ""
721725
@@ -726,6 +730,8 @@ def new_invoke(self, *args, **kwargs):
726730 origin = LangchainIntegration .origin ,
727731 ) as span :
728732 span .set_data (SPANDATA .GEN_AI_OPERATION_NAME , "invoke_agent" )
733+ span .set_data (SPANDATA .GEN_AI_RESPONSE_STREAMING , False )
734+
729735 if agent_name != "" :
730736 span .set_data (SPANDATA .GEN_AI_AGENT_NAME , agent_name )
731737
@@ -740,7 +746,23 @@ def new_invoke(self, *args, **kwargs):
740746 if model_name != "" :
741747 span .set_data (SPANDATA .GEN_AI_REQUEST_MODEL , model_name )
742748
743- return f (self , * args , ** kwargs )
749+ result = f (self , * args , ** kwargs )
750+
751+ input = result .get ("input" )
752+ if input is not None :
753+ set_data_normalized (
754+ span ,
755+ SPANDATA .GEN_AI_REQUEST_MESSAGES ,
756+ [
757+ input ,
758+ ],
759+ )
760+
761+ output = result .get ("output" )
762+ if output is not None :
763+ span .set_data (SPANDATA .GEN_AI_RESPONSE_TEXT , output )
764+
765+ return result
744766
745767 return new_invoke
746768
@@ -769,6 +791,17 @@ def new_stream(self, *args, **kwargs):
769791 span .__enter__ ()
770792
771793 span .set_data (SPANDATA .GEN_AI_OPERATION_NAME , "invoke_agent" )
794+ span .set_data (SPANDATA .GEN_AI_RESPONSE_STREAMING , True )
795+
796+ input = args [0 ].get ("input" ) if len (args ) > 1 else None
797+ if input is not None :
798+ set_data_normalized (
799+ span ,
800+ SPANDATA .GEN_AI_REQUEST_MESSAGES ,
801+ [
802+ input ,
803+ ],
804+ )
772805
773806 model_name = ""
774807 if hasattr (self , "agent" ) and hasattr (self .agent , "llm" ):
@@ -787,8 +820,12 @@ def new_stream(self, *args, **kwargs):
787820 def new_iterator ():
788821 # type: () -> Iterator[Any]
789822 for event in old_iterator :
790- # import ipdb; ipdb.set_trace()
791823 yield event
824+
825+ output = event .get ("output" )
826+ if output is not None :
827+ span .set_data (SPANDATA .GEN_AI_RESPONSE_TEXT , output )
828+
792829 span .__exit__ (None , None , None )
793830
794831 async def new_iterator_async ():
0 commit comments