
    ^hk                         S SK r S SKJrJrJrJr  S SKJrJr  S SK	r	S SK
Jr  S SKJr  S SKJrJr   " S S\5      r " S	 S
\5      rg)    N)AnyDictListOptional)	BaseModelField)verbose_logger)CustomLogger)get_async_httpx_clienthttpxSpecialProviderc                       \ rS rSr% \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\S'   \\S	'   \" S
SS9r\	\
\\4      \S'   \" SSS9r\\S'   S
r\	\\      \S'   S
r\	\
\\4      \S'   Srg
)LLMResponse   
latency_msstatus_code
input_textoutput_text	node_typemodelnum_input_tokensnum_output_tokensNzCOptional. When available, logprobs are used to compute Uncertainty.)defaultdescriptionoutput_logprobs.z3timestamp constructed in "%Y-%m-%dT%H:%M:%S" format)r   
created_attagsuser_metadata )__name__
__module____qualname____firstlineno__int__annotations__strr   r   r   r   r   r   r   r   r   __static_attributes__r       V/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/galileo.pyr   r      s    OONJ05Y1OXd38n-  NJ  !%D(49
$.2M8DcN+2r'   r   c                   P    \ rS rSrSS jrS rS rS\S\S\S	\4S
 jrS r	S r
Srg)GalileoObserve$   Nc                     / U l         SU l        [        R                  " SS 5      U l        [        R                  " SS 5      U l        S U l        [        [        R                  S9U l
        g )N   GALILEO_BASE_URLGALILEO_PROJECT_ID)llm_provider)in_memory_records
batch_sizeosgetenvbase_url
project_idheadersr   r   LoggingCallbackasync_httpx_handler)selfs    r(   __init__GalileoObserve.__init__%   sY    -/		"4d;))$8$?15#9-==$
  	r'   c                     SSS.n[         R                  R                  U R                   S3U[        R
                  " S5      [        R
                  " S5      S.S9nUR                  5       S	   nSSS
U 3S.U l        g )Nzapplication/jsonz!application/x-www-form-urlencoded)acceptContent-Typez/loginGALILEO_USERNAMEGALILEO_PASSWORD)usernamepassword)urlr7   dataaccess_tokenzBearer )r>   r?   Authorization)litellmmodule_level_clientpostr5   r3   r4   jsonr7   )r:   r7   galileo_login_responserF   s       r(   set_galileo_headers"GalileoObserve.set_galileo_headers0   s     )?
 ")!<!<!A!A==/(II&89II&89 "B "
 .224^D ).&|n5
r'   c                    S nUb9  UR                  SS 5      S:X  d  [        U[        R                  5      (       a  S nU$ Ub:  [        U[        R                  5      (       a  US   S   S   R                  5       nU$ Ub:  [        U[        R                  5      (       a  UR                  S   R                  nU$ Ub$  [        U[        R                  5      (       a  US   nU$ )N	call_type	embeddingchoicesr   messagerE   )
get
isinstancerH   EmbeddingResponseModelResponserK   TextCompletionResponserR   textImageResponse)r:   response_objkwargsoutputs       r(   get_output_str_from_response+GalileoObserve.get_output_str_from_responseH   s    #JJ{D)[8,(A(ABBF  %*'//+
 +
 "),Q/	:??AF  %*'88+
 +
 "))!,11F  %*'//+
 +
 "&)Fr'   r\   r[   
start_timeend_timec                   #    [         R                  " S5        [        XC-
  R                  5       S-  5      nUR	                  SS5      n[
        R                  R                  XS9nUR	                  S0 5      =(       d    0 nUR	                  SS5      n	UR	                  S	S5      n
U R                  X!S
9nUb  [        USUUUUR	                  SS5      U	U
UR                  S5      S9	nUR                  5       nU R                  R                  U5        [        U R                  5      U R                  :  a  U R!                  5       I S h  vN   g g g  N7f)NzOn Async Successi  rP   rH   )rE   rP   usageprompt_tokensr   completion_tokens)r[   r\      r   -z%Y-%m-%dT%H:%M:%S)	r   r   r   r   r   r   r   r   r   )r	   debugr#   total_secondsrT   rH   utilsget_formatted_promptr^   r   strftime
model_dumpr1   appendlenr2   flush_in_memory_records)r:   r\   r[   r`   ra   _latency_ms
_call_typer   _usager   r   r   request_recordrequest_dicts                 r(   async_log_success_event&GalileoObserve.async_log_success_event^   sS     	/080??ADHIZZY7
]]77 8 

 !!'2.4"!::oq9"JJ':A>77% 8 
 "(&%'$jj#.!1"3%..'N *446L"")),74))*doo=22444 >' #( 5s   EEE	Ec                   #    [         R                  " S5        U R                  R                  U R                   SU R
                   S3U R                  SU R                  0S9I S h  vN nUR                  S:X  a  [         R                  " S5        / U l        g [         R                  " S5        [         R                  " S	UR                  UR                  5        g  Nu7f)
Nzflushing in memory recordsz
/projects/z/observe/ingestrecords)rD   r7   rK   rf   z5Galileo Logger:successfully flushed in memory recordsz1Galileo Logger: failed to flush in memory recordsz'Galileo Logger error=%s, status code=%s)
r	   rh   r9   rJ   r5   r6   r7   r1   r   rY   )r:   responses     r(   rp   &GalileoObserve.flush_in_memory_records   s     9:1166==/DOO+<OLLLT334 7 
 
 3&  G &(D"  !TU  9$$
s   A%C'C(A6Cc                 8   #    [         R                  " S5        g 7f)NzOn Async Failure)r	   rh   )r:   r\   r[   r`   ra   s        r(   async_log_failure_event&GalileoObserve.async_log_failure_event   s     /0s   )r9   r5   r2   r7   r1   r6   )returnN)r   r    r!   r"   r;   rM   r^   r   rv   rp   r}   r&   r   r'   r(   r*   r*   $   sA    	
0,'5'5),'5:='5IL'5R*1r'   r*   )r3   typingr   r   r   r   pydanticr   r   rH   litellm._loggingr	   "litellm.integrations.custom_loggerr
   &litellm.llms.custom_httpx.http_handlerr   r   r   r*   r   r'   r(   <module>r      s9    	 , , %  + ;3) 3(y1\ y1r'   