
    fi                         d dl Z d dl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Zd Zd Zd Zd Zd Zd Zy# e$ r	  ed      w xY w)    N)GEN_AI_ALLOWED_MESSAGE_ROLESnormalize_message_rolesset_data_normalizednormalize_message_role)SPANDATA
SPANSTATUSOP)DidNotEnable)should_send_default_pii)set_span_errored)event_from_exceptionsafe_serialize)TYPE_CHECKING)Any)UsagezOpenAI Agents not installedc                     t                t        | t        j                         j                  ddd      \  }}t        j
                  ||       y )Nopenai_agentsF)typehandled)client_options	mechanism)hint)r   r   
sentry_sdk
get_clientoptionscapture_event)exceventr   s      }/var/www/html/hwPaymentPortal-be-uat/backend/venv/lib/python3.12/site-packages/sentry_sdk/integrations/openai_agents/utils.py_capture_exceptionr       sE    &!,,.66*u=KE4
 U.    c                    | j                  t        j                  d       | j                  t        j                  |j                         |j
                  j                  r4| j                  t        j                  |j
                  j                         |j                  rXt        |j                  d      r|j                  j                  n|j                  }| j                  t        j                  |       |j
                  j                  r4| j                  t        j                  |j
                  j                         |j
                  j                  r4| j                  t        j                  |j
                  j                         |j
                  j                  r4| j                  t        j                   |j
                  j                         |j
                  j"                  r4| j                  t        j$                  |j
                  j"                         t'        |j(                        dkD  rK| j                  t        j*                  t-        |j(                  D cg c]  }t/        |       c}             y y c c}w )Nopenaimodelr   )set_datar   GEN_AI_SYSTEMGEN_AI_AGENT_NAMEnamemodel_settings
max_tokensGEN_AI_REQUEST_MAX_TOKENSr$   hasattr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   vars)spanagent
model_nametools       r   _set_agent_datar>   '   s   MM 	MM(,,ejj9&&..0D0D0O0O	
 {{*1%++w*GU[[&&U[[
h33Z@,,44  11	

 ''//1E1E1Q1Q	
 !!h33U5I5I5O5OP--55  22	

 5;;!335;;?4DJ?@	
  @s   &Jc                    | j                  t        j                  |j                         | j                  t        j                  |j
                  j                         | j                  t        j                  |j                         | j                  t        j                  |j                  j                         | j                  t        j                  |j                         y )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:   usages     r   _set_usage_datarM   S   s    MM(44e6H6HIMM11""00 	MM(55u7J7JKMM55##44 	MM(44e6H6HIr!   c                 v   t               sy g }|j                  d      }|r&|j                  t        j                  d|dgd       |j                  dg       D ]  }d|v rBt        |j                  d            }|j                  |d|j                  d      dgd       I|j                  d      d	k(  r$|j                  t        j                  |gd       |j                  d      d
k(  s|j                  t        j                  |gd        t        | t        j                  t        |      d       y )Nsystem_instructionstext)r   rP   )rolecontentinputrQ   rR   r   function_callfunction_call_outputF)unpack)r   getappendr   SYSTEMr   	ASSISTANTTOOLr   r   GEN_AI_REQUEST_MESSAGESr   )r:   get_response_kwargsrequest_messagesrO   messagenormalized_roles         r   _set_input_datara   b   s<   "$-112GH4;;%+5HIJ	
 '**7B7 W4W[[5HIO##+)/Y9O PQ {{6"o5 '' < F F$+9 V$(>> '' < A A$+9%2 (( 01	r!   c                 f   t               sy g g d}|j                  D ]t  }|j                  dk(  r#|d   j                  |j	                                5|j                  dk(  sE|j
                  D ]!  }	 |d   j                  |j                         # v t        |d         dkD  r,| j                  t        j                  t        |d                t        |d         dkD  rt        | t        j                  |d          y y # t        $ r% |d   j                  |j	                                Y w xY w)N)responser=   rT   r=   r_   rc   r   )r   outputr   rX   dictrR   rP   AttributeErrorr6   r%   r   GEN_AI_RESPONSE_TOOL_CALLSr   r   GEN_AI_RESPONSE_TEXT)r:   resultoutput_messagesrd   output_messages        r   _set_output_datarl      s.   "$ O
 -- 	N;;/)F#**6;;=9[[I%"(.. NN#J/66~7J7JKN		N ?6"#a'//PV@W1X	
 ?:&'!+(//1L	
 , & N#J/66~7J7J7LMNs   2D+D0/D0c                    |j                   D ],  }|j                  j                  dk(  st        j                  t
        j                  d|j                   | j                        5 }t        |t        j                  d       t        |t        j                  |j                         t               rT|j                  t        j                  |j                          |j                  t        j"                  |j                          |j$                  r|j'                  t(        j*                         d d d        / y # 1 sw Y   ;xY w)NMcpCallzexecute_tool )opdescriptionstart_timestampmcp)rd   	__class____name__r   
start_spanr	   GEN_AI_EXECUTE_TOOLr(   rq   r   r   GEN_AI_TOOL_TYPEGEN_AI_TOOL_NAMEr   r%   GEN_AI_TOOL_INPUT	argumentsGEN_AI_TOOL_OUTPUTerror
set_statusr   ERROR)r:   ri   rd   execute_tool_spans       r   _create_mcp_execute_tool_spansr      s   -- C$$	1&&))+FKK=9 $ 4 4 C ##$5x7P7PRWX#%x'@'@&++ +,%.. 22F4D4D &.. 33V]] <<%001A1AB#C CCC Cs   (C
D>>E	)r   sentry_sdk.ai.utilsr   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   ImportErrorr    r>   rM   ra   rl   r    r!   r   <module>r      s{      7 6 0 4 5 A  6	/)
XJ-`
@Cw  6
4
556s   
A! !A/