
    ^h                     `    S SK r S SKJrJr  S SKJr  \(       a	  S SKJr  \rO\r " S S5      r	g)    N)TYPE_CHECKINGAny)SpanAttributes)Spanc                   ^    \ rS rSrSrS\4S jrS\4S jrS\4S jrS\4S jr	S\4S jr
S	rg
)LangtraceAttributes   zB
This class is used to save trace attributes to Langtrace's spans
spanc                     UR                  S5      R                  S5      nUR                  S0 5      n0 UEUEnU R                  XU5        U R                  X5        U R                  X5        g)z5
This function is used to log the event to Langtrace
litellm_paramscustom_llm_provideroptional_paramsN)getset_request_attributesset_response_attributesset_usage_attributes)selfr
   kwargsresponse_objvendorr   optionss          X/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/langtrace.pyset_langtrace_attributes,LangtraceAttributes.set_langtrace_attributes   sk    
 ,-112GH **%6;/V//##D6:$$T8!!$5    c                    SSSU[         R                  R                  UR                  S5      [         R                  R                  UR                  S5      [         R
                  R                  UR                  S5      [         R                  R                  UR                  S5      [         R                  R                  UR                  S5      [         R                  R                  UR                  S	5      [         R                  R                  UR                  S
5      [         R                  R                  UR                  S5      [         R                  R                  UR                  S5      [         R                  R                  UR                  S5      0nUR                  S5      nU(       a>  UR                  S[         R                  R                  [        R                   " U5      0S9  U R#                  X5        g)zB
This function is used to get span attributes for the LLM request
zgen_ai.operation.namechatzlangtrace.service.namemodelstreamtemperaturetop_ktop_puser
max_tokensstopfrequency_penaltypresence_penaltymessageszgen_ai.content.promptname
attributesN)r   LLM_REQUEST_MODELvaluer   LLM_IS_STREAMINGLLM_REQUEST_TEMPERATURE	LLM_TOP_KLLM_REQUEST_TOP_PLLM_USERLLM_REQUEST_MAX_TOKENSLLM_RESPONSE_STOP_REASONLLM_FREQUENCY_PENALTYLLM_PRESENCE_PENALTY	add_eventLLM_PROMPTSjsondumpsset_span_attributes)r   r
   r   r   span_attributespromptss         r   r   *LangtraceAttributes.set_request_attributes   so   
 $V$f,,22FJJw4G++116::h3G2288&**]:S$$**FJJw,?,,22FJJw4G##))6::f+=1177L9Q33996::f;M0066

CV8W//55vzzBT7U
 **Z(NN,*66<<djj>QR  
 	  7r   c                    SUR                  S5      SUR                  S5      [        R                  R                  UR                  S5      0n/ nUR                  S/ 5       HV  nUR                  S5      R                  S5      nUR                  S5      R                  S	5      nUR	                  XgS
.5        MX     UR                  S[        R                  [        R                  " U5      0S9  U R                  X5        g)zC
This function is used to get span attributes for the LLM response
zgen_ai.response_ididzgen_ai.system_fingerprintsystem_fingerprintr   choicesmessagerolecontent)rD   rE   zgen_ai.content.completionr)   N)
r   r   LLM_RESPONSE_MODELr-   appendr7   LLM_COMPLETIONSr9   r:   r;   )r   r
   r   response_attributescompletionschoicerD   rE   s           r   r   +LangtraceAttributes.set_response_attributes<   s    
 !,"2"24"8')9)9:N)O--33\5E5Eg5N

 "&&y"5F::i(,,V4Djj+//	:GAB 6
 	,&66

;8OP 	 	

 	  ;r   c                 R   UR                  S5      nU(       a  [        R                  R                  UR                  S5      [        R                  R                  UR                  S5      [        R
                  R                  UR                  S5      0nU R                  X5        gg)z@
This function is used to get span attributes for the LLM usage
usageprompt_tokenscompletion_tokenstotal_tokensN)r   r   LLM_USAGE_PROMPT_TOKENSr-   LLM_USAGE_COMPLETION_TOKENSLLM_USAGE_TOTAL_TOKENSr;   )r   r
   r   rN   usage_attributess        r   r   (LangtraceAttributes.set_usage_attributesR   s       )66<<eii#? ::@@%))'C 55;;UYY~=V  $$T< r   c                 j    UR                  5        H  u  p4U(       d  M  UR                  X45        M!     g)z.
This function is used to set span attributes
N)itemsset_attribute)r   r
   r+   keyr-   s        r   r;   'LangtraceAttributes.set_span_attributesc   s-     %**,JCs* -r    N)__name__
__module____qualname____firstlineno____doc__r   r   r   r   r   r;   __static_attributes__r\   r   r   r   r      sC    
6T 
684 8:<D <,= ="+ +r   r   )
r9   typingr   r   litellm.proxy._typesr   opentelemetry.tracer   _Spanr   r\   r   r   <module>rg      s*     % /1DD\+ \+r   