
    `i%                     x   d dl 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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j0        ej1        dZ2ej3        ej4        ej5        dZ6ej7        ej8        ej9        ej:        ej;        dZ< G d de          Z=d$dZ>dd d!e?dd fd"Z@d%d#ZAdS )&    Nwraps)consts)record_token_usage)SPANDATA)set_data_normalized)TYPE_CHECKING)set_span_errored)AnyCallableIterator)Span)should_send_default_pii)DidNotEnableIntegration)capture_internal_exceptionsevent_from_exceptionreraise)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)r1   )r0   r1   s     r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sentry_sdk/integrations/cohere.py__init__zCohereIntegration.__init__L   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 r6   r4   
setup_oncezCohereIntegration.setup_onceO   sG    $Z_FFF
"6<00!+J,Bd!S!S!S
r6   )T)r2   N)	__name__
__module____qualname__
identifieroriginboolr5   staticmethodr?   r>   r6   r4   r.   r.   H   s{        J$
$$F/ /* /T /T / / / / T T T \T T Tr6   r.   excr   r2   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)rG   eventrM   s      r4   _capture_exceptionrS   V   sa    &!,..6#66  KE4
 U......r6   fCallable[..., Any]r8   c                 h     dddddt           dd fdt                     d fd            }|S )Nspanr   resr   include_piir2   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_RESPONSESr[   COLLECTED_PII_CHAT_RESP_ATTRSgetattrCOLLECTED_CHAT_RESP_ATTRSr\   r   r]   r^   r_   r`   AI_WARNINGSra   )rW   rX   rY   pii_attrattrs        r4   collect_chat_response_fieldsz0_wrap_chat.<locals>.collect_chat_response_fieldsb   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r6   argsr   kwargsc                    	
 t          j                                        t                    		,d|vs(t	          |                    d          t                    s | i |S |                    d          }t          j        t          j	        j
        dt          j                                                   	  | i |}n# t          $ rr}t          j                    }t!                      5  t#          |                               d d d            d d d            n# 1 swxY w Y   t'          |  Y d }~nd }~ww xY wt!                      5  t)                      r	j        rt-          t.          j        t3          t5          d |                    dg                               d|dgz              t6                                          D ] \  }}||v rt-          |||                    !t:                                          D ] \  }}||v rt-          |||                    !t-          t.          j        d           r!|
d	
fd} |            cd d d            S t	          |t>                    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namerD   c                 l    t          | dd                                          t          | dd          dS )Nrole rn   rs   content)re   lower)xs    r4   <lambda>z._wrap_chat.<locals>.new_chat.<locals>.<lambda>   s8    (/62(>(>(D(D(F(F+21i+D+D' ' r6   chat_historyuserru   Fr2   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rY   )r   
isinstancer   r   responser   r1   __exit__)rx   rj   integrationold_iteratorrW   s    r4   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)r2   r|   ) rN   rO   get_integrationr.   r   getstr
start_spanr   OPCOHERE_CHAT_COMPLETIONS_CREATErD   	__enter__	Exceptionsysexc_infor   rS   r   r   r   r1   r   r   AI_INPUT_MESSAGESlistmapCOLLECTED_PII_CHAT_PARAMSitemsCOLLECTED_CHAT_PARAMSAI_STREAMINGr   )rk   rl   rn   rX   er   r   vr   r   r   rW   rj   rT   r8   s            @@@r4   new_chatz_wrap_chat.<locals>.new_chat   s&    +--==>OPP &&fjj33S99 ' 1d%f%%%**Y''$y7%$+
 
 

 		!T$V$$CC 	 	 	|~~H,.. 0 0"1%%%dD$///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X	 )** 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	sV    C	 	
E!E 4'D'E 'D+	+E .D+	/E  EDK40A7K44K8;K8rk   r   rl   r   r2   r   )rE   r   )rT   r8   r   rj   s   `` @r4   r9   r9   a   s    !S!S4!SCG!S	!S !S !S !SF 1XXS S S S S S S XSj Or6   c                 >     t                     d fd            }|S )Nrk   r   rl   r2   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 |}nh# t(          $ r[}t+          j                    }t/                      5  t1          |           d d d            n# 1 swxY w Y   t3          |  Y d }~nd }~ww xY wt5          |d          r_t5          |j        d          rJt5          |j        j        d          r0t;          ||j        j        j        |j        j        j        	           |cd d d            S # 1 swxY w Y   d S )
NzCohere Embedding Creationro   textsr   r   r\   r]   r^   )r^   total_tokens)rN   rO   r   r.   r   r   r   COHERE_EMBEDDINGS_CREATErD   r   r1   r   r   r   r   AI_TEXTSr   lenr   AI_MODEL_IDr   r   r   r   rS   r   rb   r\   r]   r   r^   )rk   rl   r   rW   rX   r   r   rT   s          r4   	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((( # # #<>>022 * *&q)))* * * * * * * * * * * * * * *"""""""	# V$$	CHn55	 CH1>BB	
 #!$!6!C!$!6!C   
 M&	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	 &	sb   'C3I	E$#I	$
G	.!GF+G+F//G2F/3G?I	G		A3I		IIr   r   )rT   r   s   ` r4   r;   r;      s:    
1XX+ + + + + X+Z r6   )rG   r   r2   N)rT   rU   r2   rU   )Br   	functoolsr   rN   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   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_REASONrf   AI_CITATIONSAI_DOCUMENTSAI_SEARCH_QUERIESAI_SEARCH_RESULTSAI_TOOL_CALLSrd   r.   rS   rE   r9   r;   r>   r6   r4   <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 = = = = = = = = W W W W W W W W W W/$$$$$$------       
  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/ / / /z& z4 z<P z z z zz/ / / / / /s   A; ;BB B%$B%