
    h                     ~    d dl Z d dl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)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       b/var/www/Befach/backend/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#   r1   r(   s        r    async_log_success_eventz&DeepEvalLogger.async_log_success_event4   s.     ''L*h4 ( 
 	
 	
r4   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)r8   r*   r+   r%   )r8   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endpointrF   z7DeepEvalLogger: sync_log_failure_event: Api response %s)
rG   r   send_requestr   POSTr   TRACING_ENDPOINT	Exceptionr   debug)	r   r   r)   r*   r+   r%   rF   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)NrI   z4DeepEvalLogger: async_event_handler: Api response %s)	rG   r   a_send_requestr   rM   r   rN   r   rP   )r   r   r)   r*   r+   r%   rF   rQ   s           r    r2   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 )NrQ   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)uuidnamestatustype	traceUuid	startTimeendTimera   outputrc   inputTokenCountoutputTokenCount)
r;   strr   rf   uuid4r
   SUCCESSERROREDr   LLM)r   r   r8   r*   r+   r%   rV   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 )Nr`   )	rf   	baseSpans
agentSpansllmSpansretrieverSpans	toolSpansrk   rl   environment)r	   r;   rf   rq   rp   )r   rD   r8   r*   r+   r   s         r    r=   z DeepEvalLogger._create_trace_api   sI     (,,ZF#_*oM+

 
	
r!   )__name__
__module____qualname____doc__r   r,   r/   r3   r6   rG   r'   r2   r<   r=   __classcell__)r   s   @r    r   r      s9    5	*



<
$
 !
F
r!   r   )r   rf   "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!   