
    ^hd                         S r SSKrSSKJrJrJr  SSKJr  \(       a  SSKJ	r
  SSKJr  \
r	\rO\r	\rSSKrSSK7   " S	 S
5      rg)zO
arize AI is OTEL compatible

this file has Arize ai specific helper functions
    N)TYPE_CHECKINGAnyOptional)verbose_logger)Span   OpenTelemetryConfig)*c                   ~    \ rS rSr\S\4S j5       r\S\4S j5       r\S\	\
   4S j5       r\S\S\4S j5       rS	rg
)ArizeLogger   spanc                    SSK JnJnJn   UR	                  S0 5      nUR	                  S5      (       a+  U R                  UR                  UR	                  S5      5        U R                  UR                  UR                  R                  5        UR	                  S5      nU(       a  U R                  UR                  US   R	                  SS5      5        [        U5       Ht  u  pU R                  UR                   S	U S	UR                   3U	S
   5        U R                  UR                   S	U S	UR                   3U	R	                  SS5      5        Mv     [        R!                  U5      n
["        R$                  " U
5      nU R                  UR&                  U5        UR	                  S5      (       a+  U R                  UR(                  UR	                  S5      5        UR	                  S5       H  nUR	                  S0 5      nU R                  UR*                  UR	                  SS5      5        U R                  UR,                   SUR                   3US
   5        U R                  UR,                   SUR                   3UR	                  SS5      5        M     UR	                  S5      nU(       a  U R                  UR.                  UR	                  S5      5        U R                  UR0                  UR	                  S5      5        U R                  UR2                  UR	                  S5      5        g ! [4         a#  n[6        R8                  " SU 35         S nAg S nAff = f)Nr   )MessageAttributesOpenInferenceSpanKindValuesSpanAttributesoptional_paramsmodelmessagescontent .roleuserchoicesmessagez.0.usagetotal_tokenscompletion_tokensprompt_tokensz Error setting arize attributes: )*litellm.integrations._types.open_inferencer   r   r   getset_attributeLLM_MODEL_NAMEOPENINFERENCE_SPAN_KINDLLMvalueINPUT_VALUE	enumerateLLM_INPUT_MESSAGESMESSAGE_ROLEMESSAGE_CONTENTr   make_json_serializablejsondumpsLLM_INVOCATION_PARAMETERSUSER_IDOUTPUT_VALUELLM_OUTPUT_MESSAGESLLM_TOKEN_COUNT_TOTALLLM_TOKEN_COUNT_COMPLETIONLLM_TOKEN_COUNT_PROMPT	Exceptionr   error)r   kwargsresponse_objr   r   r   r   r   idxmsg_optional_params_json_optional_paramschoiceresponse_messager   es                   W/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/arize_ai.pyset_arize_ai_attributes#ArizeLogger.set_arize_ai_attributes   s,   	
 	
b	I$jj):B?O zz'"""">#@#@&**WBUV66+//55 zz*-H """..RL$$Y3 !*( 3HC&&)<<=Qse1EVEcEcDdeF
 &&)<<=Qse1EVEfEfDgh	2. !4  +AA/R$(JJ/?$@!88:O ""6**"">#9#9?;N;Nv;VW '**95#)::i#< """//1A1E1EiQS1T ""%99:#>O>\>\=]^$V, ""%99:#>O>_>_=`a$((B7 6" !$$W-E"""88IIn- """==II12 """99IIo.  	I  #CA3!GHH	Is   L-L: :
M'M""M'returnc                     [         R                  R                  S5      n [         R                  R                  S5      nU (       d  [        S5      eU(       d  [        S5      e[         R                  R                  S5      n[         R                  R                  S5      nUc  Uc  [        R
                  " S5        Sn[        U UUUS	9$ )
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_KEYz2ARIZE_SPACE_KEY not found in environment variablesz0ARIZE_API_KEY not found in environment variablesARIZE_ENDPOINTARIZE_HTTP_ENDPOINTzaNo ARIZE_ENDPOINT or ARIZE_HTTP_ENDPOINT found, using default endpoint: https://otlp.arize.com/v1zhttps://otlp.arize.com/v1	space_keyapi_keygrpc_endpointhttp_endpoint)osenvironr$   
ValueErrorr   debugArizeConfigrM   s       rD   _get_arize_configArizeLogger._get_arize_config   s     JJNN#45	**..1QRROPP

'78

'<= ]%:  s 8M''	
 	
    c                      SSK Jn   [        R                  5       nUR                  (       a  U " SUR                  S9$ U " SUR
                  S9$ )z
Helper function to get OpenTelemetry configuration for Arize.

Args:
    arize_config (ArizeConfig): Arize configuration object.

Returns:
    OpenTelemetryConfig: Configuration for OpenTelemetry.
r   r	   	otlp_http)exporterendpoint	otlp_grpc)opentelemetryr
   r   rW   rQ   rP   )r
   arize_configs     rD   get_arize_opentelemetry_config*ArizeLogger.get_arize_opentelemetry_config   sR     	7"446%%&$%33  # !//
 	
rY   payloadc                 P   U R                  5        H  u  p [        U[        5      (       a'  [        R	                  UR                  5       5      X'   MB  [        U[        [        [        [        [        S 5      45      (       d  [        U5      X'   M  M     U $ ! [         a     M  f = f)N)items
isinstancedictr   r/   copystrintfloatbooltyper9   )rc   keyr)   s      rD   r/   "ArizeLogger.make_json_serializable   s    !--/JC	eT**#.#E#Eejjl#SGL#ECeT4:+NOO#&u:GL P *   s   :B<B
B%$B% N)__name__
__module____qualname____firstlineno__staticmethodr   rE   rV   rW   r   r
   ra   rg   r/   __static_attributes__rp   rY   rD   r   r      s    iId iI iIZ  
{  
  
D 
H5H,I 
 
2    rY   r   )__doc__r0   typingr   r   r   litellm._loggingr   opentelemetry.tracer   _Spanr_   r
   _OpenTelemetryConfigrR    litellm.types.integrations.arizer   rp   rY   rD   <module>r~      sI     / / +1JD.D 	 .y yrY   