
    lhj$                        d dl mZ d dlm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 d dlmZ d d	l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 d dlmZ d dlmZmZ erd dlm Z  	 d dlm"Z" ejH                  ejJ                  ejL                  ejN                  ejP                  ejR                  ejT                  dZ+ejX                  ejZ                  dZ.ej^                  ej`                  ejb                  dZ2ejf                  ejh                  ejj                  ejl                  ejn                  dZ8 G d de      Z9d Z:d Z;d Z<y	# e!$ r	  ed      w xY w# e!$ r	 d dlm#Z" Y w xY w)    wraps)consts)record_token_usage)SPANDATA)set_data_normalized)TYPE_CHECKING)AnyCallableIterator)SpanN)should_send_default_pii)DidNotEnableIntegration)capture_internal_exceptionsevent_from_exception)Client)
BaseCohere)ChatStreamEndEventNonStreamedChatResponse)StreamedChatResponsezCohere not installed)StreamEndStreamedChatResponse)StreamedChatResponse_StreamEnd)modelkpseedfrequency_penaltypresence_penaltyraw_prompting)toolspreamble)generation_idis_search_requiredfinish_reason)	citations	documentssearch_queriessearch_results
tool_callsc                   2    e Zd ZdZde ZddZed        Zy)CohereIntegrationcoherezauto.ai.c                     || _         y )N)include_prompts)selfr/   s     p/var/www/pru.catia.catastroantioquia-mas.com/tasa/lib/python3.12/site-packages/sentry_sdk/integrations/cohere.py__init__zCohereIntegration.__init__I   s
    .    c                      t        t        j                  d      t        _        t        t        j
                        t        _        t        t        j                  d      t        _        y )NF)	streamingT)
_wrap_chatr   chat_wrap_embedr   embedchat_stream r3   r1   
setup_oncezCohereIntegration.setup_onceM   s;     %Z__F
"6<<0!+J,B,Bd!S
r3   N)T)__name__
__module____qualname__
identifieroriginr2   staticmethodr<   r;   r3   r1   r,   r,   E   s.    J
|$F/ T Tr3   r,   c                     t        | t        j                         j                  ddd      \  }}t        j                  ||       y )Nr-   F)typehandled)client_options	mechanism)hint)r   
sentry_sdk
get_clientoptionscapture_event)exceventrH   s      r1   _capture_exceptionrO   U   s?    &!,,.66#6KE4
 U.r3   c                 <     d t                fd       }|S )Nc           	      ^   |rdt        |d      r&t        | t        j                  |j                  g       t
        D ])  }t        ||      st        | d|z   t        ||             + t        D ])  }t        ||      st        | d|z   t        ||             + t        |d      rt        |j                  d      rKt        | |j                  j                  j                  |j                  j                  j                         n`t        |j                  d      rJt        | |j                  j                  j                  |j                  j                  j                         t        |j                  d      r0t        | t        j                  |j                  j                         y y y )Ntextzai.metabilled_units)input_tokensoutput_tokenstokenswarnings)hasattrr   r   AI_RESPONSESrR   COLLECTED_PII_CHAT_RESP_ATTRSgetattrCOLLECTED_CHAT_RESP_ATTRSrS   r   rT   rU   rV   rW   AI_WARNINGSrX   )spanresinclude_piipii_attrattrs        r1   collect_chat_response_fieldsz0_wrap_chat.<locals>.collect_chat_response_fieldsb   sS   sF##))XXJ
 : X3)'eh.>X@VWX . 	LDsD!#D%$,T8JK	L 3sxx0"!$!6!6!C!C"%(("7"7"E"E
 8,"!$!=!="%((//"?"? sxx,#D(*>*>@Q@QR -  r3   c                    	
 t        j                         j                  t              #d|vst	        |j                  d      t              s | i |S |j                  d      }t        j                  t        j                  j                  dt        j                        

j                          	  | i |}t!               5  t#               rj$                  rwt'        
t(        j*                  t-        t/        d |j                  dg                   d|dgz          t0        j3                         D ]  \  }}||v st'        
|||           t4        j3                         D ]  \  }}||v st'        
|||           t'        
t(        j6                  d       r|		
fd	} |       cd d d        S t	        |t8              r5 
|t#               xr j$                  
       
j                  d d d        n t'        
dd       
j                  d d d        |cd d d        S # t        $ r&}t        |       
j                  d d d        |d d }~ww xY w# 1 sw Y   y xY w)Nmessagezcohere.client.ChatopnamerA   c                 T    t        | dd      j                         t        | dd      dS )Nrole rf   rk   content)r\   lower)xs    r1   <lambda>z._wrap_chat.<locals>.new_chat.<locals>.<lambda>   s*    (/62(>(D(D(F+21i+D' r3   chat_historyuserrm   Fc               3      K   t               5  D ]Q  } t        | t              st        | t              r+ | j                  t               xr j                         |  S 	 d d d        j                  d d d        y # 1 sw Y   xY ww)Nra   )r   
isinstancer   r   responser   r/   __exit__)rp   rd   integrationold_iteratorr_   s    r1   new_iteratorz2_wrap_chat.<locals>.new_chat.<locals>.new_iterator   s      56 $!- 
$A)!-?@J !#@E !=$($%JJ0G0I 1D(3(C(C	!" #$G
$$ MM$d3$ $s   BAB&BBBru   unknown_responseT)rI   rJ   get_integrationr,   rv   getstr
start_spanr   OPCOHERE_CHAT_COMPLETIONS_CREATErA   	__enter__	ExceptionrO   rx   r   r   r/   r   r   AI_INPUT_MESSAGESlistmapCOLLECTED_PII_CHAT_PARAMSitemsCOLLECTED_CHAT_PARAMSAI_STREAMINGr   )argskwargsrf   r`   er   vr{   ry   rz   r_   rd   fr5   s           @@@r1   new_chatz_wrap_chat.<locals>.new_chat   sX    !++-==>OP &fjj3S9d%f%%**Y'$$yy77%$++

 		T$V$C )* :	&([-H-H#.. #JJ~r: !'7;<	= 6;;= @DAqF{+D!VAY?@ .335 <1;'a;<  h&;&;UC"4$ $~]:	 :	^ C!89, 7 9 !4#33	 dD$/#D*<dCdD$/u:	 :	  	q!MM$d+	
:	 :	s8   9H1 A;I#0I#8?I#A&I#1	I :!II #I,r   )r   r5   r   rd   s   `` @r1   r6   r6   _   s,     SD 1XT Tl Or3   c                 .     t                fd       }|S )Nc                     t        j                         j                  t              }| | i |S t        j                  t
        j                  j                  dt        j                        5 }d|v rt               r|j                  rt        |d   t              r t        |t        j                  |d   g       nXt        |d   t               rEt#        |d         dkD  r4t        |d   d   t              rt        |t        j$                  |d          d|v rt        |t        j&                  |d          	  | i |}t-        |d      rt-        |j.                  d      rjt-        |j.                  j0                  d      rJt3        ||j.                  j0                  j4                  |j.                  j0                  j4                  	       |cd d d        S # t(        $ r}t+        |       |d d }~ww xY w# 1 sw Y   y xY w)
NzCohere Embedding Creationrg   textsr   r   rS   rT   rU   )rU   total_tokens)rI   rJ   r}   r,   r   r   r   COHERE_EMBEDDINGS_CREATErA   r   r/   rv   r   r   r   AI_TEXTSr   lenr   AI_MODEL_IDr   rO   rY   rS   rT   r   rU   )r   r   ry   r_   r`   r   r   s         r1   	new_embedz_wrap_embed.<locals>.new_embed   s    !++-==>OPd%f%%""yy11,$++
 $	 & ')k.I.IfWos3'h.?.?&/ARSvg5F7O,q0"6'?1#5s;'h88&/ & #D(*>*>wP"((
 V$CHHn5CHH11>B"!$!6!6!C!C!$!6!6!C!C
 I$	 $	.  ""1%T!"/$	 $	s2   1CG8:GBG8	G5"G00G55G88Hr   )r   r   s   ` r1   r8   r8      s$     1X* *X r3   )=	functoolsr   rI   r   sentry_sdk.ai.monitoringr   sentry_sdk.constsr   sentry_sdk.ai.utilsr   typingr	   r
   r   r   sentry_sdk.tracingr   sentry_sdk.scoper   sentry_sdk.integrationsr   r   sentry_sdk.utilsr   r   cohere.clientr   cohere.base_clientr   r-   r   r   r   ImportErrorr   r   r   AI_TOP_KAI_TOP_PAI_SEEDAI_FREQUENCY_PENALTYAI_PRESENCE_PENALTYAI_RAW_PROMPTINGr   AI_TOOLSAI_PREAMBLEr   AI_GENERATION_IDAI_SEARCH_REQUIREDAI_FINISH_REASONr]   AI_CITATIONSAI_DOCUMENTSAI_SEARCH_QUERIESAI_SEARCH_RESULTSAI_TOOL_CALLSr[   r,   rO   r6   r8   r;   r3   r1   <module>r      sc     7 & 3  ..'  4 = N/$-
 /W4 !!						!66 44..  $$  .."55..  &&&&0000((! T T /|~0C  /
-
../  WVWs   E /E" E"E0/E0