
    g-                         d dl Z d dlZd dl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)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         T/var/www/openai/venv/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+   r/   r   r0   r1   r2   r3   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+   r/   r1   r2   )r"   rC   r@   rA   responses        r'   r0   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.   r/   r   flush_queuer1   r2   r3   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+   r/   r   rS   r1   r2   r3   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?   rB   rE   rF   rG   rH   rI   zLiteral AI HTTP Error: rJ   )r-   r   rK   rL   r   rM   r   rN   r   rO   rP   r+   r/   httpxHTTPStatusErrorr2   rQ   r1   )r"   rC   r@   rA   rQ   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messagesrQ   choicesr   message__literal_prompt__	prompt_idrA   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promptIdrA   providerrl   durationsettingsrb   messageCompletionri   )idrO   namethreadIdparentId	rootRunIdinputoutputtyperr   	startTimeendTimer_   
generation)get
ValueError
isinstancedictlistgetattrpopstrrg   uuid4total_seconds)r"   r%   r4   r5   r6   logging_payloadclean_metadatar_   r~   rb   rQ   rc   message_completionrf   rA   rd   literal_promptri   steps                      r'   r,   z!LiteralAILogger._prepare_log_data   s3   <BJJ%t=
 "JKK(4::.377
BG"#56":.":.h%)x*?y)G6=WQZ	24		
8T2z(1+t7T#%,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                    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!]
            ranger/   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'   rK   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/  s<    F#kkm
U$,1FcU!B4=) ,
 Mr(   )r   r/   update)r"   r   r   rA   ir   s         r'   rL   z(LiteralAILogger._steps_variables_builder.  sG    	 	s5z"A8D^D!45 # r(   )Nzhttps://cloud.getliteral.aiN)__name__
__module____qualname__r    r8   r<   r0   rT   rV   r[   r   r,   r   r   rK   rL   __classcell__)r&   s   @r'   r   r      sS     7	
6*"?8*"?@;t ;z,8r(   r   )r   r   rg   typingr   r   rX   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(   