
    lhT                         d dl Z d dlmZ d dlmZ d dlZd dlmZ d dlm	Z	 d dlm
Z
 d dlmZ er
d dlmZmZmZ  e
d	d
      Zd Zd Zd Z	 	 	 	 	 ddZy)    N)wraps)SPANDATA)
start_span)Span)
ContextVar)TYPE_CHECKING)OptionalCallableAnyai_pipeline_name)defaultc                 .    t         j                  |        y N)_ai_pipeline_nameset)names    j/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/ai/monitoring.pyset_ai_pipeline_namer      s    $    c                  *    t         j                         S r   )r   get r   r   get_ai_pipeline_namer      s      ""r   c                       fd}|S )Nc                       fd} fd}t        j                         r t               |      S  t               |      S )Nc            	      l   t         j                         }j                  d|rdnd      }t        d|d5 }|j                  di       j	                         D ]  \  }}|j                  ||        |j                  di       j	                         D ]  \  }}|j                  ||        |r1|j                  t        j                  |        | i |cd d d        S t         j                         	  | i |}	 t         j                  d        |cd d d        S # t        $ rc}t        j                  j                  |t        j                         j                  ddd	
      \  }	}
t        j                   |	|
       |d d }~ww xY w# t         j                  d        w xY w# 1 sw Y   y xY wNopzai.runzai.pipeline)r   r   sentry_tagssentry_dataai_monitoringF)typehandled)client_options	mechanism)hintr   r   r   popr   itemsset_tagset_datar   GEN_AI_PIPELINE_NAMEr   	Exception
sentry_sdkutilsevent_from_exception
get_clientoptionscapture_eventargskwargscurr_pipeliner   spankvreseeventr&   descriptionfspan_kwargss              r   sync_wrappedz1ai_track.<locals>.decorator.<locals>.sync_wrapped    s   -113M=xmTBCC{C t"JJ}b9??A 'DAqLLA&'"JJ}b9??A (DAqMM!Q'( MM("?"?Od-f-  &))+6400 *--d3-  % *&0&6&6&K&K+5+@+@+B+J+J/>5&Q 'L 't
 #00TBT)* *--d3+ sC   BF*"F*8D!F*!	F*AFFFF''F**F3c            	        K   t         j                         }j                  d|rdnd      }t        d|d5 }|j                  di       j	                         D ]  \  }}|j                  ||        |j                  di       j	                         D ]  \  }}|j                  ||        |r9|j                  t        j                  |        | i | d {   cd d d        S t         j                         	  | i | d {   }	 t         j                  d        |cd d d        S 7 T7 '# t        $ rc}t        j                  j                  |t        j                         j                  ddd	
      \  }	}
t        j                   |	|
       |d d }~ww xY w# t         j                  d        w xY w# 1 sw Y   y xY wwr   r'   r4   s              r   async_wrappedz2ai_track.<locals>.decorator.<locals>.async_wrapped=   s    -113M=xmTBCC{C t"JJ}b9??A 'DAqLLA&'"JJ}b9??A (DAqMM!Q'( MM("?"?O!"D!3F!33  &))+64$%t$6v$66 *--d3-  4 7$ *&0&6&6&K&K+5+@+@+B+J+J/>5&Q 'L 't
 #00TBT)* *--d3+ s~   9GB"G D3G "
G,G D7D5D7G )
G3G 5D77	F# AFF##F&&F==G  G	G)inspectiscoroutinefunctionr   )r?   rA   rC   r>   r@   s   `  r   	decoratorzai_track.<locals>.decorator   s?    	:	: &&q)58M**58L))r   r   )r>   r@   rF   s   `` r   ai_trackrG      s    ?*B r   c                    t               }|r | j                  t        j                  |       | | j                  t        j                  |       | | j                  t        j
                  |       | | j                  t        j                  |       | | j                  t        j                  |       |	||||z   }|!| j                  t        j                  |       y y r   )	r   r+   r   r,   GEN_AI_USAGE_INPUT_TOKENS GEN_AI_USAGE_INPUT_TOKENS_CACHEDGEN_AI_USAGE_OUTPUT_TOKENS$GEN_AI_USAGE_OUTPUT_TOKENS_REASONINGGEN_AI_USAGE_TOTAL_TOKENS)r8   input_tokensinput_tokens_cachedoutput_tokensoutput_tokens_reasoningtotal_tokensr   s          r   record_token_usagerS   b   s     ,-h335EFh88,G&55	

  h99=I*99#	

  8]=V#m3h88,G  r   )NNNNN)rD   	functoolsr   sentry_sdk.constsr   sentry_sdk.utilsr.   r   sentry_sdk.tracingr   r   typingr   r	   r
   r   r   r   r   rG   rS   r   r   r   <module>rY      s\      &  ! # '  ..14@  
#
CP  %Hr   