
    fi$                     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	 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" n# e#$ r  ed          w xY w	 d dlm$Z$ n# e#$ r	 d dlm%Z$ Y nw xY wej&        ej'        ej(        ej)        ej*        ej+        ej,        dZ-ej.        ej/        dZ0ej1        ej2        ej3        dZ4ej5        ej6        ej7        ej8        ej9        dZ: G d de          Z;d Z<d Z=d Z>d
S )    wraps)consts)record_token_usage)SPANDATA)set_data_normalized)TYPE_CHECKING)set_span_errored)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                   :    e Zd ZdZde ZddZed             ZdS )CohereIntegrationcoherezauto.ai.Tc                     || _         d S )N)include_prompts)selfr0   s     n/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/sentry_sdk/integrations/cohere.py__init__zCohereIntegration.__init__K   s    .    c                      t          t          j        d          t          _        t          t          j                  t          _        t          t          j        d          t          _        d S )NF)	streamingT)
_wrap_chatr   chat_wrap_embedr   embedchat_stream r4   r2   
setup_oncezCohereIntegration.setup_onceO   sI     %Z_FFF
"6<00!+J,Bd!S!S!S
r4   N)T)__name__
__module____qualname__
identifieroriginr3   staticmethodr=   r<   r4   r2   r-   r-   G   sZ        J$
$$F/ / / / T T \T T Tr4   r-   c                     t                       t          | t          j                    j        ddd          \  }}t          j        ||           d S )Nr.   F)typehandled)client_options	mechanism)hint)r
   r   
sentry_sdk
get_clientoptionscapture_event)exceventrI   s      r2   _capture_exceptionrP   W   sa    &!,..6#66  KE4
 U......r4   c                 J     d t                      fd            }|S )Nc           	         |rmt          |d          r!t          | t          j        |j        g           t
          D ]4}t          ||          r"t          | d|z   t          ||                     5t          D ]4}t          ||          r"t          | d|z   t          ||                     5t          |d          rt          |j        d          r1t          | |j        j
        j        |j        j
        j                   nEt          |j        d          r0t          | |j        j        j        |j        j        j                   t          |j        d          r)t          | t          j        |j        j                   d S d S d S )Ntextzai.metabilled_units)input_tokensoutput_tokenstokenswarnings)hasattrr   r   AI_RESPONSESrS   COLLECTED_PII_CHAT_RESP_ATTRSgetattrCOLLECTED_CHAT_RESP_ATTRSrT   r   rU   rV   rW   rX   AI_WARNINGSrY   )spanresinclude_piipii_attrattrs        r2   collect_chat_response_fieldsz0_wrap_chat.<locals>.collect_chat_response_fieldsf   s    		XsF## #)XJ  
 : X X3)) X'eh.>X@V@VWWW- 	L 	LDsD!! L#D%$,T8J8JKKK3 	Ssx00 "!$!6!C"%("7"E    
 8,, "!$!="%(/"?    sx,, S#D(*>@QRRRRR	S 	SS Sr4   c                  x  	
 t          j                                        t                    ,d|vs(t	          |                    d          t                    s | i |S |                    d          }t          j        t          j	        j
        dt          j                  

                                 	  | i |}n;# t          $ r.}t          |           
                    d d d            |d d }~ww xY wt!                      5  t#                      rj        rt'          
t(          j        t-          t/          d |                    dg                               d|dgz              t0                                          D ] \  }}||v rt'          
|||                    !t4                                          D ] \  }}||v rt'          
|||                    !t'          
t(          j        d           r |		
fd	} |            cd d d            S t	          |t8                    r9 
|t#                      oj        
           
                    d d d            n(t'          
dd           
                    d d d            |cd d d            S # 1 swxY w Y   d S )Nmessagezcohere.client.ChatopnamerB   c                 l    t          | dd                                          t          | dd          dS )Nrole rg   rl   content)r]   lower)xs    r2   <lambda>z._wrap_chat.<locals>.new_chat.<locals>.<lambda>   s8    (/62(>(>(D(D(F(F+21i+D+D' ' r4   chat_historyuserrn   Fc               3   :  K   t                      5  D ]V} t          | t                    st          | t                    r& | j        t                      oj                   | V  W	 d d d            n# 1 swxY w Y                       d d d            d S )Nrb   )r   
isinstancer   r   responser   r0   __exit__)rq   re   integrationold_iteratorr`   s    r2   new_iteratorz2_wrap_chat.<locals>.new_chat.<locals>.new_iterator   s      566 $ $!- 
$ 
$A)!-?@@ "J !#@E E " != <$($%J0G0I0I 1D(3(C	!" !" !" !" #$GGGG
$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ MM$d33333s   AA99A= A=rv   unknown_responseT)rJ   rK   get_integrationr-   rw   getstr
start_spanr   OPCOHERE_CHAT_COMPLETIONS_CREATErB   	__enter__	ExceptionrP   ry   r   r   r0   r   r   AI_INPUT_MESSAGESlistmapCOLLECTED_PII_CHAT_PARAMSitemsCOLLECTED_CHAT_PARAMSAI_STREAMINGr   )argskwargsrg   ra   er   vr|   rz   r{   r`   re   fr6   s           @@@r2   new_chatz_wrap_chat.<locals>.new_chat   s    !+--==>OPP &&fjj33S99 ' 1d%f%%%**Y''$y7%$+
 
 

 		!T$V$$CC 	 	 	q!!!MM$d+++	
 )** :	 :	&(( @[-H @#.  #JJ~r::   !'7;;<	=   6;;== @ @DAqF{{+D!VAY???-3355 < <1;;'a;;;h&;UCCC  0"4 4 4 4 4 4 4 4$ $|~~]:	 :	 :	 :	 :	 :	 :	 :	^ C!899 
0,, 7 9 9 !4#3	    dD$////#D*<dCCCdD$///u:	 :	 :	 :	 :	 :	 :	 :	 :	 :	 :	 :	 :	 :	 :	 :	 :	 :	s2    C	 	
D)C<<DDJ/+A7J//J36J3r   )r   r6   r   re   s   `` @r2   r7   r7   c   s\     S  S  SD 1XXT T T T T T XTl Or4   c                 <     t                      fd            }|S )Nc                  $   t          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           nvt          |d         t                     r[t#          |d                   dk    rBt          |d         d         t                    r!t          |t          j        |d                    d|v r!t          |t          j        |d                    	  | i |}n$# t(          $ r}t+          |           |d d }~ww xY wt-          |d          r_t-          |j        d          rJt-          |j        j        d          r0t3          ||j        j        j        |j        j        j        	           |cd d d            S # 1 swxY w Y   d S )
NzCohere Embedding Creationrh   textsr   r   rT   rU   rV   )rV   total_tokens)rJ   rK   r~   r-   r   r   r   COHERE_EMBEDDINGS_CREATErB   r   r0   rw   r   r   r   AI_TEXTSr   lenr   AI_MODEL_IDr   rP   rZ   rT   rU   r   rV   )r   r   rz   r`   ra   r   r   s         r2   	new_embedz_wrap_embed.<locals>.new_embed   s~    !+--==>OPP1d%f%%%"y1,$+
 
 
 $	 &  ')) !.9.I ! fWos33 	'h.?&/ARSSSSvg55F7O,,q00"6'?1#5s;; 1 (h8&/   &  #D(*>wPPP"a((( " " ""1%%%T!" V$$	CHn55	 CH1>BB	
 #!$!6!C!$!6!C   
 I$	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	 $	s8   'C3HE$#H$
F.F  FA3HH	H	r   )r   r   s   ` r2   r9   r9      s7     1XX* * * * X*X r4   )?	functoolsr   rJ   r   sentry_sdk.ai.monitoringr   sentry_sdk.constsr   sentry_sdk.ai.utilsr   typingr	   sentry_sdk.tracing_utilsr
   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-   rP   r7   r9   r<   r4   r2   <module>r      s               7 7 7 7 7 7 & & & & & & 3 3 3 3 3 3             5 5 5 5 5 5 (..........''''''     4 4 4 4 4 4 = = = = = = = = N N N N N N N N/$$$$$$------       
  0////// / / /
,-
.
../W4444444 W W WVVVVVVVVW
 !				!6 4.   $   ."5.   &&00(! ! T T T T T T T T 	/ 	/ 	/| | |~0 0 0 0 0s   A5 5B
B BB