
    h~                         d Z ddlZddlmZ ddlmZ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 dd	lmZ erdd
lmZ ddlmZ eZeeef   ZneZeZ G d de      Zy)zO
arize AI is OTEL compatible

this file has Arize ai specific helper functions
    N)datetime)TYPE_CHECKINGAnyOptionalUnion)_utils)OpenTelemetry)ArizeConfig)ServiceLoggerPayload)StandardCallbackDynamicParams)Span)Protocolc                   $   e Zd Zdedee   fdZedefd       Zede	fd       Z
	 	 	 	 dded	ee   d
eeeef      deeeef      dee   f
dZ	 	 	 	 	 ddedee   d	ee   d
eeeef      deeeef      dee   fdZd
edefdZdedee   fdZy)ArizeLoggerspanresponse_objc                 2    t         j                  |||       y N)r   set_arize_attributes)selfr   kwargsr   s       \/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/integrations/arize/arize.pyset_attributeszArizeLogger.set_attributes   s    ((v|D    c                 2    t        j                  | ||       y r   )r   r   )r   r   r   s      r   r   z ArizeLogger.set_arize_attributes"   s    dFL9r   returnc                  D   t         j                  j                  d      } t         j                  j                  d      }t         j                  j                  d      }t         j                  j                  d      }d}d}|rd}|}n|rd}|}nd}d}t        | |||	      S )
z
        Helper function to get Arize configuration.

        Returns:
            ArizeConfig: A Pydantic model containing Arize configuration.

        Raises:
            ValueError: If required environment variables are not set.
        ARIZE_SPACE_KEYARIZE_API_KEYARIZE_ENDPOINTARIZE_HTTP_ENDPOINTN	otlp_grpc	otlp_httpzhttps://otlp.arize.com/v1)	space_keyapi_keyprotocolendpoint)osenvirongetr
   )r$   r%   grpc_endpointhttp_endpointr'   r&   s         r   get_arize_configzArizeLogger.get_arize_config'   s     JJNN#45	**..1

'78

'<=("H$H"H$H"H2H	
 	
r   Npayloadparent_otel_span
start_timeend_timeevent_metadatac                    K   ywzaArize is used mainly for LLM I/O tracing, sending router+caching metrics adds bloat to arize logsN )r   r.   r/   r0   r1   r2   s         r   async_service_success_hookz&ArizeLogger.async_service_success_hookL   s      	   errorc                    K   ywr4   r5   )r   r.   r8   r/   r0   r1   r2   s          r   async_service_failure_hookz&ArizeLogger.async_service_failure_hookW   s      	r7   headersc                      y)z_Arize is used mainly for LLM I/O tracing, sending Proxy Server Request adds bloat to arize logsNr5   )r   r0   r;   s      r   )create_litellm_proxy_request_started_spanz5ArizeLogger.create_litellm_proxy_request_started_spanc   s     	r    standard_callback_dynamic_paramsc                     i }|j                  d      r|j                  d      |d<   |j                  d      r|j                  d      |d<   |j                  d      r|j                  d      |d<   |S )z
        Construct dynamic Arize headers from standard callback dynamic params

        This is used for team/key based logging.

        Returns:
            dict: A dictionary of dynamic Arize headers
        arize_space_idzarize-space-idarize_space_keyarize_api_keyr%   )r*   )r   r>   dynamic_headerss      r   construct_dynamic_otel_headersz*ArizeLogger.construct_dynamic_otel_headersl   s      ,//0@A0P0T0T 1O,- ,//0AB0P0T0T!1O,- ,//@)I)M)M*OI& r   )NNNN) NNNN)__name__
__module____qualname__r   r   r   r   staticmethodr   r
   r-   r   r   r   floatdictr6   strr:   r=   r   rD   r5   r   r   r   r      sa   4 x}  4   "
k "
 "
N ,07;59)-	%	 #4.	 U8U?34		
 5512	 !	  "+/7;59)-
%
 }
 #4.	

 U8U?34
 512
 !
 #*G# 
$#r   r   )__doc__r(   r   typingr   r   r   r   litellm.integrations.arizer   "litellm.integrations.opentelemetryr	    litellm.types.integrations.arizer
   litellm.types.servicesr   litellm.types.utilsr   opentelemetry.tracer   _Spanr   	_Protocolr   r5   r   r   <module>rW      s[    
  6 6 - < 8 7 =1FHDHDr- rr   