Ë
    tPêj  ã                   óè   — U d Z ddlmZmZm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 dd	lmZ dd
lmZ ddlmZ  G d„ de«      Z G d„ de
«      Z e«       Zeed<    G d„ de«      Zy)z/
Humanloop integration

https://humanloop.com/
é    )ÚAnyÚFinalÚcastN)Ú	TypedDict)Ú	DualCache)Ú_get_httpx_client)Úget_secret_str)ÚAllMessageValues)Ú
PromptSpec)ÚStandardCallbackDynamicParamsé   )ÚCustomLoggerc                   óR   — e Zd ZU eed<   ee   ed<   edz  ed<   eeef   dz  ed<   y)ÚPromptManagementClientÚ	prompt_idÚprompt_templateNÚmodelÚoptional_params)	Ú__name__Ú
__module__Ú__qualname__ÚstrÚ__annotations__Úlistr
   Údictr   © ó    úc/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/integrations/humanloop.pyr   r      s0   … ØƒNØÐ*Ñ+Ó+Ø�‰:ÓØ˜#˜s˜(‘^ dÑ*Ô*r   r   c                   ó¾   — e Zd Zed„ «       Zdededz  fd„Zdee	   de
eef   dee	   fd„Zded	edefd
„Zded	edefd„Zdee	   de
dz  dee	   fd„Zdededefd„Zy)ÚHumanLoopPromptManagerc                  ó   — y)NÚ	humanloopr   )Úselfs    r   Úintegration_namez'HumanLoopPromptManager.integration_name   s   € àr   Úhumanloop_prompt_idÚreturnNc                 óH   — t        t        d z  | j                  |¬«      «      S )N)Úkey)r   r   Ú	get_cache)r#   r%   s     r   Ú_get_prompt_from_id_cachez0HumanLoopPromptManager._get_prompt_from_id_cache#   s!   € ÜÔ*¨TÑ1°4·>±>ÐFY°>Ó3ZÓ[Ð[r   r   Úprompt_variablesc                 óò   — g }|D ]o  }|j                  d«      }|rIt        |t        «      r9|j                  dd«      j                  dd«      } |j                  di |¤Ž}||d<   |j                  |«       Œq |S )ac  
        Helper function to compile the prompt by substituting variables in the template.

        Args:
            prompt_template: List[AllMessageValues]
            prompt_variables (dict): A dictionary of variables to substitute into the prompt template.

        Returns:
            list: A list of dictionaries with variables substituted.
        Úcontentz{{ú{z}}ú}r   )ÚgetÚ
isinstancer   ÚreplaceÚformatÚappend)r#   r   r+   Úcompiled_promptsÚtemplateÚtcÚformatted_templateÚcompiled_contents           r   Ú_compile_prompt_helperz-HumanLoopPromptManager._compile_prompt_helper&   s‰   € ð ;=Ðà'ò 	.ˆHØ—‘˜iÓ(ˆBÙ”j ¤SÔ)Ø%'§Z¡Z°°cÓ%:×%BÑ%BÀ4ÈÓ%MÐ"Ø#<Ð#5×#<Ñ#<Ñ#PÐ?OÑ#PÐ Ø&6�˜Ñ#Ø×#Ñ# HÕ-ð	.ð  Ðr   Úhumanloop_api_keyc                 óD  — t        «       }d|› �}|j                  ||ddœ¬«      }	 |j                  «        |j                  «       }|d   }t        |t        «      r|g}	n*t        |t        «      r|}	nt        dt        |«      › �«      ‚|d   }
i }|j                  «       D ]  \  }}|t        j                   v sŒ|||<   Œ t#        |t%        t        t&           |	«      |
|¬	«      S # t        j                  $ r'}t        d|j                  j                  › �«      ‚d }~ww xY w)
Nz%https://api.humanloop.com/v5/prompts/zapplication/json)z	X-Api-KeyzContent-Type)ÚurlÚheadersz%Error getting prompt from Humanloop: r6   zInvalid template message type: r   )r   r   r   r   )r   r0   Úraise_for_statusÚhttpxÚHTTPStatusErrorÚ	ExceptionÚresponseÚtextÚjsonr1   r   r   Ú
ValueErrorÚtypeÚitemsÚlitellmÚOPENAI_CHAT_COMPLETION_PARAMSr   r   r
   )r#   r%   r;   ÚclientÚbase_urlrC   ÚeÚjson_responseÚtemplate_messageÚtemplate_messagesÚtemplate_modelr   ÚkÚvs                 r   Ú_get_prompt_from_id_apiz.HumanLoopPromptManager._get_prompt_from_id_api?   sD  € Ü)Ó+ˆàAÐBUÐAVÐWˆà Ÿ*™*Øà.Ø 2ñð %ó 
ˆð	WØ×%Ñ%Ô'ð  (Ÿ}™}›ˆØ"/°
Ñ";ÐÜÐ&¬Ô-Ø!1Ð 2ÑÜÐ(¬$Ô/Ø 0ÑäÐ>¼tÐDTÓ?UÐ>VÐWÓXÐXØ -¨gÑ 6ˆØ!#ˆØ!×'Ñ'Ó)ò 	'‰DˆAˆqØ”G×9Ñ9Ò9Ø%&� Ò"ð	'ô &Ø)Ü ¤Ô&6Ñ!7Ð9JÓKØ Ø+ô	
ð 	
øô! ×$Ñ$ò 	WÜÐCÀAÇJÁJÇOÁOÐCTÐUÓVÐVûð	Wús   §C% Ã%DÃ8"DÄDc                 ó”   — | j                  |«      }|€4| j                  ||«      }| j                  ||t        j                  ¬«       |S )N)r(   ÚvalueÚttl)r*   rT   Ú	set_cacherI   Ú"HUMANLOOP_PROMPT_CACHE_TTL_SECONDS)r#   r%   r;   Úprompts       r   Ú_get_prompt_from_idz*HumanLoopPromptManager._get_prompt_from_ide   sS   € Ø×/Ñ/Ð0CÓDˆØˆ>Ø×1Ñ1Ð2EÐGXÓYˆFØ�N‰NØ'ØÜ×>Ñ>ð ô ð
 ˆr   c                 ó8   — d }|€i }| j                  ||¬«      }|S )N©r   r+   )r:   )r#   r   r+   Úcompiled_prompts       r   Úcompile_promptz%HumanLoopPromptManager.compile_promptp   s8   € ð
 .2ˆàÐ#Ø!Ðà×5Ñ5Ø+Ø-ð 6ó 
ˆð
 Ðr   Úprompt_management_clientr   c                 óT   — |d   �|d   S |j                  | j                  › d�d«      S )Nr   ú/Ú )r2   r$   )r#   r`   r   s      r   Ú_get_model_from_promptz-HumanLoopPromptManager._get_model_from_prompt�   s7   € Ø# GÑ,Ð8Ø+¨GÑ4Ð4à—=‘= D×$9Ñ$9Ð#:¸!Ð!<¸bÓAÐAr   )r   r   r   Úpropertyr$   r   r   r*   r   r
   r   r   r:   rT   r[   r_   rd   r   r   r   r    r       sí   „ Øñó ðð\¸Sð \ÐE[Ð^bÑEbó \ð Ø#Ð$4Ñ5ð ØIMÈcÐSVÈhÉð à	ÐÑ	ó ð2$
¸3ð $
ÐSVð $
Ð[qó $
ðL	°sð 	Èsð 	ÐWmó 	ðàÐ.Ñ/ðð  ™+ðð 
ÐÑ	ó	ð"BÐ?Uð BÐ^að BÐfiô Br   r    Úprompt_managerc                   óž   ‡ — e Zd Z	 	 	 	 	 ddedee   dededz  dedz  dededz  d	edz  d
e	dz  de
dz  de
dz  deeee   ef   fˆ fd„Zˆ xZS )ÚHumanloopLoggerNr   ÚmessagesÚnon_default_paramsr   r+   Údynamic_callback_paramsÚprompt_specÚprompt_labelÚprompt_versionÚignore_prompt_manager_modelÚ%ignore_prompt_manager_optional_paramsr&   c           	      óB  •— |j                  d«      xs t        d«      }|€t        d«      ‚|€t        ‰| �  |||||||¬«      S t
        j                  ||¬«      }t
        j                  |d   |¬«      }|d   xs i }i |¥|¥}t
        j                  ||¬	«      }|||fS )
Nr;   ÚHUMANLOOP_API_KEYz/prompt_id is required for Humanloop integration)r   ri   rj   r   r+   rk   rl   )r%   r;   r   r]   r   )r`   r   )	r0   r	   rF   ÚsuperÚget_chat_completion_promptrf   r[   r_   rd   )r#   r   ri   rj   r   r+   rk   rl   rm   rn   ro   rp   r;   r   Úupdated_messagesÚprompt_template_optional_paramsÚupdated_non_default_paramsÚ	__class__s                    €r   rt   z*HumanloopLogger.get_chat_completion_promptŒ   sþ   ø€ ð$ 4×7Ñ7Ð8KÓLÒsÔP^Ð_rÓPsÐàÐÜÐNÓOÐOàÐ$Ü‘7Ñ5ØØ!Ø#5Ø#Ø!1Ø(?Ø'ð 6ó ð ô "0×!CÑ!CØ )Ð=Nð "Dó "
ˆô #1×"?Ñ"?Ø+Ð,=Ñ>Ø-ð #@ó #
Ðð
 2AÐARÑ1SÒ1YÐWYÐ'ð-
Ø ð-
à-ð-
Ð"ô
 ×5Ñ5ÈÐfkÐ5ÓlˆàÐ&Ð(BÐBÐBr   )NNNFF)r   r   r   r   r   r
   r   r   r   ÚintÚboolÚtuplert   Ú__classcell__)rx   s   @r   rh   rh   ‹   sÞ   ø„ ð *.Ø#'Ø%)Ø38Ø=Bñ4Càð4Cð Ð'Ñ(ð4Cð !ð	4Cð
 ˜‘:ð4Cð  ™+ð4Cð "?ð4Cð   $Ñ&ð4Cð ˜D‘jð4Cð ˜d™
ð4Cð &*¨D¡[ð4Cð 04°d©{ð4Cð 
ØØÐÑØð	ñ
÷4Cñ 4Cr   rh   )Ú__doc__Útypingr   r   r   r@   Útyping_extensionsr   rI   Úlitellm.cachingr   Ú&litellm.llms.custom_httpx.http_handlerr   Úlitellm.secret_managers.mainr	   Úlitellm.types.llms.openair
   Ú"litellm.types.prompts.init_promptsr   Úlitellm.types.utilsr   Úcustom_loggerr   r   r    rf   r   rh   r   r   r   ú<module>r‡      sj   ðò÷ $Ñ #ã Ý 'ã Ý %Ý DÝ 7Ý 6Ý 9Ý =å 'ô+˜Yô +ôgB˜Yô gBñT /Ó0€�Ó 0ô5C�lõ 5Cr   