
    tniA$                     l   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$dZ<dd d!e=dd fd"Z>d%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                   J    e Zd ZdZde Zd
dd deddfdZedd	            ZdS )CohereIntegrationcoherezauto.ai.Tselfinclude_promptsreturnNc                     || _         d S )N)r0   )r/   r0   s     [/var/www/html/gpu-tools/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 r5   r3   
setup_oncezCohereIntegration.setup_onceN   sG    $Z_FFF
"6<00!+J,Bd!S!S!S
r5   )T)r1   N)	__name__
__module____qualname__
identifieroriginboolr4   staticmethodr>   r=   r5   r3   r-   r-   G   s{        J$
$$F/ /* /T /T / / / / T T T \T T Tr5   r-   excr   r1   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)rF   eventrL   s      r3   _capture_exceptionrR   U   sa    &!,..6#66  KE4
 U......r5   fCallable[..., Any]r7   c                 h     dddddt           dd fdt                     d fd            }|S )Nspanr   resr   include_piir1   c           	         |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_RESPONSESrZ   COLLECTED_PII_CHAT_RESP_ATTRSgetattrCOLLECTED_CHAT_RESP_ATTRSr[   r   r\   r]   r^   r_   AI_WARNINGSr`   )rV   rW   rX   pii_attrattrs        r3   collect_chat_response_fieldsz0_wrap_chat.<locals>.collect_chat_response_fieldsa   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r5   argsr   kwargsc                  z  	
 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!|	d	
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namerC   c                 l    t          | dd                                          t          | dd          dS )Nrole rm   rr   content)rd   lower)xs    r3   <lambda>z._wrap_chat.<locals>.new_chat.<locals>.<lambda>   s8    (/62(>(>(D(D(F(F+21i+D+D' ' r5   chat_historyuserrt   Fr1   Iterator[StreamedChatResponse]c               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rX   )r   
isinstancer   r   responser   r0   __exit__)rw   ri   integrationold_iteratorrV   s    r3   new_iteratorz2_wrap_chat.<locals>.new_chat.<locals>.new_iterator   s     466 $ $!- 
$ 
$A)!-?@@ "J !#@E E " != <$($%J0G0I0I 1D(3(C	!" !" !" !" #$GGGG
$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ MM$d33333s   AA99A= A=r}   unknown_responseT)r1   r{   )rM   rN   get_integrationr-   r~   getstr
start_spanr   OPCOHERE_CHAT_COMPLETIONS_CREATErC   	__enter__	ExceptionrR   r   r   r   r0   r   r   AI_INPUT_MESSAGESlistmapCOLLECTED_PII_CHAT_PARAMSitemsCOLLECTED_CHAT_PARAMSAI_STREAMINGr   )rj   rk   rm   rW   er   vr   r   r   rV   ri   rS   r7   s           @@@r3   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+++	
 )** 8	 8	&(( @[-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 4  $|~~Y8	 8	 8	 8	 8	 8	 8	 8	Z C!899 
0,, 7 9 9 !4#3	    dD$////#D*<dCCCdD$///q8	 8	 8	 8	 8	 8	 8	 8	 8	 8	 8	 8	 8	 8	 8	 8	 8	 8	s2    C	 	
D)C<<DDJ0,A7J00J47J4rj   r   rk   r   r1   r   )rD   r   )rS   r7   r   ri   s   `` @r3   r8   r8   `   s    !S!S4!SCG!S	!S !S !S !SF 1XXQ Q Q Q Q Q Q XQf Or5   c                 >     t                     d fd            }|S )Nrj   r   rk   r1   c                  $   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 Creationrn   textsr   r   r[   r\   r]   )r]   total_tokens)rM   rN   r   r-   r   r   r   COHERE_EMBEDDINGS_CREATErC   r   r0   r~   r   r   r   AI_TEXTSr   lenr   AI_MODEL_IDr   rR   ra   r[   r\   r   r]   )rj   rk   r   rV   rW   r   rS   s         r3   	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   )rS   r   s   ` r3   r:   r:      s:    
1XX) ) ) ) ) X)V r5   )rF   r   r1   N)rS   rT   r1   rT   )@	functoolsr   rM   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_REASONre   AI_CITATIONSAI_DOCUMENTSAI_SEARCH_QUERIESAI_SEARCH_RESULTSAI_TOOL_CALLSrc   r-   rR   rD   r8   r:   r=   r5   r3   <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/ / / /x& x4 x<P x x x xv- - - - - -s   A5 5B
B BB