
    `i"                     j   d dl Z 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 d d	lmZmZ d d
lmZ erd dlmZ d dlmZ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)_transform_system_instructions)_is_system_instruction_get_system_instructions)TYPE_CHECKING)Any)UsageTResponseInputItem)Span)TextPartz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      /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/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_spanr4   1   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                   d }|j        r)t          |j        d          r|j        j        n|j        }nt          |d          r|j
        }|r |                      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model_sentry_request_modelr   c                 ,    g | ]}t          |          S  )vars).0tools     r'   
<listcomp>z#_set_agent_data.<locals>.<listcomp>k   s    ???4DJJ???r)   )r/   r   GEN_AI_SYSTEMGEN_AI_AGENT_NAMEnamemodel_settings
max_tokensGEN_AI_REQUEST_MAX_TOKENSr:   r0   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*   r6   
model_names      r'   _set_agent_datarU   >   s   MM   	MM(,ej999& 
.0D0O	
 	
 	

 J{ 1*1%+w*G*GXU[&&U[

	/	0	0 10
 A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*   rV   s     r'   _set_usage_datard   o   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                    t                      sd S g }|                    dg           }g }|                    d          }||                    d|d           t          |          }|t	          |          z  }t          |          dk    r2|                     t          j        t          j
        |                     d |D             }|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inputsystem_instructionstext)r   contentr   c                 0    g | ]}t          |          |S r=   )r   )r?   messages     r'   rA   z#_set_input_data.<locals>.<listcomp>   s6       /Eg/N/N  r)   rolerk   )r   rj   )rn   rk   r   function_callfunction_call_outputF)unpack)r   getappendr   r   rQ   r/   r   GEN_AI_SYSTEM_INSTRUCTIONSjsondumpsr   
isinstancer2   r   	ASSISTANTTOOLr   r"   get_current_scoper   r   GEN_AI_REQUEST_MESSAGES)r*   re   request_messagesmessagesinstructions_text_partsexplicit_instructionsri   non_system_messagesrm   normalized_rolerk   normalized_messagesscopemessages_datas                 r'   _set_input_datar   }   s    #$$ 1D1H1HRT1U1UH02/334IJJ(&&0 	
 	
 	
 38<< =>QRRR
"##a''/J.//	
 	
 	

 '   '  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@   ro   r@   rm   r   r   )r   outputr   rs   dictrk   rj   AttributeErrorrQ   r/   r   GEN_AI_RESPONSE_TOOL_CALLSr   r   GEN_AI_RESPONSE_TEXT)r*   r   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-   r1   r"   
start_spanr
   GEN_AI_EXECUTE_TOOLrD   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*   r   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*   r5   r6   r7   r   N)r*   r5   rV   r   r   N)r*   r5   re   rf   r   N)r*   r5   r   r   r   N)r*   r5   r   r   r   N)-ru   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   %sentry_sdk.ai._openai_completions_apir   #sentry_sdk.ai._openai_responses_apir   r   typingr   r   agentsr   r   sentry_sdk.tracingr   sentry_sdk._typesr   ImportErrorr(   	Exceptionr4   rU   rd   r   r   r   r=   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 P P P P P P       
 !           +00000000''''''******6MMMM 6 6 6
,4
5
556/ / / /
:F 
:9 
: 
: 
: 
: 
:.
 .
 .
 .
bJ J J JI

#I
:JI
	I
 I
 I
 I
X
 
 
 
>L
#L-<L	L L L L L Ls   ,A1 1B