@@ -267,6 +267,33 @@ def astream(self, *args, **kwargs):
267267
268268 return return_val
269269
270+ def astream_events (self , * args , ** kwargs ):
271+ transaction = current_transaction ()
272+ if not transaction :
273+ return self .__wrapped__ .astream_events (* args , ** kwargs )
274+
275+ agent_name = getattr (self .__wrapped__ , "name" , "agent" )
276+ agent_id = str (uuid .uuid4 ())
277+ agent_event_dict = _construct_base_agent_event_dict (agent_name , agent_id , transaction )
278+ function_trace_name = f"astream_events/{ agent_name } "
279+ agentic_subcomponent_data = {"type" : "APM-AI_AGENT" , "name" : agent_name }
280+
281+ ft = FunctionTrace (name = function_trace_name , group = "Llm/agent/LangChain" )
282+ ft .__enter__ ()
283+ ft ._add_agent_attribute ("subcomponent" , json .dumps (agentic_subcomponent_data ))
284+ try :
285+ return_val = self .__wrapped__ .astream_events (* args , ** kwargs )
286+ return_val = AsyncLLMStreamProxy (
287+ return_val ,
288+ on_stop_iteration = self ._nr_on_stop_iteration (ft , agent_event_dict ),
289+ on_error = self ._nr_on_error (ft , agent_event_dict , agent_id ),
290+ )
291+ except Exception :
292+ self ._nr_on_error (ft , agent_event_dict , agent_id )(transaction )
293+ raise
294+
295+ return return_val
296+
270297 def transform (self , * args , ** kwargs ):
271298 transaction = current_transaction ()
272299 if not transaction :
0 commit comments