
    \j%                        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$ 	 d dl!m&Z& ejP                  ejR                  ejT                  ejV                  ejX                  ejZ                  ej\                  dZ/ej`                  ejb                  dZ2ejf                  ejh                  ejj                  dZ6ejn                  ejp                  ejr                  ejt                  ejv                  dZ< G d de      Z=d"dZ>ddde?ddfd Z@d#d!ZAy# e%$ r	  ed      w xY w# e%$ r
 d dl!m'Z& Y w xY w)$    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                   B    e Zd ZdZde Zd	dd deddfdZed
d       Zy)CohereIntegrationcoherezauto.ai.selfinclude_promptsreturnNc                     || _         y )N)r1   )r0   r1   s     H/root/env/lib/python3.12/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        _        y )NF)	streamingT)
_wrap_chatr   chat_wrap_embedr   embedchat_stream r6   r4   
setup_oncezCohereIntegration.setup_onceO   s9    $Z__F
"6<<0!+J,B,Bd!S
r6   )T)r2   N)	__name__
__module____qualname__
identifieroriginboolr5   staticmethodr?   r>   r6   r4   r.   r.   H   sD    J
|$F/* /T /T / T Tr6   r.   r2   c                     t                t        | t        j                         j                  ddd      \  }}t        j
                  ||       y )Nr/   F)typehandled)client_options	mechanism)hint)r
   r   
sentry_sdk
get_clientoptionscapture_event)exceventrL   s      r4   _capture_exceptionrS   V   sE    &!,,.66#6KE4
 U.r6   fCallable[..., Any]r8   c                 X     dddddt         dd fdt               d	 fd       }|S )
Nspanr   resr   include_piir2   c           	      ^   |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_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   sU    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 -  r6   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.        j0                  t3        t5        d |j                  dg                   d|dgz          t6        j9                         D ]  \  }}||v st-        |||           t:        j9                         D ]  \  }}||v st-        |||           t-        t.        j<                  d       r
d	
fd	} |       cd d d        S t	        t>              r5 |t)               xr 	j*                  
       j%                  d d d        n t-        dd       j%                  d d d        |cd d d        S # t        $ re}t        j                         }t!               5  t#        |       j%                  d d d        d d d        n# 1 sw Y   nxY wt'        |  Y d }~d }~ww xY w# 1 sw Y   y xY w)Nmessagezcohere.client.ChatopnamerD   c                 T    t        | dd      j                         t        | dd      dS )Nrole rl   rq   content)re   lower)xs    r4   <lambda>z._wrap_chat.<locals>.new_chat.<locals>.<lambda>   s*    (/62(>(D(D(F+21i+D' r6   chat_historyuserrs   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rY   )r   
isinstancer   r   responser   r1   __exit__)rv   rj   integrationold_iteratorrW   s    r4   new_iteratorz2_wrap_chat.<locals>.new_chat.<locals>.new_iterator   s     46 $!- 
$A)!-?@J !#@E !=$($%JJ0G0I 1D(3(C(C	!" #$G
$$ MM$d3$ $s   BAB&BBBr{   unknown_responseT)r2   zIterator[StreamedChatResponse]) rM   rN   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   )argskwargsrl   rX   er   r   vr   r   r   rW   rj   rT   r8   s            @@@r4   new_chatz_wrap_chat.<locals>.new_chat   s    ++-==>OP &fjj3S9d%f%%**Y'$$yy77%$++

 		T$V$C )* 8	&([-H-H#.. #JJ~r: !'7;<	= 6;;= @DAqF{+D!VAY?@ .335 <1;'a;<  h&;&;UC"4 4  $~Y8	 8	Z C!89, 7 9 !4#33	 dD$/#D*<dCdD$/q8	 8	  	||~H,. 0"1%dD$/0 0 0 X	8	 8	sQ   9H2 A;J#0J#8A J#A&J#2	J ;JJ8	JJ
	JJ #J,r   r   r   r   r2   r   )rE   r   )rT   r8   r   rj   s   `` @r4   r9   r9   a   sP    !S!S4!SCG!S	!SF 1XS Sj Or6   c                 0     t               d 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 |}t5        d      rt5        |j6                  d      rjt5        |j6                  j8                  d      rJt;        ||j6                  j8                  j<                  |j6                  j8                  j<                  	       |cd d d        S # t(        $ rQ}t+        j,                         }t/               5  t1        |       d d d        n# 1 sw Y   nxY wt3        |  Y d }~d }~ww xY w# 1 sw Y   y xY w)
NzCohere Embedding Creationrm   textsr   r   r\   r]   r^   )r^   total_tokens)rM   rN   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^   )r   r   r   rW   rX   r   r   rT   s          r4   	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
 M&	 &	.  #<<>02 *&q)* * *"	#/&	 &	sP   1CH6:GBH6	H3"H. H	H.HH.)H6.H33H66H?r   r   )rT   r   s   ` r4   r;   r;      s"    
1X+ +Z r6   )rQ   r   r2   N)rT   rU   r2   rU   )Br   	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   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 & 3   5..'  4 = W W/$-
 /W4 !!						!66 44..  $$  .."55..  &&&&0000((! T T/z& z4 z<P zz/}  /
-
../  WVVWs   E& ;E7 &E47FF