
    i$                        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" 	 d dlm$Z$ ejL                  ejN                  ejP                  ejR                  ejT                  ejV                  ejX                  dZ-ej\                  ej^                  dZ0ejb                  ejd                  ejf                  dZ4ejj                  ejl                  ejn                  ejp                  ejr                  dZ: G d de      Z;d 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)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                   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)selfr0   s     ~/var/www/html/hwPaymentPortal-be-dev/hw-payment-portal-api/venv/lib/python3.12/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        _        y )NF)	streamingT)
_wrap_chatr   chat_wrap_embedr   embedchat_stream r4   r2   
setup_oncezCohereIntegration.setup_onceO   s;     %Z__F
"6<<0!+J,B,Bd!S
r4   N)T)__name__
__module____qualname__
identifieroriginr3   staticmethodr=   r<   r4   r2   r-   r-   G   s.    J
|$F/ T Tr4   r-   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eventrI   s      r2   _capture_exceptionrP   W   sE    &!,,.66#6KE4
 U.r4   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_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   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 -  r4   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namerB   c                 T    t        | dd      j                         t        | dd      dS )Nrole rg   rl   content)r]   lower)xs    r2   <lambda>z._wrap_chat.<locals>.new_chat.<locals>.<lambda>   s*    (/62(>(D(D(F+21i+D' r4   chat_historyuserrn   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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 $!- 
$A)!-?@J !#@E !=$($%JJ0G0I 1D(3(C(C	!" #$G
$$ MM$d3$ $s   BAB&BBB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   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   r6   r   re   s   `` @r2   r7   r7   c   s,     SD 1XT Tl Or4   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 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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   ` r2   r9   r9      s$     1X* *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      sf     7 & 3   5..'  4 = N/$-
 /W4 !!						!66 44..  $$  .."55..  &&&&0000((! T T 	/|~0G  /
-
../  WVWs   E 5E( E%(E65E6