
    `i              	       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mZ d dl	m
Z
 d dlmZ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  ed	eed
ef         ed
ee         f         f                   Z edd          Zd"dZd#dZdeddddfdZ	 	 	 	 	 	 d$	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d%d!ZdS )&    N)wraps)SPANDATA)
start_span)Span)
ContextVarreraisecapture_internal_exceptions)TYPE_CHECKING)OptionalCallable	AwaitableAnyUnionTypeVarF.)boundai_pipeline_name)defaultnameOptional[str]returnc                 :    t                               |            d S N)_ai_pipeline_nameset)r   s    l/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sentry_sdk/ai/monitoring.pyset_ai_pipeline_namer      s    $    c                  4    t                                           S r   )r   get r   r   get_ai_pipeline_namer"      s      """r   descriptionspan_kwargsr   zCallable[[F], F]c                      d fd}|S )Nfr   r   c                      d fd}d fd}t          j                   r t                     |          S  t                     |          S )Nargsr   kwargsr   c            
      R   t                                           }                    d|rdnd          }t          d|d5 }|                    di                                           D ]\  }}|                    ||           |                    di                                           D ]\  }}|                    ||           |r4|                    t          j        |            | i |cd d d            S t           	                               	  | i |}n# t          $ r}t          j                    }	t                      5  t          j                            |t          j                    j        ddd	
          \  }
}t          j        |
|           d d d            n# 1 swxY w Y   t)          |	  Y d }~nd }~ww xY wt           	                    d            n# t           	                    d            w xY w|cd d d            S # 1 swxY w Y   d S 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sysexc_infor	   
sentry_sdkutilsevent_from_exception
get_clientoptionscapture_eventr   r(   r)   curr_pipeliner,   spankvreser=   eventr4   r#   r&   r$   s               r   sync_wrappedz1ai_track.<locals>.decorator.<locals>.sync_wrapped   s   -1133M='SxxmTTBCCC{CC t"JJ}b99??AA ' 'DAqLLA&&&&"JJ}b99??AA ( (DAqMM!Q''''  MM("?OOO1d-f--        &))+6664a000$ 	+ 	+ 	+#&<>>8:: G G*4*:*O*O !/9/D/F/F/N3Bu*U*U +P + +KE4
 '4UFFFFG G G G G G G G G G G G G G G  *******	+ *--d3333)--d33331                 sz   B2HHD'&G/'
G1!GAF3'G3F77G:F7;GG/GG/H/HHH #H c            
      n  K   t                                           }                    d|rdnd          }t          d|d5 }|                    di                                           D ]\  }}|                    ||           |                    di                                           D ]\  }}|                    ||           |r:|                    t          j        |            | i | d {V cd d d            S t           	                               	  | i | d {V }n# t          $ r}t          j                    }	t                      5  t          j                            |t          j                    j        ddd	
          \  }
}t          j        |
|           d d d            n# 1 swxY w Y   t)          |	  Y d }~nd }~ww xY wt           	                    d            n# t           	                    d            w xY w|cd d d            S # 1 swxY w Y   d S r+   r5   rD   s               r   async_wrappedz2ai_track.<locals>.decorator.<locals>.async_wrapped=   s,     -1133M='SxxmTTBCCC{CC t"JJ}b99??AA ' 'DAqLLA&&&&"JJ}b99??AA ( (DAqMM!Q''''  MM("?OOO!"D!3F!3!3333333        &))+6664$%At$6v$6$6666666$ 	+ 	+ 	+#&<>>8:: G G*4*:*O*O !/9/D/F/F/N3Bu*U*U +P + +KE4
 '4UFFFFG G G G G G G G G G G G G G G  *******	+ *--d3333)--d33331                 sz   B8H*H*&D54G=5
G?!G AG5GGGG	GG=GG="H*=HH**H.1H.)r(   r   r)   r   r   r   )inspectiscoroutinefunctionr   )r&   rL   rN   r#   r$   s   `  r   	decoratorzai_track.<locals>.decorator   s    	 	 	 	 	 	 	 	<	 	 	 	 	 	 	 	< &q)) 	*588M***588L)))r   )r&   r   r   r   r!   )r#   r$   rQ   s   `` r   ai_trackrR      s7    @* @* @* @* @* @* @*D r   rF   r   input_tokensOptional[int]input_tokens_cachedinput_tokens_cache_writeoutput_tokensoutput_tokens_reasoningtotal_tokensc                    t                      }|r |                     t          j        |           | |                     t          j        |           | |                     t          j        |           | |                     t          j        |           | |                     t          j        |           | |                     t          j        |           |	||||z   }|"|                     t          j	        |           d S d S r   )
r"   r9   r   r:   GEN_AI_USAGE_INPUT_TOKENS GEN_AI_USAGE_INPUT_TOKENS_CACHED%GEN_AI_USAGE_INPUT_TOKENS_CACHE_WRITEGEN_AI_USAGE_OUTPUT_TOKENS$GEN_AI_USAGE_OUTPUT_TOKENS_REASONINGGEN_AI_USAGE_TOTAL_TOKENS)rF   rS   rU   rV   rW   rX   rY   r   s           r   record_token_usagera   c   s%    ,-- Gh35EFFFh8,GGG&5	
 	
 	

  +:$	
 	
 	

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

  8]=V#m3h8,GGGGG  r   )r   r   r   N)r   r   )NNNNNN)rF   r   rS   rT   rU   rT   rV   rT   rW   rT   rX   rT   rY   rT   r   N)rO   r<   	functoolsr   sentry_sdk.constsr   sentry_sdk.utilsr>   r   sentry_sdk.tracingr   r   r   r	   typingr
   r   r   r   r   r   r   r   r   r   r"   strrR   ra   r!   r   r   <module>rh      s    



       & & & & & &     ! ! ! ! ! ! # # # # # # M M M M M M M M M M             UIIIIIIIIIIIIIIII5#s(!3Xc9S>>Q5R!RSTTTAJ14@@@        # # # #C# Ce C8J C C C CP %)+/04%)/3$(*H
*H!*H )*H .	*H
 #*H -*H "*H 
*H *H *H *H *H *Hr   