
    AHj.                         d dl Z d dlZd dlmZ d dlmZmZ d dlZd dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZ  G d d	e      Zy)
    N)uuid)ListOptional)verbose_logger)CustomBatchLogger)HTTPHandlerget_async_httpx_clienthttpxSpecialProvider)StandardLoggingPayloadc                   n     e Zd Z	 	 	 d fd	Zd Zd Zd Zd Zd Zd Z	de
fd	Zd
 Zd Zd Zd Z xZS )LiteralAILoggerc                    t        j                  d      xs || _        d|xs t        j                  d      dd| _        |r|| j                  d<   t	        t
        j                        | _        t               | _	        t        j                  dd       }t        j                         | _        t        | 8  d
i || j                  |rt        |      nd d	 y )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         W/root/tools/cai/cai_env/lib/python3.12/site-packages/litellm/integrations/literal_ai.pyr!   zLiteralAILogger.__init__   s     "$+<!=!RAR.*Jbii8I.J&

 $'DLL!"8-==#
 "-YY3T:
!,,. 	
	
*4s:$	
    c                    	 t        j                  d||       | j                  ||||      }| j                  j	                  |       t        j                  dt        | j                        | j                         t        | j                        | j                  k\  r| j                          y y # t        $ r t        j                  d       Y y w xY w)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_eventz!LiteralAILogger.log_success_event0   s    	  I
 ))&,
HUDNN!!$'  DDNN#
 4>>"doo5  " 6 	$$G	s   B,B0 0CCc                    t        j                  d       	 | j                  ||||      }| j                  j	                  |       t        j
                  dt        | j                        | j                         t        | j                        | j                  k\  r| j                          y y # t        $ r t        j                  d       Y y w xY w)N!Literal AI Failure Event Logging!r+   z5Literal AI Layer Error - error logging failure event.)r   infor-   r.   r/   r,   r0   r   r1   r2   r3   r4   s         r(   log_failure_eventz!LiteralAILogger.log_failure_eventE   s    ?@	))&,
HUDNN!!$'  DDNN#
 4>>"doo5  " 6 	$$G	s   BB. .CCc                    | j                   sy | j                   d}| j                  | j                         }| j                  | j                         }	 | j                  j                  |||d| j                        }|j                  dk\  r0t        j                  d|j                   d|j                          y t        j                  dt        | j                          d       y # t        $ r t        j                  d	       Y y w xY w)
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,   r0   r2   r3   )r#   rD   rA   rB   responses        r(   r1   zLiteralAILogger._send_batchV   s    ~~''(5))$..911$..A		?--22"!*  3 H ##s*$$()=)=(>c(--Q $$DNN 344NO  	?$$%=>	?s   A)C+ >,C+ +DDc                   K   	 t        j                  d||       | j                  ||||      }| j                  j	                  |       t        j                  dt        | j                        | j                         t        | j                        | j                  k\  r| j                          d {    y y 7 # t        $ r t        j                  d       Y y w xY ww)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.   r/   r0   r   flush_queuer2   r3   r4   s         r(   async_log_success_eventz'LiteralAILogger.async_log_success_eventr   s     	  O
 ))&,
HUDNN!!$'  DDNN#
 4>>"doo5&&((( 6( 	$$M	s;   C B/B< 3B:4B< 8C :B< <CC CC c                   K   t        j                  d       	 | j                  ||||      }| j                  j	                  |       t        j
                  dt        | j                        | j                         t        | j                        | j                  k\  r| j                          d {    y y 7 # t        $ r t        j                  d       Y y w xY ww)Nr;   r+   z;Literal AI Layer Error - error logging async failure event.)r   r<   r-   r.   r/   r,   r0   r   rT   r2   r3   r4   s         r(   async_log_failure_eventz'LiteralAILogger.async_log_failure_event   s     ?@	))&,
HUDNN!!$'  DDNN#
 4>>"doo5&&((( 6( 	$$M	s;   CBB: 1B82B: 6C8B: :CCCCc                   K   | j                   sy | j                   d}| j                  | j                         }| j                  | j                         }	 | j                  j                  |||d| j                         d {   }|j                  dk\  r0t        j                  d|j                   d|j                          y t        j                  dt        | j                          d       y 7 p# t        j                  $ rM}t        j                  d	|j                   j                   d|j                   j                          Y d }~y d }~wt"        $ r t        j                  d
       Y y w xY ww)Nr?   r@   rC   rF   rG   rH   rI   rJ   zLiteral AI HTTP Error: rK   )r.   r   rL   rM   r   rN   r   rO   r   rP   rQ   r,   r0   httpxHTTPStatusErrorr3   rR   r2   )r#   rD   rA   rB   rR   es         r(   async_send_batchz LiteralAILogger.async_send_batch   sS    ~~''(5))$..911$..A		?!4499"!*  :  H ##s*$$()=)=(>c(--Q $$DNN 344NO  $$ 	$$)!***@*@)AQZZ__DUV   	?$$%=>	?s\   AE9.C7 C5AC7 E9,C7 4E95C7 7E6
AEE9!E63E95E66E9returnc                    |j                  dd       }|t        d      |d   }|j                  di       j                  di       }|d   }|d   }	|d   }
g }t        |
t              r	d|
v r|
d   }|r|d	   d
   nd }d }d }|	rut        |	t              ret        |	d	   t              rR|	D ]M  }t        |dd       x}s|j                  d      }|j                  d      }|j                  d      |d<   d|d<   O |j                  dd       }|j                  dt        t        j                                     |d   |j                  dd      |j                  dd       |j                  dd       |j                  dd       d d d|j                  d|j                  dd             t        |      t        |      ||d   |d   |d   |||j                  dd       |j                  dd      ||z
  j                         ||	||d!d"}|S )#Nstandard_logging_objectz+standard_logging_object not found in kwargsmetadatalitellm_paramsmodel_parametersmessagesrR   choicesr   message__literal_prompt__	prompt_idrB   r   T	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promptIdrB   providerrl   durationsettingsrc   messageCompletionri   )idrP   namethreadIdparentId	rootRunIdinputoutputtyperr   	startTimeendTimer`   
generation)get
ValueError
isinstancedictlistgetattrpopstrr   uuid4total_seconds)r#   r&   r5   r6   r7   logging_payloadclean_metadatar`   r~   rc   rR   rd   message_completionrg   rB   re   literal_promptri   steps                      r(   r-   z!LiteralAILogger._prepare_log_data   s8   <BJJ%t=
 "JKK(4::.377
BG"#56":.":.h%)x*?y)G6=WQZ	24		
8T2z(1+t7T# 0%,W6JD%QQ>Q . 2 2; ?I . 2 2; ?I&4&8&8&@GFO+/GK(0 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                    d}t        t        |            D ]h  }|dj                  g d| d| d| d| d| d| d| d	| d
| d| d| d| d| d| d| d| d      z  }j |S )Nrm   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!]
            ranger0   joinr#   steps	generatedr   s       r(   _steps_query_variables_builderz.LiteralAILogger._steps_query_variables_builder   s   	E
# 	B  T "  & dt $ t		
 T
 4 4 D d d $ $  D  I	$ r)   c                    d}t        t        |            D ]m  }|dj                  g d| d| d| d| d| d| d| d	| d
| d| d| d| d| d| d| d| d| d      z  }o |S )Nrm   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_builderz+LiteralAILogger._steps_ingest_steps_builder  s   	E
# 	B    DD! "$%# $&$	'#	
 $&$
'  "d#  $ $  D!! "$%! "$%  % &(D)   D! !'!" (*d#"+# I	0 r)   c                 P    d| j                  |       d| j                  |       dS )Nz
        mutation AddStep(z) {
        z
        }
        )r   r   )r#   r   s     r(   rL   z$LiteralAILogger._steps_query_builder'  s>    ==eDE F			)	)%	01 2	 	r)   c                 |    d }i }t        t        |            D ]  }||   }|j                   |||             ! |S )Nc                 T    i }| j                         D ]  \  }}|	||| d| <    |S )N_)items)eventr   resultkeyvalues        r(   serialize_stepz@LiteralAILogger._steps_variables_builder.<locals>.serialize_step/  sA    F#kkm 2
U$,1FcU!B4=)2
 Mr)   )r   r0   update)r#   r   r   rB   ir   s         r(   rM   z(LiteralAILogger._steps_variables_builder.  sL    	 	s5z" 	6A8D^D!45	6 r)   )Nzhttps://cloud.getliteral.aiN)__name__
__module____qualname__r!   r9   r=   r1   rU   rW   r\   r   r-   r   r   rL   rM   __classcell__)r'   s   @r(   r   r      sS     7	
6*"?8*"?@;t ;z,8r)   r   )r   r   litellm._uuidr   typingr   r   rY   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)   