
    gd                         d Z ddlZddlmZmZmZ ddlmZ erddlm	Z
 ddlmZ e
Z	eZneZ	eZddlZddl  G d	 d
      Zy)zO
arize AI is OTEL compatible

this file has Arize ai specific helper functions
    N)TYPE_CHECKINGAnyOptional)verbose_logger)Span   OpenTelemetryConfig)*c                   n    e Zd Zedefd       Zedefd       Zedee	   fd       Z
ededefd       Zy)	ArizeLoggerspanc                    ddl m}m}m} 	 |j	                  di       }|j	                  d      r+| j                  |j                  |j	                  d             | j                  |j                  |j                  j                         |j	                  d      }|r| j                  |j                  |d   j	                  dd             t        |      D ]t  \  }}	| j                  |j                   d	| d	|j                   |	d
          | j                  |j                   d	| d	|j                   |	j	                  dd             v t        j!                  |      }
t#        j$                  |
      }| j                  |j&                  |       |j	                  d      r+| j                  |j(                  |j	                  d             |j	                  d      D ]  }|j	                  di       }| j                  |j*                  |j	                  dd             | j                  |j,                   d|j                   |d
          | j                  |j,                   d|j                   |j	                  dd              |j	                  d      }|r| j                  |j.                  |j	                  d             | j                  |j0                  |j	                  d             | j                  |j2                  |j	                  d             y # t4        $ r"}t7        j8                  d|        Y d }~y d }~ww xY w)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                   R/var/www/openai/venv/lib/python3.12/site-packages/litellm/integrations/arize_ai.pyset_arize_ai_attributesz#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                     t         j                  j                  d      } t         j                  j                  d      }| st        d      |st        d      t         j                  j                  d      }t         j                  j                  d      }||t	        j
                  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_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ArizeConfigrK   s       rC   _get_arize_configzArizeLogger._get_arize_config   s     JJNN#45	**..1QRROPP

'78

'<= ]%:  s 8M''	
 	
    c                      ddl m}  t        j                         }|j                  r | d|j                        S  | d|j
                        S )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   rU   rO   rN   )r
   arize_configs     rC   get_arize_opentelemetry_configz*ArizeLogger.get_arize_opentelemetry_config   sR     	7"446%%&$%33  # !//
 	
rV   payloadc                 4   | j                         D ]u  \  }}	 t        |t              r't        j	                  |j                               | |<   n8t        |t        t        t        t        t        d       f      st        |      | |<   w | S # t        $ r Y w xY w)N)items
isinstancedictr   r.   copystrintfloatbooltyper8   )r_   keyr(   s      rC   r.   z"ArizeLogger.make_json_serializable   s    !--/JC	eT*#.#E#Eejjl#SGCL#ECeT4:+NO#&u:GCL *   s   A/B	BBN)__name__
__module____qualname__staticmethodr   rD   rT   rU   r   r
   r^   rc   r.    rV   rC   r   r      s    iId iI iIZ  
{  
  
D 
H5H,I 
 
2    rV   r   )__doc__r/   typingr   r   r   litellm._loggingr   opentelemetry.tracer   _Spanr\   r
   _OpenTelemetryConfigrP    litellm.types.integrations.arizer   ro   rV   rC   <module>rw      sI     / / +1JD.D 	 .y yrV   