
    tni	                     6   d dl Z d dlmZmZmZ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 d dlmZmZ d dlmZ erd d	lmZ d d
lmZ d dlmZ 	 d dlZn# e$ r  ed          w xY wd#dZdddeddfdZd$dZd%dZ 	 	 	 	 	 	 d&dZ!d'd Z"	 	 	 	 	 	 d(d"Z#dS ))    N)GEN_AI_ALLOWED_MESSAGE_ROLESnormalize_message_rolesset_data_normalizednormalize_message_roletruncate_and_annotate_messages)SPANDATA
SPANSTATUSOP)DidNotEnable)should_send_default_pii)set_span_errored)event_from_exceptionsafe_serialize)TYPE_CHECKING)Any)Usage)SpanzOpenAI Agents not installedexcr   returnc                     t                       t          | t          j                    j        ddd          \  }}t          j        ||           d S )Nopenai_agentsF)typehandled)client_options	mechanism)hint)r   r   
sentry_sdk
get_clientoptionscapture_event)r   eventr   s      h/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/sentry_sdk/integrations/openai_agents/utils.py_capture_exceptionr#      sa    &!,..6*u==  KE4
 U......    spanr   errorc                 &   t          |            |                     dd           t          |d          r |                     d|j        j                   t          |d          r)t          |          }|r|                     d|           d S d S d S )Nzspan.statusr&   	__class__z
error.type__str__zerror.message)r   set_datahasattrr(   __name__str)r%   r&   error_messages      r"   _record_exception_on_spanr/   )   s    TMM-))) uk"" >lEO$<===ui   :E

 	:MM/=99999: :	: 	:r$   sentry_sdk.tracing.Spanagentagents.Agentc                    |                      t          j        d           |                      t          j        |j                   |j        j        r*|                      t          j        |j        j                   |j        rHt          |j        d          r|j        j        n|j        }|                      t          j
        |           |j        j        r*|                      t          j        |j        j                   |j        j        r*|                      t          j        |j        j                   |j        j        r*|                      t          j        |j        j                   |j        j        r*|                      t          j        |j        j                   t'          |j                  dk    r>|                      t          j        t-          d |j        D                                  d S d S )Nopenaimodelr   c                 ,    g | ]}t          |          S  )vars).0tools     r"   
<listcomp>z#_set_agent_data.<locals>.<listcomp>]   s    ???4DJJ???r$   )r*   r   GEN_AI_SYSTEMGEN_AI_AGENT_NAMEnamemodel_settings
max_tokensGEN_AI_REQUEST_MAX_TOKENSr5   r+   GEN_AI_REQUEST_MODELpresence_penaltyGEN_AI_REQUEST_PRESENCE_PENALTYtemperatureGEN_AI_REQUEST_TEMPERATUREtop_pGEN_AI_REQUEST_TOP_Pfrequency_penalty GEN_AI_REQUEST_FREQUENCY_PENALTYlentoolsGEN_AI_REQUEST_AVAILABLE_TOOLSr   )r%   r1   
model_names      r"   _set_agent_datarO   6   s   MM   	MM(,ej999& 
.0D0O	
 	
 	
 { A*1%+w*G*GXU[&&U[
h3Z@@@, 
4 1	
 	
 	

 ' 
/1E1Q	
 	
 	
 ! Qh3U5I5OPPP- 
5 2	
 	
 	

 5;!3??5;???@@	
 	
 	
 	
 	
 r$   usager   c                    |                      t          j        |j                   |                      t          j        |j        j                   |                      t          j        |j                   |                      t          j	        |j
        j                   |                      t          j        |j                   d S )N)r*   r   GEN_AI_USAGE_INPUT_TOKENSinput_tokens GEN_AI_USAGE_INPUT_TOKENS_CACHEDinput_tokens_detailscached_tokensGEN_AI_USAGE_OUTPUT_TOKENSoutput_tokens$GEN_AI_USAGE_OUTPUT_TOKENS_REASONINGoutput_tokens_detailsreasoning_tokensGEN_AI_USAGE_TOTAL_TOKENStotal_tokens)r%   rP   s     r"   _set_usage_datar^   a   s    MM(4e6HIIIMM1"0   	MM(5u7JKKKMM5#4   	MM(4e6HIIIIIr$   get_response_kwargsdict[str, Any]c                 N   t                      sd S g }|                    d          }|r&|                    t          j        d|dgd           |                    dg           D ]}d|v rkt          |                    d                    }|                    d          }|                    |t          |t                    rd|dgn|d           q|                    d          d	k    r$|                    t          j        |gd           |                    d          d
k    r#|                    t          j	        |gd           t          |          }t          j                    }t          || |          }	|	t          | t          j        |	d           d S d S )Nsystem_instructionstext)r   rc   )rolecontentinputrd   re   r   function_callfunction_call_outputF)unpack)r   getappendr   SYSTEMr   
isinstancer-   	ASSISTANTTOOLr   r   get_current_scoper   r   r   GEN_AI_REQUEST_MESSAGES)
r%   r_   request_messagesrb   messagenormalized_rolere   normalized_messagesscopemessages_datas
             r"   _set_input_datarx   o   s    #$$ -112GHH 
4;%+5HIIJ 	
 	
 	
 '**7B77  W4W[[5H5HIIOkk),,G##+ &gs33%&'::;;$ 	 	 	 	 {{6""o55 '' < F$+9     V$$(>>> '' < A$+9    22BCC(**E23FeTTM ,		
 	
 	
 	
 	
 	
 ! r$   resultc                    t                      sd S g g d}|j        D ]}|j        dk    r.|d                             |                                           ;|j        dk    rh|j        D ]`}	 |d                             |j                   $# t          $ r0 |d                             |                                           Y ]w xY wt          |d                   dk    r3| 	                    t          j        t          |d                              t          |d                   dk    r#t          | t          j        |d                    d S d S )N)responser:   rg   r:   rs   r{   r   )r   outputr   rk   dictre   rc   AttributeErrorrK   r*   r   GEN_AI_RESPONSE_TOOL_CALLSr   r   GEN_AI_RESPONSE_TEXT)r%   ry   output_messagesr|   output_messages        r"   _set_output_datar      s   "$$  / /O
 - 	N 	N;/))F#**6;;==9999[I%%"(. N NN#J/66~7JKKKK% N N N#J/66~7J7J7L7LMMMMMN ?6"##a''/PV@W1X1X	
 	
 	
 ?:&''!++(/1L	
 	
 	
 	
 	
 ,+s   - B7CCagents.Resultc                 <   |j         D ]}|j        j        dk    rt          j        t
          j        d|j         | j                  5 }t          |t          j        d           t          |t          j        |j                   t                      rJ|                    t          j        |j                   |                    t          j        |j                    |j        r|                    t(          j                   d d d            n# 1 swxY w Y   d S )NMcpCallzexecute_tool )opdescriptionstart_timestampmcp)r|   r(   r,   r   
start_spanr
   GEN_AI_EXECUTE_TOOLr>   r   r   r   GEN_AI_TOOL_TYPEGEN_AI_TOOL_NAMEr   r*   GEN_AI_TOOL_INPUT	argumentsGEN_AI_TOOL_OUTPUTr&   
set_statusr	   INTERNAL_ERROR)r%   ry   r|   execute_tool_spans       r"   _create_mcp_execute_tool_spansr      s{    - L L$	11&)9FK99 $ 4   L ##$5x7PRWXXX#%x'@&+   +,, %.. 2F4D   &.. 3V]   < L%001JKKK#L L L L L L L L L L L L L L LL Ls   	B:DD	D	)r   r   r   N)r%   r0   r1   r2   r   N)r%   r0   rP   r   r   N)r%   r0   r_   r`   r   N)r%   r0   ry   r   r   N)r%   r0   ry   r   r   N)$r   sentry_sdk.ai.utilsr   r   r   r   r   sentry_sdk.constsr   r	   r
   sentry_sdk.integrationsr   sentry_sdk.scoper   sentry_sdk.tracing_utilsr   sentry_sdk.utilsr   r   typingr   r   agentsr   sentry_sdk.tracingr   ImportErrorr#   	Exceptionr/   rO   r^   rx   r   r   r7   r$   r"   <module>r      s;                    7 6 6 6 6 6 6 6 6 6 0 0 0 0 0 0 4 4 4 4 4 4 5 5 5 5 5 5 A A A A A A A A             (''''''6MMMM 6 6 6
,4
5
556/ / / /
:F 
:9 
: 
: 
: 
: 
:(
 (
 (
 (
VJ J J J7

#7
:J7
	7
 7
 7
 7
t
 
 
 
>L
#L-<L	L L L L L Ls   A A(