Ë
    uPêjÏ/  ã                   óÌ   — d dl mZmZmZ d dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZmZ d dlmZ d dlmZmZ d d	lmZ d
dlmZ erd dlZd dlmZ eZneZ G d„ de«      Zy)é    )ÚTYPE_CHECKINGÚAnyÚFinalN)Ú#REPLICATE_MODEL_NAME_WITH_ID_LENGTH)Úconvert_content_list_to_str)Úcustom_promptÚprompt_factory)Ú
BaseConfigÚBaseLLMException)ÚAllMessageValues)ÚModelResponseÚUsage)Útoken_counteré   ©ÚReplicateError)ÚLoggingc                   óò  ‡ — e Zd ZU dZdZedz  ed<   dZedz  ed<   dZ	edz  ed<   dZ
edz  ed<   dZedz  ed<   dZedz  ed<   dZedz  ed	<   dZedz  ed
<   dZedz  ed<   	 	 	 	 	 	 	 	 	 d,dedz  dedz  dedz  dedz  dedz  dedz  d	edz  d
edz  dedz  ddfd„Zeˆ fd„«       Zdedefd„Zdededededef
d„Zdedefd„Zdededeej4                  z  defd„Z	 d-dedz  dedz  dededededz  defd„Zdedee   dedededefd „Z	 	 d.ded!ej@                  d"e!d#e"d$edee   deded%d&dedz  d'edz  de!fd(„Z#d)ej@                  defd*„Z$	 	 d.dededee   dedededz  dedz  defd+„Z%ˆ xZ&S )/ÚReplicateConfiga¯  
    Reference: https://replicate.com/meta/llama-2-70b-chat/api
    - `prompt` (string): The prompt to send to the model.

    - `system_prompt` (string): The system prompt to send to the model. This is prepended to the prompt and helps guide system behavior. Default value: `You are a helpful assistant`.

    - `max_new_tokens` (integer): Maximum number of tokens to generate. Typically, a word is made up of 2-3 tokens. Default value: `128`.

    - `min_new_tokens` (integer): Minimum number of tokens to generate. To disable, set to `-1`. A word is usually 2-3 tokens. Default value: `-1`.

    - `temperature` (number): Adjusts the randomness of outputs. Values greater than 1 increase randomness, 0 is deterministic, and 0.75 is a reasonable starting value. Default value: `0.75`.

    - `top_p` (number): During text decoding, it samples from the top `p` percentage of most likely tokens. Reduce this to ignore less probable tokens. Default value: `0.9`.

    - `top_k` (integer): During text decoding, samples from the top `k` most likely tokens. Reduce this to ignore less probable tokens. Default value: `50`.

    - `stop_sequences` (string): A comma-separated list of sequences to stop generation at. For example, inputting '<end>,<stop>' will cease generation at the first occurrence of either 'end' or '<stop>'.

    - `seed` (integer): This is the seed for the random generator. Leave it blank to randomize the seed.

    - `debug` (boolean): If set to `True`, it provides debugging output in logs.

    Please note that Replicate's mapping of these parameters can be inconsistent across different models, indicating that not all of these parameters may be available for use with all models.
    NÚsystem_promptÚmax_new_tokensÚmin_new_tokensÚtemperatureÚtop_pÚtop_kÚstop_sequencesÚseedÚdebugÚreturnc
                 ó¤   — t        «       j                  «       }
|
j                  «       D ]%  \  }}|dk7  sŒ|€Œt        | j                  ||«       Œ' y )NÚself)ÚlocalsÚcopyÚitemsÚsetattrÚ	__class__)r!   r   r   r   r   r   r   r   r   r   Úlocals_ÚkeyÚvalues                úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/replicate/chat/transformation.pyÚ__init__zReplicateConfig.__init__C   sF   € ô  ›Ÿ™›ˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�f‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ñ	4ó    c                 ó    •— t         ‰| �  «       S ©N)ÚsuperÚ
get_config)Úclsr&   s    €r*   r0   zReplicateConfig.get_configT   s   ø€ ä‰wÑ!Ó#Ð#r,   Úmodelc                 ó
   — g d¢S )N)
Ústreamr   Ú
max_tokensr   Ústopr   ÚtoolsÚtool_choiceÚ	functionsÚfunction_call© )r!   r2   s     r*   Úget_supported_openai_paramsz+ReplicateConfig.get_supported_openai_paramsX   s   € ò
ð 	
r,   Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 óÌ   — |j                  «       D ]P  \  }}|dk(  r||d<   |dk(  rd|v sd|v r||d<   nd|v r||d<   n||d<   |dk(  r||d<   |d	k(  r||d	<   |d
k(  sŒL||d<   ŒR |S )Nr4   r5   ÚvicunaÚflanÚ
max_lengthzmeta/codellama-13br   r   r   r6   r   )r$   )r!   r=   r>   r2   r?   Úparamr)   s          r*   Úmap_openai_paramsz!ReplicateConfig.map_openai_paramsf   s­   € ð /×4Ñ4Ó6ò 	:‰LˆE�5Ø˜Ò Ø,1� Ñ)Ø˜Ò$Ø˜uÑ$¨°%©Ø49�O LÒ1Ø)¨UÑ2Ø49�O LÒ1à8=�OÐ$4Ñ5Ø˜Ò%Ø16� Ñ.Ø˜ÒØ+0� Ñ(Ø˜‹Ø49�Ð 0Ò1ð	:ð" Ðr,   c                 ó:   — d|v r|j                  d«      }|d   S |S )Nú:é   )Úsplit)r!   r2   Úsplit_models      r*   Úmodel_to_version_idz#ReplicateConfig.model_to_version_id�   s&   € Ø�%‰<Ø!&§¡¨SÓ!1ˆKØ˜q‘>Ð!Øˆr,   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N©rM   ÚmessagerN   r   )r!   rL   rM   rN   s       r*   Úget_error_classzReplicateConfig.get_error_class‡   s   € Ü¨+¸}ÐV]Ô^Ð^r,   Úapi_baseÚapi_keyÚlitellm_paramsr4   c                 óx   — | j                  |«      }|}d|v r|j                  dd«      }d|› �}nd|› �}|› d�}|S )NÚdeploymentszdeployments/Ú z)https://api.replicate.com/v1/deployments/z$https://api.replicate.com/v1/models/z/predictions)rK   Úreplace)	r!   rS   rT   r2   r>   rU   r4   Ú
version_idÚbase_urls	            r*   Úget_complete_urlz ReplicateConfig.get_complete_urlŠ   s\   € ð ×-Ñ-¨eÓ4ˆ
ØˆØ˜JÑ&Ø#×+Ñ+¨N¸BÓ?ˆJØBÀ:À,ÐO‰Hà=¸j¸\ÐJˆHà�Z˜|Ð,ˆØˆr,   Úmessagesc           
      ó¢  — t         j                  j                  «       }|j                  «       D ]  \  }}||vsŒ|||<   Œ d }	|�d|v r|j	                  d«      }
nd}
|
rBt        t        |«      «      D ]+  }||   d   dk(  sŒ|j	                  |«      }t        |«      }	 n |t         j                  v rut         j                  |   }t        |j                  di «      |j                  dd«      |j                  dd«      |j                  d	d«      |j                  d
d«      |¬«      }nt        ||¬«      }|�t        |t        «      st        dd|› �i ¬«      ‚|	�||	dœ|¥}nd|i|¥}| j                  |«      }d|i}d|v rNt        |«      t         kD  r<|j#                  d«      }t        |«      dkD  rt        |d   «      t         k(  r|d   |d<   |S )NÚsupports_system_promptFÚroleÚsystemÚrolesÚinitial_prompt_valuerX   Úfinal_prompt_valueÚ	bos_tokenÚ	eos_token)Ú	role_dictrc   rd   re   rf   r]   ©r2   r]   é�  z)LiteLLM Error - prompt is not a string - rP   )Úpromptr   rj   ÚinputrG   rH   Úversion)Úlitellmr   r0   r$   ÚpopÚrangeÚlenr   Úcustom_prompt_dictr   Úgetr	   Ú
isinstanceÚstrr   rK   r   rI   )r!   r2   r]   r>   rU   rN   ÚconfigÚkÚvr   Úsupports_sys_promptÚiÚfirst_sys_messageÚmodel_prompt_detailsrj   Ú
input_datarZ   Úrequest_dataÚmodel_partss                      r*   Útransform_requestz!ReplicateConfig.transform_requestž   s  € ô  ×/Ñ/×:Ñ:Ó<ˆØ—L‘L“Nò 	'‰DˆAˆqà˜Ò(à%&� Ò"ð		'ð ˆØÐ&Ð+CÀÑ+VØ"1×"5Ñ"5Ð6NÓ"OÑà"'ÐáÜœ3˜x›=Ó)ò �Ø˜A‘;˜vÑ&¨(Ó2Ø(0¯©°Q«Ð%Ü$?Ð@QÓ$R�MÙð	ð ”G×.Ñ.Ñ.ä*1×*DÑ*DÀUÑ*KÐ Ü"Ø.×2Ñ2°7¸BÓ?Ø%9×%=Ñ%=Ð>TÐVXÓ%YØ#7×#;Ñ#;Ð<PÐRTÓ#UØ.×2Ñ2°;ÀÓCØ.×2Ñ2°;ÀÓCØ!ô‰Fô $¨%¸(ÔCˆFàˆ>¤¨F´CÔ!8Ü ØØCÀFÀ8ÐLØôð ð Ð$à Ø!.ñð "ð‰Jð # FÐ>¨oÐ>ˆJà ×4Ñ4°UÓ;ˆ
Ø%,¨jÐ$9ˆØ�*Ñ¤ Z£Ô3VÒ!VØ!+×!1Ñ!1°#Ó!6ˆKä�KÓ  1Ò$¬¨[¸©^Ó)<Ô@cÒ)cà*5°a©.�˜YÑ'àÐr,   Úraw_responseÚmodel_responseÚlogging_objr}   Úencodingztiktoken.Encoding | NoneÚ	json_modec                 ó
  — |j                  ||
|j                  d|i¬«       |j                  «       }|j                  d«      dk7  rt	        dd|› �|j
                  ¬«      ‚|j                  dg «      }d	j                  |«      }t        |«      d
k(  rd}t        |«      dk\  r||j                  d
   j                  _
        t        ||¬«      }t        ||d¬«      }d|z   |_        t        ||||z   ¬«      }t        |d|«       |S )NÚcomplete_input_dict)rk   rT   Úoriginal_responseÚadditional_argsÚstatusÚ	succeededi¦  z+LiteLLM Error - prediction not succeeded - rP   ÚoutputrX   r   ú rH   rh   T)r2   ÚtextÚcount_response_tokensz
replicate/)Úprompt_tokensÚcompletion_tokensÚtotal_tokensÚusage)Ú	post_callr�   Újsonrr   r   rN   Újoinrp   ÚchoicesrQ   Úcontentr   r2   r   r%   )r!   r2   r€   r�   r‚   r}   r]   r>   rU   rƒ   rT   r„   Úraw_response_jsonÚoutputsÚresponse_strr�   r�   r’   s                     r*   Útransform_responsez"ReplicateConfig.transform_responseæ   s1  € ð 	×ÑØØØ*×/Ñ/Ø2°LÐAð	 	ô 	
ð $0×#4Ñ#4Ó#6ÐØ× Ñ  Ó*¨kÒ9Ü ØØEÐFWÐEXÐYØ$×,Ñ,ôð ð
 +×.Ñ.¨x¸Ó<ˆØ—w‘w˜wÓ'ˆÜˆ|Ó Ò!ØˆLô ˆ|Ó Ò!Ø8DˆN×"Ñ" 1Ñ%×-Ñ-Ô5ô  -°5À8ÔLˆÜ#0ØØØ"&ô$
Ðð
  ,¨eÑ3ˆÔÜØ'Ø/Ø&Ð):Ñ:ô
ˆô
 	� ¨Ô/àÐr,   Úresponsec                 ó¢   — |j                  «       }|j                  di «      j                  d«      }|€t        dd|› �|j                  ¬«      ‚|S )aa  
        response json: {
        ...,
        "urls":{"cancel":"https://api.replicate.com/v1/predictions/gqsmqmp1pdrj00cknr08dgmvb4/cancel","get":"https://api.replicate.com/v1/predictions/gqsmqmp1pdrj00cknr08dgmvb4","stream":"https://stream-b.svc.rno2.c.replicate.net/v1/streams/eot4gbydowuin4snhncydwxt57dfwgsc3w3snycx5nid7oef7jga"}
        }
        Úurlsrr   ri   z)LiteLLM Error - prediction url is None - rP   )r”   rr   r   rN   )r!   rœ   Úresponse_jsonÚprediction_urls       r*   Úget_prediction_urlz"ReplicateConfig.get_prediction_url  s]   € ð  (Ÿ}™}›ˆØ -× 1Ñ 1°&¸"Ó =× AÑ AÀ%Ó HˆØÐ!Ü ØØCÀMÀ?ÐSØ ×(Ñ(ôð ð
 Ðr,   c                 ó   — d|› �ddœ}|S )NzToken zapplication/json)ÚAuthorizationzContent-Typer;   )r!   rN   r2   r]   r>   rU   rT   rS   s           r*   Úvalidate_environmentz$ReplicateConfig.validate_environment,  s   € ð  & g YÐ/Ø.ñ
ˆð ˆr,   )	NNNNNNNNNr.   )NN)'Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rt   Ú__annotations__r   Úintr   r   r   r   r   r   r   Úboolr+   Úclassmethodr0   Úlistr<   ÚdictrE   rK   ÚhttpxÚHeadersr   rR   r\   r   r   ÚResponser   ÚLoggingClassr›   r¡   r¤   Ú__classcell__)r&   s   @r*   r   r      s�  ø… ñð2 !%€M�3˜‘:Ó$Ø!%€N�C˜$‘JÓ%Ø!%€N�C˜$‘JÓ%Ø"€K��t‘Ó"Ø€Eˆ3�‰:ÓØ€Eˆ3�‰:ÓØ!%€N�C˜$‘JÓ%Ø€Dˆ#�‰*ÓØ€Eˆ4�$‰;Óð %)Ø%)Ø%)Ø"&Ø Ø Ø%)ØØ!ñ4à˜T‘zð4ð ˜d™
ð4ð ˜d™
ð	4ð
 ˜4‘Zð4ð �T‰zð4ð �T‰zð4ð ˜d™
ð4ð �D‰jð4ð �d‰{ð4ð 
ó4ð" ó$ó ð$ð
°ð 
¸ó 
ðà ðð ðð ð	ð
 ðð 
óð6¨ð °ó ð_¨Sð _¸sð _ÈTÐTY×TaÑTaÑMað _Ðfvó _ð #ñà˜‘*ðð �t‘ðð ð	ð
 ðð ðð �t‘ðð 
óð(FàðFð Ð'Ñ(ðFð ð	Fð
 ðFð ðFð 
óFðf #Ø!%ñ3àð3ð —n‘nð3ð &ð	3ð
 "ð3ð ð3ð Ð'Ñ(ð3ð ð3ð ð3ð -ð3ð �t‘ð3ð ˜$‘;ð3ð 
ó3ðj¨5¯>©>ð ¸có ð0 #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
÷r,   r   )Útypingr   r   r   r¯   rm   Úlitellm.constantsr   Ú8litellm.litellm_core_utils.prompt_templates.common_utilsr   Ú3litellm.litellm_core_utils.prompt_templates.factoryr   r	   Ú)litellm.llms.base_llm.chat.transformationr
   r   Úlitellm.types.llms.openair   Úlitellm.types.utilsr   r   Úlitellm.utilsr   Úcommon_utilsr   ÚtiktokenÚ*litellm.litellm_core_utils.litellm_loggingr   ÚLiteLLMLoggingObjr²   r   r;   r,   r*   ú<module>rÀ      sQ   ðß ,Ñ ,ã ã Ý Aõ÷÷ SÝ 6ß 4Ý 'å )áÛåWà$�Là€Lô[�jõ [r,   