Ë
    tPêjQ-  ã                   ó‚   — d dl Z d dlZd dlmZ d dlZd dlm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)ÚFinal)Úverbose_logger)Úuuid)Ú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         €úd/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/literal_ai.pyr    zLiteralAILogger.__init__   s¹   ø€ ô "$§¡Ð+<Ó!=Ò!RÐARˆÔà.Ø*ÒJ¬b¯i©iÐ8IÓ.JØ&ñ
ˆŒñ
 Ø$'ˆD�L‰L˜Ñ!Ü"8ÔFZ×FjÑFjÔ"kˆÔÜ!,£ˆÔÜŸI™IÐ&:¸DÓAˆ
Ü!Ÿ,™,›.ˆŒÜ‰Ññ 	
Øð	
à—‘Ù*4”s˜:”¸$õ	
ó    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: %sú2Literal 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_event.   s¶   € ð	^Ü× Ñ ØIØØôð
 ×0Ñ0°¸ÀzÐS[Ó\ˆDØ�N‰N×!Ñ! $Ô'Ü× Ñ ØDÜ�D—N‘NÓ#Ø—‘ôô
 �4—>‘>Ó" d§o¡oÒ5Ø× Ñ Õ"ð 6øäò 	^Ü×$Ñ$Ð%\Ö]ð	^ú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_eventA   s¬   € Ü×ÑÐ?Ô@ð	^Ø×0Ñ0°¸ÀzÐS[Ó\ˆDØ�N‰N×!Ñ! $Ô'Ü× Ñ ØDÜ�D—N‘NÓ#Ø—‘ôô
 �4—>‘>Ó" d§o¡oÒ5Ø× Ñ Õ"ð 6øäò 	^Ü×$Ñ$Ð%\Ö]ð	^ús   —BB. Â.CÃCc                 ó  — | j                   sy | j                  › d�}| j                  | j                   «      }| j                  | j                   «      }	 | j                  j                  |||dœ| j                  ¬«      }|j                  dk\  r,t        j                  d|j                  |j                  «       y t        j                  dt        | j                   «      «       y # t        $ r t        j                  d«       Y y w xY w)Nú/api/graphql©ÚqueryÚ	variables©ÚurlÚjsonr   é,  úLiteral AI Error: %s - %sú%Batch of %s 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_batchP   sé   € Ø�~Š~Øà×.Ñ.Ð/¨|Ð<ˆØ×0Ñ0°·±Ó@ˆØ×8Ñ8¸¿¹ÓHˆ	ð	?Ø"×4Ñ4×9Ñ9Øà"Ø!*ñð Ÿ™ð :ó ˆHð ×#Ñ# sÒ*Ü×$Ñ$Ð%@À(×BVÑBVÐX`×XeÑXeÕfä×$Ñ$Ð%LÌcÐRV×R`ÑR`ÓNaÕbøÜò 	?Ü×$Ñ$Ð%=Ö>ð	?ú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_eventh   sÂ   è ø€ ð	dÜ× Ñ ØOØØôð
 ×0Ñ0°¸ÀzÐS[Ó\ˆDØ�N‰N×!Ñ! $Ô'Ü× Ñ ØDÜ�D—N‘NÓ#Ø—‘ôô
 �4—>‘>Ó" d§o¡oÒ5Ø×&Ñ&Ó(×(Ñ(ð 6Ø(ùÜò 	dÜ×$Ñ$Ð%bÖcð	dü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   rQ   r1   r2   r3   s         r'   Úasync_log_failure_eventz'LiteralAILogger.async_log_failure_event{   s¸   è ø€ Ü×ÑÐ?Ô@ð	dØ×0Ñ0°¸ÀzÐS[Ó\ˆDØ�N‰N×!Ñ! $Ô'Ü× Ñ ØDÜ�D—N‘NÓ#Ø—‘ôô
 �4—>‘>Ó" d§o¡oÒ5Ø×&Ñ&Ó(×(Ñ(ð 6Ø(ùÜò 	dÜ×$Ñ$Ð%bÖcð	dü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\  r,t        j                  d|j                  |j                  «       y t        j                  dt        | j                   «      «       y 7 Œi# t        j                  $ rI}t        j                  d|j                   j                  |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   zLiteral AI HTTP Error: %s - %srH   )r-   r   rI   rJ   r   rK   r   rL   r   rM   rN   r+   r/   ÚhttpxÚHTTPStatusErrorr2   rO   r1   )r"   rC   r@   rA   rO   Úes         r'   Úasync_send_batchz LiteralAILogger.async_send_batchŠ   s6  è ø€ Ø�~Š~Øà×.Ñ.Ð/¨|Ð<ˆØ×0Ñ0°·±Ó@ˆØ×8Ñ8¸¿¹ÓHˆ	ð	?Ø$(×$;Ñ$;×$@Ñ$@Øà"Ø!*ñð Ÿ™ð %Aó %÷ ˆHð ×#Ñ# sÒ*Ü×$Ñ$Ð%@À(×BVÑBVÐX`×XeÑXeÕfä×$Ñ$Ð%LÌcÐRV×R`ÑR`ÓNaÕbðùô ×$Ñ$ò 	pÜ×$Ñ$Ð%EÀqÇzÁz×G]ÑG]Ð_`×_iÑ_i×_nÑ_n×oÑoûÜò 	?Ü×$Ñ$Ð%=Ö>ð	?üsZ   ‚AE.Á.C0 ÂC.Â>C0 ÃE.Ã)C0 Ã-E.Ã.C0 Ã0E+Ä?EÅE.Å!E+Å(E.Å*E+Å+E.Ú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ÚmessagesrO   Úchoicesr   ÚmessageÚ__literal_prompt__Ú	prompt_idrA   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ÚpromptIdrA   Úproviderri   ÚdurationÚsettingsr`   ÚmessageCompletionrf   )ÚidrM   ÚnameÚthreadIdÚparentIdÚ	rootRunIdÚinputÚoutputÚtypero   Ú	startTimeÚendTimer]   Ú
generation)ÚgetÚ
ValueErrorÚ
isinstanceÚdictÚlistÚgetattrÚpopÚstrr   Úuuid4Útotal_seconds)r"   r%   r4   r5   r6   Úlogging_payloadÚclean_metadatar]   r{   r`   rO   ra   Úmessage_completionrd   rA   rb   Úliteral_promptrf   Ústeps                      r'   r,   z!LiteralAILogger._prepare_log_data¤   s5  € Ø@FÇ
Á
ÐKdÐfjÓ@kˆàÐ"ÜÐJÓKÐKØ /°
Ñ ;ˆØ Ÿ*™*Ð%5°rÓ:×>Ñ>¸zÈ2ÓNˆà)Ð*<Ñ=ˆØ)¨*Ñ5ˆØ)¨*Ñ5ˆØˆÜ�h¤Ô%¨)°xÑ*?Ø˜yÑ)ˆGÙ=D G¨A¡J¨yÒ$9È$ÐØˆ	Øˆ	áœ
 8¬TÔ2´zÀ(È1Á+ÌtÔ7TØ#ò 0�Ü%,¨WÐ6JÈDÓ%QÐQ�>ÑQØ .× 2Ñ 2°;Ó ?�IØ .× 2Ñ 2°;Ó ?�IØ&4×&8Ñ&8¸Ó&@�G˜F‘OØ+/�G˜KÒ(ð0ð  —|‘| G¨TÓ2ˆð —,‘,˜y¬#¬d¯j©j«lÓ*;Ó<Ø$ [Ñ1Ø—J‘J˜w¨Ó+Ø Ÿ™Ð%:¸DÓAØ Ÿ™Ð%:¸DÓAØ!Ÿ™Ð&=¸tÓDØØØØ—L‘L ¨¯©Ð6FÈÓ)MÓNÜ˜Z›Ü˜8“}Ø&à#2°?Ñ#CØ$3Ð4GÑ$HØ-¨nÑ=Ø%Ø&Ø"ŸJ™JÐ'<¸iÓHØŸ™ G¨RÓ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 )Nrj   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 )Nrj   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'   rI   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à#Ÿk™k›mò 2‘
��UàÑ$Ø,1�F˜c˜U ! B 4˜=Ò)ð2ð
 ˆMr(   )r™   r/   Úupdate)r"   rœ   rª   rA   Úir–   s         r'   rJ   z(LiteralAILogger._steps_variables_builder  sL   € ò	ð ˆ	Ü”s˜5“zÓ"ò 	6ˆAØ˜‘8ˆDØ×Ñ™^¨D°!Ó4Õ5ð	6ð Ðr(   )Nzhttps://cloud.getliteral.aiN)Ú__name__Ú
__module__Ú__qualname__r    r8   r<   r0   rR   rT   rY   r‹   r,   rž   r    rI   rJ   Ú__classcell__)r&   s   @r'   r   r      sV   ø„ ð Ø7Øõ	
ò2^ò&^ò?ò0dò&dò?ð49Ètó 9òvò,ò8ör(   r   )r   r   Útypingr   rV   Úlitellm._loggingr   Úlitellm._uuidr   Ú(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ôSÐ'õ Sr(   