
    fif              	          d dl Z d dlZd dlZd dlmZ d dlmZ d dlZd dlZd dl	m
Z
 d dlmZmZmZmZmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZmZ d d
lmZmZ d dlm Z  e r d dlm!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d dl)m*Z* d dl+m,Z, 	 d dl-m.Z. d dl/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5 d dl6m7Z7 n# e8$ r  ed          w xY w	 d dl9m:Z: n # e8$ r 	 d dl;m:Z: n# e8$ r dZ:Y nw xY wY nw xY wej<        ej=        ej>        ej?        ej@        ej=        ejA        ejB        dZC e jD        dd          ZEd ZFd ZGd ZH G d de          ZI G d d          ZJ G d d e0          ZKd! ZLd" ZMd# ZNd$ ZOd% ZPd& ZQd' ZRd( ZSd) ZTd* ZUdS )+    N)OrderedDictwraps)set_ai_pipeline_name)GEN_AI_ALLOWED_MESSAGE_ROLESnormalize_message_rolesset_data_normalizedget_start_span_functiontruncate_and_annotate_messages)OPSPANDATA)DidNotEnableIntegration)should_send_default_pii)
_get_valueset_span_errored)loggercapture_internal_exceptions)TYPE_CHECKING)AnyAsyncIteratorCallableDictIteratorListOptionalUnion)UUID)Span)AgentFinish)BaseCallbackHandlerBaseCallbackManager	Callbacksmanager)BaseMessage)	LLMResultzlangchain not installed)AgentExecutor)frequency_penaltyfunction_call
max_tokenspresence_penaltytemperature
tool_callstop_ktop_plangchain_agent_stack)defaultc                     t                                           }|g }n|                                }|                    |            t                               |           dS )z"Push an agent name onto the stack.N)_agent_stackgetcopyappendset)
agent_namestacks     q/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/langchain.py_push_agentr;   R   s\     E} 

	LLU    c                      t                                           } | rD|                                 } |                                 }t                               |            |S dS )z/Pop an agent name from the stack and return it.N)r3   r4   r5   popr7   )r9   r8   s     r:   
_pop_agentr?   _   sV     E 

YY[[
4r<   c                  L    t                                           } | r| d         S dS )z>Get the current agent name (top of stack) without removing it.N)r3   r4   )r9   s    r:   _get_current_agentrB   l   s,     E Ry4r<   c                   :    e Zd ZdZde ZddZed             ZdS )LangchainIntegration	langchainzauto.ai.TNc                 b    || _         || _        |t          j        dt          d           d S d S )NzsThe `max_spans` parameter of `LangchainIntegration` is deprecated and will be removed in version 3.0 of sentry-sdk.   )
stacklevel)include_prompts	max_spanswarningswarnDeprecationWarning)selfrI   rJ   s      r:   __init__zLangchainIntegration.__init__y   sN    ." MO"	      ! r<   c                      t          t          j                  t          _        t          Ht	          t          j                  t          _        t          t          j                  t          _        d S d S N)_wrap_configurer$   
_configurer'   _wrap_agent_executor_invokeinvoke_wrap_agent_executor_streamstream r<   r:   
setup_oncezLangchainIntegration.setup_once   sQ     -W-?@@$#>}?S#T#TM #>}?S#T#TM    %$r<   )TN)__name__
__module____qualname__
identifieroriginrO   staticmethodrY   rX   r<   r:   rD   rD   u   sZ        J$
$$F    U U \U U Ur<   rD   c                        e Zd ZdZg ZdZd ZdS )WatchedSpanNFc                     || _         d S rQ   )span)rN   rc   s     r:   rO   zWatchedSpan.__init__   s    			r<   )rZ   r[   r\   rc   childrenis_pipelinerO   rX   r<   r:   ra   ra      s2        DHK    r<   ra   c                   |    e Zd ZdZd Zd Zd Zd Zd Zd Z	dddd	d
Z
d Zd Zd Zd Zd Zd Zd Zd Zd ZdS )SentryLangchainCallbackz+Callback handler that creates Sentry spans.c                 H    t                      | _        || _        || _        d S rQ   )r   span_mapmax_span_map_sizerI   )rN   rj   rI   s      r:   rO   z SentryLangchainCallback.__init__   s#    #!2.r<   c                     | j         pt          | j                  | j         k    rU| j                            d          \  }}|                     ||           t          | j                  | j         k    Qd S d S d S )NF)last)rj   lenri   popitem
_exit_span)rN   run_idwatched_spans      r:   gc_span_mapz#SentryLangchainCallback.gc_span_map   s     !-dm$$t'==='+}'<'<%'<'H'H$f555 dm$$t'===== .-==r<   c                 >   t                      5  |r	|| j        vr	 d d d            d S | j        |         }|j        }t          |           t	          j        ||j                   |                    d d d            | j        |= d d d            d S # 1 swxY w Y   d S rQ   )r   ri   rc   r   
sentry_sdkcapture_exceptionscope__exit__)rN   rp   error	span_datarc   s        r:   _handle_errorz%SentryLangchainCallback._handle_error   s	   (** 	& 	& V4=88	& 	& 	& 	& 	& 	& 	& 	& f-I>DT"""(
;;;MM$d+++f%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   BABBBc                 X    |j         |j        d}|                    |j                   |S )Nrolecontent)typer~   updateadditional_kwargs)rN   messageparseds      r:   _normalize_langchain_messagez4SentryLangchainCallback._normalize_langchain_message   s-    !,7?CCg/000r<   c                 f   d }|rU| j                             |          }|r9t           |j        j        di |          }|j                            |           |t          t          j        di |          }|j        	                                 || j         |<   | 
                                 |S )NrX   )ri   r4   ra   rc   start_childrd   r6   rt   
start_span	__enter__rr   )rN   rp   	parent_idkwargsrq   parent_spans         r:   _create_spanz$SentryLangchainCallback._create_span   s     	:-++I66K :*+G;+;+G+Q+Q&+Q+QRR$++L999&z'<'F'Fv'F'FGGL##%%% ,fr<   c                 z    |j         rt          d            |j                            d d d            | j        |= d S rQ   )re   r   rc   rw   ri   )rN   ry   rp   s      r:   ro   z"SentryLangchainCallback._exit_span   sE      	' &&&dD111M&!!!r<   N)tagsparent_run_idmetadatac          	         t                      5  |s	 ddd           dS |                    di           }|                    |                    di                      |                    d          p+|                    d          p|                    d          pd}	|                     ||t          j        |                    d          pd	t          j        
          }
|
j        }|	r |	                    t          j        |	           |                    dd          }d|v r!|	                    t          j        d           n$d|v r |	                    t          j        d           t                                          D ]*\  }}||v r!||         t          ||||         d           +t!          ||                    d                     t#                      rV| j        rOd |D             }t'          j                    }t+          |||          }|t          |t          j        |d           ddd           dS # 1 swxY w Y   dS )zRun when LLM starts running.Ninvocation_paramsr   model
model_namemodel_id namezLangchain LLM callopr   r^   _type	anthropicopenaiFunpacktoolsc                 2    g | ]}t           j        d |ddS )text)r   r   r|   )r   USER).0prompts     r:   
<listcomp>z8SentryLangchainCallback.on_llm_start.<locals>.<listcomp>  sB     ' ' '
  != A,2F#C#C ' ' 'r<   )r   r4   r   r   r   GEN_AI_PIPELINErD   r^   rc   set_datar   GEN_AI_REQUEST_MODELGEN_AI_SYSTEMDATA_FIELDSitemsr	   _set_tools_on_spanr   rI   rt   get_current_scoper   GEN_AI_REQUEST_MESSAGES)rN   
serializedpromptsrp   r   r   r   r   
all_paramsr   rq   rc   ai_typekey	attributenormalized_messagesrv   messages_datas                     r:   on_llm_startz$SentryLangchainCallback.on_llm_start   s    )** ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	  $7<<JjnnXr::;;; w'' >>,//>>*-- 	   ,,%ZZ''?+?+2 -  L  $D 1  
 !nnWb11Gg%%h4kBBBBW$$h4h???"-"3"3"5"5 X XY*$$C)D'iCQVWWWWtZ^^G%<%<===&(( T-A ' '
 #*' ' '# #466 >'u! ! !,' 8%$	   m;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	 ;	s   IHII
Ic                   t                      5  |s	 ddd           dS |                    di           }|                    |                    di                      |                    d          p+|                    d          p|                    d          pd}|                     ||                    d          t          j        d	|                                 t          j        
          }|j	        }|
                    t          j        d           |r |
                    t          j        |           |                    dd          }	d|	v r!|
                    t          j        d           n$d|	v r |
                    t          j        d           t                      }
|
r |
                    t          j        |
           t"                                          D ]*\  }}||v r!||         t'          ||||         d           +t)          ||                    d                     t+                      r| j        rg }|D ]/}|D ]*}|                    |                     |                     +0t3          |          }t5          j                    }t9          |||          }|t'          |t          j        |d           ddd           dS # 1 swxY w Y   dS )z#Run when Chat Model starts running.Nr   r   r   r   r   r   r   zchat r   chatr   r   r   Fr   r   )r   r4   r   r   r   GEN_AI_CHATstriprD   r^   rc   r   r   GEN_AI_OPERATION_NAMEr   r   rB   GEN_AI_AGENT_NAMEr   r   r	   r   r   rI   r6   r   r   rt   r   r   r   )rN   r   messagesrp   r   r   r   rq   rc   r   r8   r   r   r   list_r   rv   r   s                     r:   on_chat_model_startz+SentryLangchainCallback.on_chat_model_start#  s|    )** =	 =	 =	 =	 =	 =	 =	 =	 =	 =	  $7<<JjnnXr::;;; w'' >>,//>>*-- 	   ,,

?++>$U__**,,+2 -  L  $DMM(8&AAA Dh;UCCC nnWb11Gg%%h4kBBBBW$$h4h???+--J Fh8*EEE"-"3"3"5"5 X XY*$$C)D'iCQVWWWWtZ^^G%<%<===&(( T-A &(#%  E#(  +22 ==gFF    '>>Q&R&R#"466 >'u! ! !,' 8%$	   q=	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	 =	s   KJ0KK!$K!c                x   t                      5  |r	|| j        vr	 ddd           dS | j        |         }|j        }t                      r1| j        r*t          |t          j        d |j        D                        t          ||           | 
                    ||           ddd           dS # 1 swxY w Y   dS )z!Run when Chat Model ends running.Nc                 &    g | ]}d  |D             S )c                     g | ]	}|j         
S rX   r   r   xs     r:   r   zHSentryLangchainCallback.on_chat_model_end.<locals>.<listcomp>.<listcomp>s      ,,,af,,,r<   rX   r   r   s     r:   r   z=SentryLangchainCallback.on_chat_model_end.<locals>.<listcomp>s  '    OOO,,e,,,OOOr<   )r   ri   rc   r   rI   r	   r   GEN_AI_RESPONSE_TEXTgenerations_record_token_usagero   )rN   responserp   r   ry   rc   s         r:   on_chat_model_endz)SentryLangchainCallback.on_chat_model_ende  s5    )** 	/ 	/ V4=88	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ f-I>D&(( T-A #1OO(:NOOO    h///OOIv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   B/A9B//B36B3c                   t                      5  |r	|| j        vr	 ddd           dS | j        |         }|j        }	 |j        d         d         }n# t          $ r d}Y nw xY w|	 |j                            d          }| |                    t          j	        |           n# t          $ r Y nw xY w	 |j                            d          }| |                    t          j        |           n# t          $ r Y nw xY w	 t                      rB| j        r;t          |j        dd          }	|	#|	g k    rt!          |t          j        |	d           n# t          $ r Y nw xY wt                      r1| j        r*t!          |t          j        d |j        D                        t'          ||           |                     ||           ddd           dS # 1 swxY w Y   dS )	zRun when LLM ends running.Nr   r   finish_reasonr-   Fr   c                 &    g | ]}d  |D             S )c                     g | ]	}|j         
S rX   r   r   s     r:   r   zASentryLangchainCallback.on_llm_end.<locals>.<listcomp>.<listcomp>  r   r<   rX   r   s     r:   r   z6SentryLangchainCallback.on_llm_end.<locals>.<listcomp>  r   r<   )r   ri   rc   r   
IndexErrorgeneration_infor4   r   r   GEN_AI_RESPONSE_MODELAttributeErrorGEN_AI_RESPONSE_FINISH_REASONSr   rI   getattrr   r	   GEN_AI_RESPONSE_TOOL_CALLSr   r   ro   )
rN   r   rp   r   ry   rc   
generationresponse_modelr   r-   s
             r:   
on_llm_endz"SentryLangchainCallback.on_llm_endy  s    )** 2	/ 2	/ V4=882	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ f-I>D"%1!4Q7

 " " "!


" %%/%?%C%CL%Q%QN%1h&DnUUU%   D$.$>$B$B?$S$SM$0$C]   &   D.00 T5I %,Z-?t%T%T
%1jB6F6F/ $ ( C *',	    &   D '(( T-A #1OO(:NOOO    h///OOIv...e2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/ 2	/s   GGAGA!G A!!G'<B$#G$
B1.G0B11G5<C21G2
C?<G>C??GAEG
E!G E!!A(GGGc                2    |                      ||           dS )zRun when LLM errors.Nrz   rN   rx   rp   r   s       r:   on_llm_errorz$SentryLangchainCallback.on_llm_error        	65)))))r<   c                2    |                      ||           dS )zRun when Chat Model errors.Nr   r   s       r:   on_chat_model_errorz+SentryLangchainCallback.on_chat_model_error  r   r<   c                h   t                      5  |r	|| j        vr	 d d d            d S | j        |         }|j        }t                      r9| j        r2t          |t          j        |j        	                                           | 
                    ||           d d d            d S # 1 swxY w Y   d S rQ   )r   ri   rc   r   rI   r	   r   r   return_valuesr   ro   )rN   finishrp   r   ry   rc   s         r:   on_agent_finishz'SentryLangchainCallback.on_agent_finish  s   (** 	/ 	/ V4=88	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ f-I>D&(( T-A #(79M9S9S9U9U   OOIv...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   B'A1B''B+.B+c          	      ^   t                      5  |s	 ddd           dS |                    d          p|                    d          pd}|                     ||                    d          t          j        d|                                 t          j                  }|j        }|	                    t          j        d           |	                    t          j        |           |                    d          }| |	                    t          j        |           t                      }	|	r |	                    t          j        |	           t!                      r7| j        r0t%          |t          j        |                    d	|g                     ddd           dS # 1 swxY w Y   dS )
zRun when tool starts running.Nr   r   r   zexecute_tool r   execute_tooldescriptioninputs)r   r4   r   r   GEN_AI_EXECUTE_TOOLr   rD   r^   rc   r   r   r   GEN_AI_TOOL_NAMEGEN_AI_TOOL_DESCRIPTIONrB   r   r   rI   r	   GEN_AI_TOOL_INPUT)
rN   r   	input_strrp   r   	tool_namerq   rc   tool_descriptionr8   s
             r:   on_tool_startz%SentryLangchainCallback.on_tool_start  s    )** 	 	 	 	 	 	 	 	 	 	 #v..J&**V2D2DJI,,

?++)0Y006688+2 -  L  $DMM(8.IIIMM(3Y???)~~m<<+h>@PQQQ+--J Fh8*EEE&(( T-A #.JJx)55  7	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   F"E5F""F&)F&c                :   t                      5  |r	|| j        vr	 ddd           dS | j        |         }|j        }t                      r"| j        rt          |t          j        |           |                     ||           ddd           dS # 1 swxY w Y   dS )zRun when tool ends running.N)	r   ri   rc   r   rI   r	   r   GEN_AI_TOOL_OUTPUTro   )rN   outputrp   r   ry   rc   s         r:   on_tool_endz#SentryLangchainCallback.on_tool_end  s    )** 
	/ 
	/ V4=88
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ f-I>D&(( OT-A O#D(*EvNNNOOIv...
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/ 
	/s   BABBBc                2    |                      ||           dS )zRun when tool errors.Nr   )rN   rx   rp   argsr   s        r:   on_tool_errorz%SentryLangchainCallback.on_tool_error  r   r<   )rZ   r[   r\   __doc__rO   rr   rz   r   r   ro   r   r   r   r   r   r   r   r   r   r   rX   r<   r:   rg   rg      s+       55/ / /6 6 6& & &    "" " " H H H H HT@ @ @D/ / /(5/ 5/ 5/n* * *
* * *
/ / / " " "H/ / /* * * * *r<   rg   c                     | sdS t          | d          pt          | d          }t          | d          pt          | d          }t          | d          }|||fS )NNNNprompt_tokensinput_tokenscompletion_tokensoutput_tokenstotal_tokensr   )token_usager   r  r  s       r:   _extract_tokensr    s      k?;; z^@ @L {,?@@ J_E EM k>::L44r<   c                     | sdS d}d}d}| D ]D}|D ]?}t          |          }t          |          \  }}}	|||ndz  }|||ndz  }||	|	ndz  }@E|dk    r|nd|dk    r|nd|dk    r|ndfS )z8Extract token usage from response.generations structure.r   r   N)_get_token_usager  )
r   total_inputtotal_outputtotal_totalgen_listgenr  r   r  r  s
             r:    _extract_tokens_from_generationsr    s       KLK K K 	K 	KC*3//K8G8T8T5L-<+C<<JK]-FMMAML<+C<<JKK	K #QD$q((d"QD r<   c                     d}t          | d          }||D ]}t          ||          }||c S t          | d          }||D ]}t          ||          }||c S |D ]}t          | |          }||c S dS )zM
    Check multiple paths to extract token usage from different objects.
    )usager  usage_metadatar   N
llm_outputr  )objpossible_namesr   r   r  r  s         r:   r  r  ,  s    
 @Ni((G" 	 	Dw--E  ! C..J" 	 	Dz400E  !   3%%LLL  4r<   c                 P   t          |          }|rt          |          \  }}}nt          |j                  \  }}}| |                     t
          j        |           | |                     t
          j        |           |"|                     t
          j        |           d S d S rQ   )	r  r  r  r   r   r   GEN_AI_USAGE_INPUT_TOKENSGEN_AI_USAGE_OUTPUT_TOKENSGEN_AI_USAGE_TOTAL_TOKENS)rc   r   r  r   r  r  s         r:   r   r   I  s    "8,,K 
4CK4P4P1m\\4T 5
 5
1m\ h8,GGG h9=IIIh8,GGGGG  r<   c                    t          | dd          }t          |dd          }t          |di           }t          | dd          p:t          |dd          p)|                    d          p|                    d          }|rt          |          dk    r|nd}	 d}t          |          dk    r|d                             d	          }||                    d	          }n# t          $ r Y nw xY w||fS )
z?
    Get the agent name and available tools for the agent.
    agentNrunnableconfigr   available_toolsr      run_name)r   r4   rm   	Exception)r  r   r   r  r  runnable_configr   r8   s           r:   _get_request_datar!  ]  s!   
 C$''Euj$//Hh"55OWd## 	25'4((	2w''	2 011	 
 7s5zzA~~EE4E
t99q==aZ00J(,,Z88J    s   AC" "
C/.C/c           	         | sdS t          | t          t          f          sdS g }| D ]2}	 t          |t                    r9d|v rmt          |d         t                    rR|d         }|                    d          |                    d          d}|d         r|                    |           nd|v rB|                    d          |                    d          d}|                    |           nP|                    d          p)|                    d          p|                    d          }|r@|                    ||                    d          p|                    d          d           nt          |d          rRt          |dd          t          |dd          pt          |dd          d}|d         r|                    |           nlt          |d	          r-|                    |j        t          |d
d          d           n/t          |          }|r|dk    r|                    |dd           ## t          $ r Y 0w xY w|r|ndS )z/Parse and simplify tools into a cleaner format.Nfunctionr   r   )r   r   r   function_namedescrZ   r   r   )
isinstancelisttupledictr4   r6   hasattrr   rZ   strr  )r   simplified_toolstoolfuncsimplified_toolr   tool_strs          r:   _simplify_langchain_toolsr1  y  s     tedE]++ t 3 32	$%% /U%%*T*5Et*L*L%
+D $ 0 0'+xx'>'>' 'O 'v. A(//@@@t^^ $ 0 0'+xx'>'>' 'O %++O<<<< (( 588K00588O44 
  (//(,/3xx/F/F 04#'88F#3#3    v&& U#D&$77#*4#E#E $3tVT22# #
 #6* =$++O<<<z** 
U '' $'.tY'E'E     t99 UB$++Xd,S,STTT 	 	 	H	  09T9s   HI


IIc                 n    |0t          |          }|r!t          | t          j        |d           dS dS dS )z9Set available tools data on a span if tools are provided.NFr   )r1  r	   r   GEN_AI_REQUEST_AVAILABLE_TOOLS)rc   r   r,  s      r:   r   r     sb     4U;; 	7 	      	 	r<   c                 B     t                     	 	 d fd	            }|S )Nc                 .   t          j                                        t                    }| 	| ||g|R i |S |pg }t	          |t
                    r|j        }nTt	          |t                    r|g}n;t	          |t                    r|}n#t          j
        d|            	| ||g|R i |S t	          |t
                    r|j        }nt	          |t                    r|}ng }t          d t          j        ||          D                       stt          |j        |j                  }t	          |t
                    r%|                                }g |j        ||_        n t	          |t                    r||g}ng ||} 	| ||g|R i |S )NzUnknown callback type: %sc              3   @   K   | ]}t          |t                    V  d S rQ   )r&  rg   )r   cbs     r:   	<genexpr>z9_wrap_configure.<locals>.new_configure.<locals>.<genexpr>  sA       
 
 r233
 
 
 
 
 
r<   )rt   
get_clientget_integrationrD   r&  r"   handlersr!   r'  r   debugany	itertoolschainrg   rJ   rI   r5   )
callback_manager_clsinheritable_callbackslocal_callbacksr   r   integrationcallbacks_listinheritable_callbacks_listsentry_handlerfs
            r:   new_configurez&_wrap_configure.<locals>.new_configure  sb    !+--==>RSS1$% 	  
    */R o':;; 	,5NN)<== 	-.NN.. 	,NNL4oFFF1$% 	  
    +-@AA 	,)>)G&&-t44 	,)>&&)+& 
 
on6PQQ
 
 
 
 
 	E 5%+ N /+>?? 	E"1"6"6"8"8,$-,",(( O-@AA E#2N"C"DO"D^"Dq !
 	
 
 

 
 
 	
r<   )NNr   )rG  rH  s   ` r:   rR   rR     sJ     1XX #K
 K
 K
 K
 K
 XK
Z r<   c                 <     t                      fd            }|S )Nc                 .   t          j                                        t                    }| | g|R i |S t	          | ||          \  }}t                      } |t          j        |rd| ndt          j                  5 }t          |           	 |r |
                    t          j        |           |
                    t          j        d           |
                    t          j        d           t          ||            | g|R i |}|                    d          }	|	ht#                      rZ|j        rSt'          |	g          }
t          j                    }t+          |
||          }|t-          |t          j        |d           |                    d          }|0t#                      r"|j        rt-          |t          j        |           |t3                       cd d d            S # t3                       w xY w# 1 swxY w Y   d S )Ninvoke_agent invoke_agentr   Finputr   r   )rt   r9  r:  rD   r!  r
   r   GEN_AI_INVOKE_AGENTr^   r;   r   r   r   r   GEN_AI_RESPONSE_STREAMINGr   r4   r   rI   r   r   r   r	   r   r   r?   )rN   r   r   rC  r8   r   start_span_functionrc   resultrM  r   rv   r   r   rG  s                 r:   
new_invokez/_wrap_agent_executor_invoke.<locals>.new_invoke   s    !+--==>RSS1T+D+++F+++-dD&AA
E577  %1;O----'.
 
 
 0	 
###* JMM("<jIIIh<nMMMh@%HHH"4/// 41$111&11

7++%/11 &#3 & +B5'*J*J'&8::E$B+T5% %M %0+ $<)#(	     H--&/11 '#3 ' (h.KVTTT a0	 0	 0	 0	 0	 0	 0	 0	` a0	 0	 0	 0	 0	 0	 0	 0	 0	 0	s+   H
EG7H
7HH

HHr   )rG  rR  s   ` r:   rT   rT     s7     1XX9 9 9 9 X9v r<   c                 <     t                      fd            }|S )Nc                    t          j                                        t                     | g|R i |S t	          | ||          \  }}t                      } |t          j        |rd| ndt          j                  	                                 t          |           |r                     t          j        |                               t          j        d                               t          j        d           t!          |           t#          |          dk    r|d                             d          nd }|ht'                      rZj        rSt+          |g          }t          j                    }t/          ||          }	|	t1          t          j        |	d	            | g|R i |}
|
fd
}fd}t5          t7          |
                    dk    r |            }
n
 |            }
|
S )NrK  rL  r   Tr  r   rM  Fr   c               3     K   d} 	 D ]}|V  	 |                     d          }n# t          $ r d }Y nw xY w|0t                      r"j        rt	          t
          j        |           n1# t          $ r$ t          j                    } t                      w xY wt                        j        |   d S # t                        j        |   w xY wNr   r   r4   r  r   rI   r	   r   r   sysexc_infor   r?   rw   rY  eventr   rC  old_iteratorrc   s      r:   new_iteratorzE_wrap_agent_executor_stream.<locals>.new_stream.<locals>.new_iterator  s     )H))    EKKKK""YYx00FF  " " "!FFF" &/11 '#3 ' (h.KVTTT   <>> &&& x(((( x(((s8   	A, ' A, 6A, 65A, +B7 ,.BB7 7Cc                   K   d} 	 2 3 d {V }|W V  6 	 |                     d          }n# t          $ r d }Y nw xY w|0t                      r"j        rt	          t
          j        |           n1# t          $ r$ t          j                    } t                      w xY wt                        j        |   d S # t                        j        |   w xY wrV  rW  rZ  s      r:   new_iterator_asynczK_wrap_agent_executor_stream.<locals>.new_stream.<locals>.new_iterator_async  s8     )H)#/              %KKKKK $0""YYx00FF  " " "!FFF" &/11 '#3 ' (h.KVTTT   <>> &&& x(((( x(((sA   A3 A3 . A3 =A3 =5A3 2B> 3.B!!B> >Cz<class 'async_generator'>)rt   r9  r:  rD   r!  r
   r   rN  r^   r   r;   r   r   r   r   rO  r   rm   r4   r   rI   r   r   r   r	   r   r+  r   )rN   r   r   r8   r   rP  rM  r   rv   r   rQ  r]  r_  rC  r\  rc   rG  s                @@@r:   
new_streamz/_wrap_agent_executor_stream.<locals>.new_streamb  sw    !+--==>RSS1T+D+++F+++-dD&AA
E577""%1;O----'.
 
 

 	J 	BMM(4jAAAh4nEEEh8$???4'''(+D		QQG$$$D')) +  #:5'"B"B022E:#T5 M (#4! 	    4)$)))&))	) 	) 	) 	) 	) 	) 	)6	) 	) 	) 	) 	) 	) 	)6 tF|| ;;;''))FF!\^^Fr<   r   )rG  r`  s   ` r:   rV   rV   _  s<     1XXm m m m Xm^ r<   )Vcontextvarsr>  rK   collectionsr   	functoolsr   rX  rt   sentry_sdk.ai.monitoringr   sentry_sdk.ai.utilsr   r   r	   r
   r   sentry_sdk.constsr   r   sentry_sdk.integrationsr   r   sentry_sdk.scoper   sentry_sdk.tracing_utilsr   r   sentry_sdk.utilsr   r   typingr   r   r   r   r   r   r   r   r   uuidr   sentry_sdk.tracingr   langchain_core.agentsr    langchain_core.callbacksr!   r"   r#   r$   langchain_core.messagesr%   langchain_core.outputsr&   ImportErrorlangchain_classic.agentsr'   langchain.agents GEN_AI_REQUEST_FREQUENCY_PENALTYr   GEN_AI_REQUEST_MAX_TOKENSGEN_AI_REQUEST_PRESENCE_PENALTYGEN_AI_REQUEST_TEMPERATUREGEN_AI_REQUEST_TOP_KGEN_AI_REQUEST_TOP_Pr   
ContextVarr3   r;   r?   rB   rD   ra   rg   r  r  r  r   r!  r1  r   rR   rT   rV   rX   r<   r:   <module>r|     s            # # # # # #       



     9 9 9 9 9 9              + * * * * * * * = = = = = = = = 4 4 4 4 4 4 A A A A A A A A @ @ @ @ @ @ @ @             (	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ''''''2111111            4333330000000 2 2 2
,0
1
1126666666   2222222   	 "B84 @65**	 	 &{%&=tLLL
 
 

 
 
  U U U U U; U U U6       f* f* f* f* f*1 f* f* f*R5 5 5   2  :H H H(  8?: ?: ?:D  Q Q Qh? ? ?Ds s s s ssB   B# #B48B? ?CCCCCCCC