
    AHj                         d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	m
Z
mZmZmZ d dlmZmZ d dlmZ  G d d	e      Zy)
    N)uuid)CustomLogger)Api	EndpointsHttpMethods)BaseApiSpanSpanApiTypeTraceApiTraceSpanApiStatus)to_zod_compatible_isovalidate_environment)verbose_loggerc                   X     e Zd ZdZ fdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Z xZS )DeepEvalLoggerz+Logs litellm traces to DeepEval's platform.c                     t        j                  d      }t        j                  dd      | _        t        | j                         |st	        d      t        |      | _        t        |    |i | y )NCONFIDENT_API_KEYLITELM_ENVIRONMENTdevelopmentz@Please set 'CONFIDENT_API_KEY=<>' in your environment variables.)api_key)	osgetenvlitellm_environmentr   
ValueErrorr   apisuper__init__)selfargskwargsr   	__class__s       ^/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/integrations/deepeval/deepeval.pyr   zDeepEvalLogger.__init__   sg    ))/0#%99-A=#Q T556R  w'$)&)    c                 0    | j                  ||||d       yz,Logs a success event to DeepEval's platform.T
is_successN_sync_event_handlerr   r   response_obj
start_timeend_times        r!   log_success_eventz DeepEvalLogger.log_success_event"   s       L*h4 	! 	
r"   c                 0    | j                  ||||d       yz,Logs a failure event to DeepEval's platform.Fr%   Nr'   r)   s        r!   log_failure_eventz DeepEvalLogger.log_failure_event(   s       L*h5 	! 	
r"   c                 L   K   | j                  ||||d       d{    y7 wr/   _async_event_handlerr)   s        r!   async_log_failure_eventz&DeepEvalLogger.async_log_failure_event.   s.     ''L*h5 ( 
 	
 	
   $"$c                 L   K   | j                  ||||d       d{    y7 wr$   r2   r)   s        r!   async_log_success_eventz&DeepEvalLogger.async_log_success_event4   s.     ''L*h4 ( 
 	
 	
r5   c                 4   t        |      }t        |      }|j                  di       }| j                  |||||      }	| j                  |	|||| j                        }
i }	 |
j                  dd      }|S # t        $ r |
j                  dd      }Y |S w xY w)Nstandard_logging_object)r9   r+   r,   r&   )r9   r+   r,   r   T)by_aliasexclude_none)r   get_create_base_api_span_create_trace_apir   
model_dumpAttributeErrordict)r   r   r*   r+   r,   r&   _start_time	_end_time_standard_logging_objectbase_api_span	trace_apibodys               r!   _prepare_trace_apiz!DeepEvalLogger._prepare_trace_api:   s     ,J7)(3	#)::.G#L 22$<"! 3 
 **$<" $ 8 8 + 
	 	D''D'ID   	D>>4d>CD	Ds   "A7 7BBc                     | j                  |||||      }	 | j                  j                  t        j                  t
        j                  |      }t        j                  d|       y # t        $ r}|d }~ww xY w)NmethodendpointrG   z7DeepEvalLogger: sync_log_failure_event: Api response %s)
rH   r   send_requestr   POSTr   TRACING_ENDPOINT	Exceptionr   debug)	r   r   r*   r+   r,   r&   rG   responsees	            r!   r(   z"DeepEvalLogger._sync_event_handlerX   s~     &&L*h

	xx,,"''"33 - H 	Ex	
  	G	s   :A( (	A81A33A8c                    K   | j                  |||||      }| j                  j                  t        j                  t
        j                  |       d {   }t        j                  d|       y 7 w)NrJ   z4DeepEvalLogger: async_event_handler: Api response %s)	rH   r   a_send_requestr   rN   r   rO   r   rQ   )r   r   r*   r+   r,   r&   rG   rR   s           r!   r3   z#DeepEvalLogger._async_event_handlerj   sr      &&L*h

 00##// 1 
 
 	BH	

s   AA3A1A3c                    |j                  di       j                  di       }|rG|j                  di       j                  di g      d   j                  di       j                  dd      }nt        |j                  dd	            }t        |j                  d
t        j                               |rdnd|rt
        j                  nt
        j                  t        j                  |j                  dt        j                               t        |      t        |      |j                  dd      ||j                  dd       |r|j                  dd       nd |r|j                  dd             S d       S )NrR   usagechoicesr   messagecontent	NO_OUTPUTerror_string idlitellm_success_callbacklitellm_failure_callbacktrace_idinputNO_INPUTmodelprompt_tokenscompletion_tokens)r   namestatustype	traceUuid	startTimeendTimerb   outputrd   inputTokenCountoutputTokenCount)
r<   strr   r   uuid4r   SUCCESSERROREDr	   LLM)r   r   r9   r+   r,   r&   rW   rm   s           r!   r=   z$DeepEvalLogger._create_base_api_spanz   sF    (++J;??L'++J;Y%a)Y#Y,	  044^RHIF(,,T4::<@.8*>X /9"**>P>X>X-11*djjlK*oM**Wj1)--gt<@JEIIot<PT8B		-t4#
 	
" IM#
 	
r"   c                     t        |j                  dt        j                               g g |gg g t	        |      t	        |      |	      S )Nra   )	r   	baseSpans
agentSpansllmSpansretrieverSpans	toolSpansrk   rl   environment)r
   r<   r   rq   rp   )r   rE   r9   r+   r,   r   s         r!   r>   z DeepEvalLogger._create_trace_api   sI     (,,ZF#_*oM+

 
	
r"   )__name__
__module____qualname____doc__r   r-   r0   r4   r7   rH   r(   r3   r=   r>   __classcell__)r    s   @r!   r   r      s9    5	*



<
$
 !
F
r"   r   )r   litellm._uuidr   "litellm.integrations.custom_loggerr   !litellm.integrations.deepeval.apir   r   r   #litellm.integrations.deepeval.typesr   r	   r
   r   #litellm.integrations.deepeval.utilsr   r   litellm._loggingr   r    r"   r!   <module>r      s6    	  ; I I  ,
[
\ [
r"   