
    ^h-                         S SK r S SKrS SK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Jr  S SKJr   " S S\
5      rg)	    N)ListOptional)verbose_logger)CustomBatchLogger)HTTPHandlerget_async_httpx_clienthttpxSpecialProvider)StandardLoggingPayloadc                   |   ^  \ rS rSr   SU 4S jjrS rS rS rS rS r	S r
S	\4S
 jrS rS rS rS rSrU =r$ )LiteralAILogger   c                   > [         R                  " S5      =(       d    UU l        SU=(       d    [         R                  " S5      SS.U l        U(       a  X0R                  S'   [	        [
        R                  S9U l        [        5       U l	        [         R                  " SS 5      n[        R                  " 5       U l        [        TU ]8  " S
0 UDU R                  U(       a  [        U5      OS S	.D6  g )NLITERAL_API_URLzapplication/jsonLITERAL_API_KEYlitellm)zContent-Typez	x-api-keyzx-client-namezx-env)llm_providerLITERAL_BATCH_SIZE)
flush_lock
batch_size )osgetenvliteralai_api_urlheadersr   r	   LoggingCallbackasync_httpx_clientr   sync_http_handlerasyncioLockr   super__init__int)selfliteralai_api_keyr   envkwargsr   	__class__s         Y/home/james-whalen/.local/lib/python3.13/site-packages/litellm/integrations/literal_ai.pyr!   LiteralAILogger.__init__   s     "$+<!=!RAR.*Jbii8I.J&

 $'LL!"8-==#
 "-YY3T:
!,,. 	
	
*4s:$	
    c                     [         R                  " SUU5        U R                  XX45      nU R                  R	                  U5        [         R                  " S[        U R                  5      U R                  5        [        U R                  5      U R                  :  a  U R                  5         g g ! [         a    [         R                  " S5         g f = f)Nz7Literal AI Layer Logging - kwargs: %s, response_obj: %s2Literal AI logging: queue length %s, batch size %sz5Literal AI Layer Error - error logging success event.)
r   debug_prepare_log_data	log_queueappendlenr   _send_batch	Exception	exceptionr#   r&   response_obj
start_timeend_timedatas         r(   log_success_event!LiteralAILogger.log_success_event0   s    	  I
 ))&
UDNN!!$'  DDNN#
 4>>"doo5  " 6 	$$G	s   B-B1 1 CCc                    [         R                  " S5         U R                  XX45      nU R                  R	                  U5        [         R
                  " S[        U R                  5      U R                  5        [        U R                  5      U R                  :  a  U R                  5         g g ! [         a    [         R                  " S5         g f = f)N!Literal AI Failure Event Logging!r,   z5Literal AI Layer Error - error logging failure event.)r   infor.   r/   r0   r-   r1   r   r2   r3   r4   r5   s         r(   log_failure_event!LiteralAILogger.log_failure_eventE   s    ?@	))&
UDNN!!$'  DDNN#
 4>>"doo5  " 6 	$$G	s   BB/ / CCc                 ,   U R                   (       d  g U R                   S3nU R                  U R                   5      nU R                  U R                   5      n U R                  R                  UUUS.U R                  S9nUR                  S:  a1  [        R                  " SUR                   SUR                   35        g [        R                  " S[        U R                   5       S35        g ! [         a    [        R                  " S	5         g f = f)
N/api/graphqlquery	variablesurljsonr   ,  Literal AI Error:  - 	Batch of  runs successfully createdLiteral AI Layer Error)r/   r   _steps_query_builder_steps_variables_builderr   postr   status_coder   errortextr-   r1   r3   r4   )r#   rG   rD   rE   responses        r(   r2   LiteralAILogger._send_batchV   s    ~~''(5))$..911$..A		?--22"!*  3 H ##s*$$()=)=(>c(--Q $$DNN 344NO  	?$$%=>	?s   A(C0 -C0 0 DDc                   #     [         R                  " SUU5        U R                  XX45      nU R                  R	                  U5        [         R                  " S[        U R                  5      U R                  5        [        U R                  5      U R                  :  a  U R                  5       I S h  vN   g g  N! [         a    [         R                  " S5         g f = f7f)Nz=Literal AI Async Layer Logging - kwargs: %s, response_obj: %sr,   z;Literal AI Layer Error - error logging async success event.)
r   r-   r.   r/   r0   r1   r   flush_queuer3   r4   r5   s         r(   async_log_success_event'LiteralAILogger.async_log_success_eventr   s     	  O
 ))&
UDNN!!$'  DDNN#
 4>>"doo5&&((( 6( 	$$M	s;   C#B0B= 4B;5B= 9C#;B= = C C#C  C#c                   #    [         R                  " S5         U R                  XX45      nU R                  R	                  U5        [         R
                  " S[        U R                  5      U R                  5        [        U R                  5      U R                  :  a  U R                  5       I S h  vN   g g  N! [         a    [         R                  " S5         g f = f7f)Nr=   r,   z;Literal AI Layer Error - error logging async failure event.)r   r>   r.   r/   r0   r-   r1   r   rX   r3   r4   r5   s         r(   async_log_failure_event'LiteralAILogger.async_log_failure_event   s     ?@	))&
UDNN!!$'  DDNN#
 4>>"doo5&&((( 6( 	$$M	s;   C!BB; 2B93B; 7C!9B; ; CC!CC!c                   #    U R                   (       d  g U R                   S3nU R                  U R                   5      nU R                  U R                   5      n U R                  R                  UUUS.U R                  S9I S h  vN nUR                  S:  a1  [        R                  " SUR                   SUR                   35        g [        R                  " S[        U R                   5       S35        g  Ns! [        R                   aN  n[        R                  " S	UR                   R                   SUR                   R                   35         S nAg S nAf["         a    [        R                  " S
5         g f = f7f)NrB   rC   rF   rI   rJ   rK   rL   rM   zLiteral AI HTTP Error: rN   )r/   r   rO   rP   r   rQ   r   rR   r   rS   rT   r-   r1   httpxHTTPStatusErrorr4   rU   r3   )r#   rG   rD   rE   rU   es         r(   async_send_batch LiteralAILogger.async_send_batch   sR    ~~''(5))$..911$..A		?!4499"!*  :  H ##s*$$()=)=(>c(--Q $$DNN 344NO  $$ 	$$)!***@*@)AQZZ__DUV   	?$$%=>	?s\   AF+C< C:AC< F-C< 9F:C< <E?AEF#E?<F>E??Freturnc                 P   UR                  SS 5      nUc  [        S5      eUS   nUR                  S0 5      R                  S0 5      nUS   nUS   n	US   n
/ n[        U
[        5      (       a  SU
;   a  U
S   nU(       a  US	   S
   OS nS nS nU	(       a  [        U	[        5      (       ar  [        U	S	   [        5      (       aZ  U	 HT  n[        USS 5      =n(       d  M  UR                  S5      nUR                  S5      nUR                  S5      US'   SUS'   MV     UR                  SS 5      nUR                  S[        [        R                  " 5       5      5      US   UR                  SS5      UR                  SS 5      UR                  SS 5      UR                  SS 5      S S SUR                  SUR                  SS 5      5      [        U5      [        U5      UUS   US   US   UUUR                  SS 5      UR                  SS5      XC-
  R                  5       UU	UUS!.S".nU$ )#Nstandard_logging_objectz+standard_logging_object not found in kwargsmetadatalitellm_paramsmodel_parametersmessagesrU   choicesr   message__literal_prompt__	prompt_idrE   uuidT	templatedtoolsstep_id	error_strmodel literalai_thread_idliteralai_parent_idliteralai_root_run_idllmtagsliteralai_tagsprompt_tokenscompletion_tokenstotal_tokenscustom_llm_providerr   )inputTokenCountoutputTokenCount
tokenCountpromptIdrE   providerrt   durationsettingsrj   messageCompletionrq   )idrS   namethreadIdparentId	rootRunIdinputoutputtyperz   	startTimeendTimerg   
generation)get
ValueError
isinstancedictlistgetattrpopstrro   uuid4total_seconds)r#   r&   r6   r7   r8   logging_payloadclean_metadatarg   r   rj   rU   rk   message_completionrn   rE   rl   literal_promptrq   steps                      r(   r.   !LiteralAILogger._prepare_log_data   s:   <BJJ%t=
 "JKK(4::.377
BG"#56":.":.h%%)x*?y)G6=WQZ	24		
8T22z(1+t7T7T#%,W6JD%QQ>Q . 2 2; ?I . 2 2; ?I&4&8&8&@GFO+/GK( $ Wd+ ,,y#djjl*;<$[1JJw+ %:DA %:DA!&=tDLL6F)MNZ8}&#2?#C$34G$H-n=%&"JJ'<iHGR0%2AAC$$%7
: r*   c                    Sn[        [        U5      5       Hi  nUSR                  / SPU PSPU PSPU PSPU PSPU PSPU PSPU PS	PU PS
PU PSPU PSPU PSPU PSPU PSPU PSPU PSPU PSP5      -  nMk     U$ )Nru   z$id_z : String!
            $threadId_z : String
            $rootRunId_z: String
            $type_z": StepType
            $startTime_z : DateTime
            $endTime_z: DateTime
            $error_z: String
            $input_z: Json
            $output_z: Json
            $metadata_z: Json
            $parentId_z: String
            $name_z: String
            $tags_z$: [String!]
            $generation_z-: GenerationPayloadInput
            $scores_z0: [ScorePayloadInput!]
            $attachments_z(: [AttachmentPayloadInput!]
            ranger1   joinr#   steps	generatedr   s       r(   _steps_query_variables_builder.LiteralAILogger._steps_query_variables_builder   s   	E
#B  T "  & dt $ t		
 T
 4 4 D d d $ $  D  I $$ r*   c                    Sn[        [        U5      5       Hn  nUSR                  / SPU PSPU PSPU PSPU PSPU PSPU PSPU PS	PU PS
PU PSPU PSPU PSPU PSPU PSPU PSPU PSPU PSPU PSP5      -  nMp     U$ )Nru   z
        stepz": ingestStep(
            id: $id_z!
            threadId: $threadId_z#
            rootRunId: $rootRunId_z#
            startTime: $startTime_z
            endTime: $endTime_z
            type: $type_z
            error: $error_z
            input: $input_z
            output: $output_z!
            metadata: $metadata_z!
            parentId: $parentId_z
            name: $name_z
            tags: $tags_z%
            generation: $generation_z
            scores: $scores_z'
            attachments: $attachments_z>
        ) {
            ok
            message
        }
    r   r   s       r(   _steps_ingest_steps_builder+LiteralAILogger._steps_ingest_steps_builder  s   	E
#B    DD! "$%# $&$	'#	
 $&$
'  "d#  $ $  D!! "$%! "$%  % &(D)   D! !'!" (*d#"+# I $0 r*   c                 P    SU R                  U5       SU R                  U5       S3$ )Nz
        mutation AddStep(z) {
        z
        }
        )r   r   )r#   r   s     r(   rO   $LiteralAILogger._steps_query_builder'  s>    ==eDE F			)	)%	01 2	 	r*   c                 |    S n0 n[        [        U5      5       H  nX   nUR                  U" XT5      5        M      U$ )Nc                 X    0 nU R                  5        H  u  p4Uc  M
  XBU SU 3'   M     U$ )N_)items)eventr   resultkeyvalues        r(   serialize_step@LiteralAILogger._steps_variables_builder.<locals>.serialize_step/  s8    F#kkm
$,1cU!B4=) ,
 Mr*   )r   r1   update)r#   r   r   rE   ir   s         r(   rP   (LiteralAILogger._steps_variables_builder.  sC    	 	s5z"A8D^D45 # r*   )r   r   r   r   r   )Nzhttps://cloud.getliteral.aiN)__name__
__module____qualname____firstlineno__r!   r:   r?   r2   rY   r\   rb   r   r.   r   r   rO   rP   __static_attributes____classcell__)r'   s   @r(   r   r      sX     7	
6*"?8*"?@;t ;z,8 r*   r   )r   r   ro   typingr   r   r_   litellm._loggingr   (litellm.integrations.custom_batch_loggerr   &litellm.llms.custom_httpx.http_handlerr   r   r	   litellm.types.utilsr
   r   r   r*   r(   <module>r      s:     	  !  + F 
 7i' ir*   