
    h'                         d dl 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 erd dlmZ eeef   ZneZdeeeeef   fdZd	ed
edefdZd	efdZy)    N)TYPE_CHECKINGAnyOptionalUnion)verbose_logger)
safe_dumps)StandardLoggingPayload)Spanreturnc                     | yt        | t        t        t        t        f      r| S 	 t        |       S # t
        $ r Y yw xY w)zZ
    Converts a value to an OTEL-supported primitive for Arize/Phoenix observability.
     )
isinstancestrboolintfloat	Exception)values    ]/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/integrations/arize/_utils.pycast_as_primitive_value_typer      sE     }%#tS%015z s   
2 	>>spankeyr   c                 >    t        |      }| j                  ||       y)z^
    Sets a span attribute safely with OTEL-compliant primitive typing for Arize/Phoenix.
    N)r   set_attribute)r   r   r   primitive_values       r   safe_set_attributer      s     359OsO,    c           
         ddl m}m}m}m} 	 |j                  di       }|j                  di       }|j                  d      }	|	t        d      |	r|	j                  d      nd}
|
 t        | |j                  t        |
             |j                  d	      r&t        | |j                  |j                  d	             t        | d
|	d          t        | |j                  |j                  dd             |j                  d      rt        | d|j                  d             |j                  d      rt        | d|j                  d             |j                  d      rt        | d|j                  d             t        | dt        |j                  dd                   |j                  d      rt        | d|j                  d             |r-|j                  d      rt        | d|j                  d             |r-|j                  d	      rt        | d|j                  d	             t        | |j                  |j                  j                         |j                  d      }|r|d   }t        | |j                   |j                  dd             t#        |      D ]m  \  }}|j$                   d | }t        | | d |j&                   |j                  d!             t        | | d |j(                   |j                  dd             o |j                  d"      }|rt#        |      D ]  \  }}|j                  d#      }|s|j*                   d | }t        | | d |j,                   |j                  d$             t        | | d |j.                   |j                  d%             t        | | d |j0                   t3        j4                  |j                  d&                    |j                  d'      }|rOt#        |      D ]A  \  }}|j6                   d | }t        | | d |j8                   |j                  d$             C |	r|	j                  d(      nd}|r[t        | |j:                  t        |             |j                  d      r*|j                  d      }|t        | |j<                  |       t?        |d)      rOt#        |j                  d*g             D ]  \  }}|j                  d+i       }t        | |j@                  |j                  dd             |jB                   d | }t        | | d |j&                   |j                  d!             t        | | d |j(                   |j                  dd              |xr |j                  d,      }|rst        | |jD                  |j                  d-             t        | |jF                  |j                  d.             t        | |jH                  |j                  d/             yyy# tJ        $ rD}tM        jN                  d0|        t?        | d1      r| jQ                  |       Y d}~yY d}~yd}~ww xY w)2zc
    Populates span with OpenInference-compliant LLM attributes for Arize and Phoenix tracing.
    r   )MessageAttributesOpenInferenceSpanKindValuesSpanAttributesToolCallAttributesoptional_paramslitellm_paramsstandard_logging_objectNz+standard_logging_object not found in kwargsmetadatamodelzllm.request.type	call_typecustom_llm_providerUnknown
max_tokenszllm.request.max_tokenstemperaturezllm.request.temperaturetop_pzllm.request.top_pzllm.is_streamingstreamFuserzllm.useridzllm.response.idzllm.response.modelmessagescontentr   .roletoolsfunctionnamedescription
parameters	functionsmodel_parametersgetchoicesmessageusagetotal_tokenscompletion_tokensprompt_tokensz=[Arize/Phoenix] Failed to set OpenInference span attributes: record_exception))*litellm.integrations._types.open_inferencer   r    r!   r"   r=   
ValueErrorr   METADATAr   LLM_MODEL_NAMELLM_PROVIDERr   OPENINFERENCE_SPAN_KINDLLMr   INPUT_VALUE	enumerateLLM_INPUT_MESSAGESMESSAGE_ROLEMESSAGE_CONTENT	LLM_TOOLS	TOOL_NAMETOOL_DESCRIPTIONTOOL_PARAMETERSjsondumpsMESSAGE_TOOL_CALLSTOOL_CALL_FUNCTION_NAMELLM_INVOCATION_PARAMETERSUSER_IDhasattrOUTPUT_VALUELLM_OUTPUT_MESSAGESLLM_TOKEN_COUNT_TOTALLLM_TOKEN_COUNT_COMPLETIONLLM_TOKEN_COUNT_PROMPTr   r   errorrD   )r   kwargsresponse_objr   r    r!   r"   r#   r$   standard_logging_payloadr&   r1   last_messageidxmsgprefixr6   toolr7   r;   model_paramsuser_idchoiceresponse_messager@   es                             r   set_attributesro   &   s    n% **%6;$4b9EKZZ%F
  $+JKK ( %((4 	
 t^%<%<j>RS ::g--

7# 	$[1	
 	''4i@	
 |,(##L1 }-)##M2 w'###G, 	##He45	
 v&##F+ L,,T2t%68H8H8NO L,,W5$  ) 	22'++11	

 ::j) #B<L**  B/ &h/S*==>auE"VHA&7&D&D%EFPV #ha 1 A ABCGGIr* 0  ##G,&u-	T88J/*445Qse<"VHAn&>&>%?@(,,vBV #ha ? ?@ALL/
 #ha > >?@JJx||L9: .( $''4	!*9!5X-@@A3%H"ha 2 J JKLLL( "6 ( %(();< 	
 88<( '&**62&&t^-C-CWM <'()9)9)R)HIV#)::i#< ""//$((B7 +>>?qF"ha 1 > >?@$((0
 #ha 1 A ABC$((B7  J, !>\%5%5g%>E""88IIn- #"==II12 #"99IIo. 1 (Z  %KA3O	
 4+,!!!$$ -	%s   XX" "	Y/+5Y**Y/)rU   typingr   r   r   r   litellm._loggingr   *litellm.litellm_core_utils.safe_json_dumpsr   litellm.types.utilsr	   opentelemetry.tracer
   _Spanr   r   r   r   r   r   ro    r   r   <module>rw      sr     6 6 + A 61DD5dC1F+G -T - -C -y% y%r   