Ë
    uPêj]7  ã                   óÜ   — d dl Z d dlZd dlmZmZmZ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 d dlmZmZ d dlmZ d d	lmZmZmZmZ d
dlmZ er	d dlmZ  e Z!neZ! G d„ de«      Z"y)é    N)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteral)ÚHeadersÚResponse)ÚDEFAULT_MAX_TOKENS)Úmap_finish_reason)Úcustom_promptÚprompt_factory)Ú
BaseConfigÚBaseLLMException)ÚAllMessageValues)ÚChoicesÚMessageÚModelResponseÚUsageé   ©ÚPredibaseError)ÚLoggingc                   óz  ‡ — e Zd ZU dZdZedz  ed<   dZed   dz  ed<   dZ	e
dz  ed<   dZedz  ed<   dZeed	<   eZe
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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<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 d4d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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fd„Zde de dedede f
d„Z!	 	 d5dede"d e#d!e$d"e d#ee%   de d$e d%e&d&edz  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(e)d+edefd,„«       Z*	 d6d-edz  d&edz  dede d$e d.edz  defd/„Z+d0ed1e
d)e e,z  de-fd2„Z.	 	 d5d)e ded#ee%   de d$e d&edz  d-edz  de fd3„Z/ˆ xZ0S )7ÚPredibaseConfigzN
    Reference:  https://docs.predibase.com/user-guide/inference/rest_api
    NÚ
adapter_id)ÚpbaseÚhubÚs3Úadapter_sourceÚbest_ofÚdecoder_input_detailsTÚdetailsÚmax_new_tokensÚrepetition_penaltyFÚreturn_full_textÚseedÚstopÚtemperatureÚtop_kÚtop_pÚtruncateÚ	typical_pÚ	watermarkÚ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'   r(   r)   r*   r+   r,   Úlocals_ÚkeyÚvalues                     úo/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/predibase/chat/transformation.pyÚ__init__zPredibaseConfig.__init__2   sF   € ô"  ›Ÿ™›ˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�f‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ñ	4ó    c                 ó    •— t         ‰| �  «       S ©N)ÚsuperÚ
get_config)Úclsr4   s    €r8   r>   zPredibaseConfig.get_configH   s   ø€ ä‰wÑ!Ó#Ð#r:   Úmodelc                 ó
   — g d¢S )N)Ústreamr'   Úmax_completion_tokensÚ
max_tokensr)   r&   ÚnÚresponse_format© )r/   r@   s     r8   Úget_supported_openai_paramsz+PredibaseConfig.get_supported_openai_paramsL   s   € ò	
ð 		
r:   Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 ó  — |j                  «       D ]s  \  }}|dk(  r|dk(  s|dk(  rd}||d<   |dk(  r||d<   |dk(  r
||d<   d|d	<   |d
k(  r||d
<   |dk(  r||d<   |dk(  s|dk(  r|dk(  rd}||d<   |dk(  rd|d<   |dk(  sŒo||d<   Œu |S )Nr'   g        r   g{®Gáz„?r)   rE   r   TÚ	do_samplerB   r&   rD   rC   é   r"   Úechor    rF   )r2   )r/   rI   rJ   r@   rK   Úparamr7   s          r8   Úmap_openai_paramsz!PredibaseConfig.map_openai_paramsX   sð   € ð /×4Ñ4Ó6ò 	;‰LˆE�5à˜Ò%Ø˜C’< 5¨A¢:ð !�EØ16� Ñ.Ø˜ÒØ+0� Ñ(Ø˜Š|Ø-2� 	Ñ*Ø/3� Ñ,Ø˜Ò Ø,1� Ñ)Ø˜ŠØ*/� Ñ'Ø˜Ò$¨Ð1HÒ(Hð ˜A’:Ø�EØ49�Ð 0Ñ1Ø˜Šð <@�Ð 7Ñ8ØÐ)Ó)Ø5:�Ð 1Ò2ð9	;ð: Ðr:   Úraw_responseÚmodel_responseÚlogging_objÚrequest_dataÚmessagesÚlitellm_paramsÚencodingÚapi_keyÚ	json_modec                 ót  — |j                  ||
xs d|j                  d|i¬«       	 |j                  «       }d|v r#t	        t        |d   «      |j                  ¬«      ‚t        |t        «      st	        dd|› �¬«      ‚d	|vrt	        dd
|› �¬«      ‚t        |d	   «      dkD  r0| j                  |d	   «      |j                  d   j                  _        d|v rkd|d   v rdt        |d   d   «      |j                  d   _        d}|d   d   D ]  }|d   €Œ	||d   z  }Œ t!        |j                  d   j                  d|«       |j#                  d«      }|€"|j#                  di «      j#                  dd«      }	 t%        |«      }|dkD  rÆd|v rÂd|d   v r»g }t+        |d   d   «      D ]Š  \  }}d}|d   D ]  }|d   €Œ	||d   z  }Œ t        |d	   «      dkD  r t-        | j                  |d	   «      |¬«      }nt-        d ¬«      }t/        t        |d   «      |dz   |¬«      }|j1                  |«       ŒŒ |j                  j3                  |«       d}	 t5        j6                  |¬«      }|d   d   d   j#                  dd«      }|�Et        |«      dkD  r7d}	 t        |	j9                  |d   d   d   j#                  dd«      «      «      }nd}||z   }t%        t;        j:                  «       «      |_        ||_        tA        |||¬«      }||_!        |jD                  }i }|jG                  «       D ]  \  }}|jI                  d«      sŒ||d|› �<   Œ! ||jJ                  d<   |S # t        $ r t	        |j                  d¬«      ‚w xY w# t&        t(        f$ r d}Y �Œw xY w# t        $ r Y �Œ@w xY w# t        $ r Y Œëw xY w) NÚ Úcomplete_input_dict)ÚinputrY   Úoriginal_responseÚadditional_argsi¦  )ÚmessageÚstatus_codeÚerrorz,'completion_response' is not a dictionary - )rb   ra   Úgenerated_textz4'generated_text' is not a key response dictionary - r   r!   ÚtokensÚfinish_reasonÚlogprobÚ_logprobr   Ú
parametersrN   Úbest_of_sequences)ÚcontentÚlogprobs)rk   )rf   Úindexra   )rV   Úchoicesra   rk   )Úprompt_tokensÚcompletion_tokensÚtotal_tokenszx-zllm_provider-Úadditional_headers)&Ú	post_callÚtextÚjsonÚ	Exceptionr   Ústrrb   Ú
isinstanceÚdictÚlenÚoutput_parserrn   ra   rk   r
   rf   r3   ÚgetÚintÚ	TypeErrorÚ
ValueErrorÚ	enumerater   r   ÚappendÚextendÚlitellmÚtoken_counterÚencodeÚtimeÚcreatedr@   r   ÚusageÚheadersr2   Ú
startswithÚ_hidden_params)r/   r@   rR   rS   rT   rU   rV   rJ   rW   rX   rY   rZ   Úcompletion_responseÚsum_logprobÚtokenÚeffective_best_ofÚbest_of_valueÚchoices_listÚidxÚitemÚmessage_objÚ
choice_objro   Úoutput_textrp   rq   rˆ   Úpredibase_headersÚresponse_headersÚkÚvs                                  r8   Útransform_responsez"PredibaseConfig.transform_response~   s—  € ð 	×ÑØØ’M˜rØ*×/Ñ/Ø2°LÐAð	 	ô 	
ð	MØ)5×):Ñ):Ó)<Ðð Ð)Ñ)Ü ÜÐ/°Ñ8Ó9Ø(×4Ñ4ôð ô Ð/´Ô6Ü ØØFÐGZÐF[Ð\ôð ð Ð%8Ñ8Ü ØØNÐObÐNcÐdôð ô
 Ð"Ð#3Ñ4Ó5¸Ò9Ø8<×8JÑ8JÐK^Ð_oÑKpÓ8qˆN×"Ñ" 1Ñ%×-Ñ-Ô5àÐ+Ñ+°Ð<OÐPYÑ<ZÑ0ZÜ6GÐH[Ð\eÑHfÐgvÑHwÓ6xˆN×"Ñ" 1Ñ%Ô3ØˆKØ,¨YÑ7¸ÑAò 4�Ø˜Ñ#Ñ/Ø 5¨Ñ#3Ñ3‘Kð4ô Ø×&Ñ& qÑ)×1Ñ1ØØôð ,×/Ñ/°	Ó:ÐØÐ$Ø ,× 0Ñ 0°¸rÓ B× FÑ FÀyÐRSÓ TÐð	ÜÐ 1Ó2ˆMð ˜1ÒØÐ/Ñ/Ð4GÐK^Ð_hÑKiÑ4iØ&(�Ü!*Ð+>¸yÑ+IÐJ]Ñ+^Ó!_ò 4‘I�C˜Ø"#�KØ!% h¡ò <˜Ø  Ñ+Ñ7Ø'¨5°Ñ+;Ñ;™Kð<ô ˜4Ð 0Ñ1Ó2°QÒ6Ü&-Ø$(×$6Ñ$6°tÐ<LÑ7MÓ$NØ%0ô'™ô
 '.°dÔ&;˜Ü!(Ü&7¸¸_Ñ8MÓ&NØ! A™gØ +ô"�Jð
 !×'Ñ'¨
Õ3ð#4ð$ ×&Ñ&×-Ñ-¨lÔ;àˆð	Ü#×1Ñ1¸8ÔDˆMð ,¨IÑ6°qÑ9¸)ÑD×HÑHÈÐTVÓWˆØÐ"¤s¨;Ó'7¸!Ò';Ø !ÐðÜ$'¨¯©¸ÀyÑ8QÐRSÑ8TÐU^Ñ8_×8cÑ8cÐdmÐoqÓ8rÓ(sÓ$tÑ!ð
 !"Ðà+Ð.?Ñ?ˆä!$¤T§Y¡Y£[Ó!1ˆÔØ$ˆÔÜØ'Ø/Ø%ô
ˆð
  %ˆÔà#/×#7Ñ#7ÐØ"$ÐØ%×+Ñ+Ó-ò 	:‰DˆAˆqØ�|‰|˜DÕ!Ø89Ð  =°°Ð!4Ò5ð	:ð ?Oˆ×%Ñ%Ð&:Ñ;àÐøôK ò 	MÜ ¨×):Ñ):ÈÔLÐLð	MûôN œ:Ð&ò 	Ø‹Mð	ûô: ò 	âð	ûô ò áðúsA   §M Å8N ÉN Ê3N+ Í!N ÎNÎNÎ	N(Î'N(Î+	N7Î6N7r‰   c                 ó  — |j                  di «      }||v r||   }t        |d   |d   |d   |¬«      }nt        ||¬«      }i |¥}	| j                  «       }
|
j	                  «       D ]  \  }}||	vsŒ||	|<   Œ |	j                  dd «       ||	dœS )	NÚcustom_prompt_dictÚrolesÚinitial_prompt_valueÚfinal_prompt_value)Ú	role_dictrŸ   r    rV   )r@   rV   rB   )Úinputsri   )r|   r   r   r>   r2   Úpop)r/   r@   rV   rJ   rW   r‰   r�   Úmodel_prompt_detailsÚpromptÚrequest_optional_paramsÚconfigr™   rš   s                r8   Útransform_requestz!PredibaseConfig.transform_requestû   sÇ   € ð %3×$6Ñ$6Ð7KÈRÓ$PÐØÐ&Ñ&Ø*<¸UÑ*CÐ Ü"Ø.¨wÑ7Ø%9Ð:PÑ%QØ#7Ð8LÑ#MØ!ô	‰Fô $¨%¸(ÔCˆFà)<¨OÐ)<ÐØŸ™Ó)ˆØ—L‘L“Nò 	/‰DˆAˆqØÐ/Ò/Ø-.Ð'¨Ò*ð	/ð 	 ×#Ñ# H¨dÔ3àØ1ñ
ð 	
r:   rd   c                 óî   — g d¢}|D ]k  }| j                  «       j                  |«      r| j                  |dd«      } | j                  |«      sŒG| ddd…   j                  |ddd…   dd«      ddd…   } Œm | S )z£
        Parse the output text to remove any special characters.

        Initial issue that prompted this - https://github.com/BerriAI/litellm/issues/763
        )z<|assistant|>z
<|system|>z<|user|>z<s>z</s>r\   rN   Néÿÿÿÿ)ÚstriprŠ   ÚreplaceÚendswith)rd   Úchat_template_tokensrŽ   s      r8   r{   zPredibaseConfig.output_parser  s�   € ò'
Ðð *ò 	XˆEØ×#Ñ#Ó%×0Ñ0°Ô7Ø!/×!7Ñ!7¸¸rÀ1Ó!E�Ø×&Ñ& uÕ-Ø!/±°"°Ñ!5×!=Ñ!=¸eÁDÀbÀD¹kÈ2ÈqÓ!QÑRVÐTVÐRVÑ!W‘ð		Xð
 Ðr:   Úapi_baserB   c                 ó&  — |j                  d«      xs |j                  d«      }|€t        d«      ‚d}|r|}n(dt        j                  v rt        j                  dd«      }|› d|› d|› �}	|�|n|j                  d	d
«      }
|
du r|	dz  }	|	S |	dz  }	|	S )NÚpredibase_tenant_idÚ	tenant_idzšMissing Predibase Tenant ID - Required for making the request. Set dynamically (e.g. `completion(..tenant_id=<MY-ID>)`) or in env - `PREDIBASE_TENANT_ID`.z!https://serving.app.predibase.comÚPREDIBASE_API_BASEr\   ú/z/deployments/v2/llms/rB   FTz/generate_streamz	/generate)r|   r   ÚosÚenvironÚgetenv)r/   r¯   rY   r@   rJ   rW   rB   r²   Úbase_urlÚcompletion_urlÚshould_streams              r8   Úget_complete_urlz PredibaseConfig.get_complete_url0  sÊ   € ð *×-Ñ-Ð.CÓDÒgÈ×HZÑHZÐ[fÓHgˆ	ØÐÜð móð ð 7ˆÙØ‰HØ!¤R§Z¡ZÑ/Ü—y‘yÐ!5°rÓ:ˆHà$˜: Q y kÐ1FÀuÀgÐNˆØ)/Ð);™vÀ×ATÑATÐU]Ð_dÓAeˆØ˜DÑ ØÐ0Ñ0ˆNð Ðð ˜kÑ)ˆNØÐr:   Úerror_messagerb   c                 ó   — t        |||¬«      S )N)rb   ra   r‰   r   )r/   r¼   rb   r‰   s       r8   Úget_error_classzPredibaseConfig.get_error_classM  s   € Ü¨+¸}ÐV]Ô^Ð^r:   c                 ó`   — |€t        d«      ‚dd|› �dœ}|�t        |t        «      ri |¥|¥}|S )Nz�Missing Predibase API Key - A call is being made to predibase but no key is set either in the environment variables or via paramszapplication/jsonzBearer )zcontent-typeÚAuthorization)r   rx   ry   )	r/   r‰   r@   rV   rJ   rW   rY   r¯   Údefault_headerss	            r8   Úvalidate_environmentz$PredibaseConfig.validate_environmentP  sW   € ð ˆ?Üð Tóð ð
 /Ø& w iÐ0ñ"
ˆð Ð¤:¨g´tÔ#<Ø4˜Ð4¨GÐ4ˆGØˆr:   )NNNNNNNNNNNNNN)NNr<   )1Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   rw   Ú__annotations__r   r   r   r}   r    Úboolr!   r	   r"   r#   Úfloatr$   r%   r&   Úlistr'   r(   r)   r*   r+   r,   r9   Úclassmethodr>   rH   ry   rQ   r   r   ÚLiteLLMLoggingObjr   r   r›   r¨   Ústaticmethodr{   r»   r   r   r¾   rÂ   Ú__classcell__)r4   s   @r8   r   r      s?  ø… ñð "€J��d‘
Ó!Ø;?€N�GÐ0Ñ1°DÑ8Ó?Ø€GˆS�4‰ZÓØ)-Ð˜4 $™;Ó-Ø€GˆTÓØ,€N�CÓ,Ø'+Ð˜ ™Ó+Ø$)Ð�d˜T‘kÓ)Ø€Dˆ#�‰*ÓØ!€Dˆ$ˆs‰)�dÑ
Ó!Ø $€K�˜‘Ó$Ø€Eˆ3�‰:ÓØ€Eˆ3�‰:ÓØ€Hˆc�D‰jÓØ"€Iˆu�t‰|Ó"Ø!€Iˆt�d‰{Ó!ð #Ø-1Ø#Ø%)Ø+/Ø(,ØØ!%Ø$(Ø Ø Ø#Ø"&Ø!%ñ4à�t‘ð4ð  $ d™{ð4ð ˜‘ð	4ð
 ˜d™
ð4ð " D™Lð4ð  ™+ð4ð �D‰jð4ð �3‰i˜$Ñð4ð ˜T‘\ð4ð �T‰zð4ð �T‰zð4ð ˜‘*ð4ð ˜4‘<ð4ð ˜$‘;ð4ð  
ó!4ð, ó$ó ð$ð

°ó 

ð$à ð$ð ð$ð ð	$ð
 ð$ð 
ó$ðb #Ø!%ñ{àð{ð ð{ð &ð	{ð
 'ð{ð ð{ð Ð'Ñ(ð{ð ð{ð ð{ð ð{ð �t‘ð{ð ˜$‘;ð{ð 
ó{ðz
àð
ð Ð'Ñ(ð
ð ð	
ð
 ð
ð ð
ð 
ó
ð@ ð cð ¨cò ó ðð6 #ñà˜‘*ðð �t‘ðð ð	ð
 ðð ðð �t‘ðð 
óð:_¨Sð _¸sð _ÈTÐT[É^ð _Ð`pó _ð #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
÷r:   r   )#rµ   r†   Útypingr   r   r   r   Úhttpxr   r   rƒ   Úlitellm.constantsr	   Ú'litellm.litellm_core_utils.core_helpersr
   Ú3litellm.litellm_core_utils.prompt_templates.factoryr   r   Ú)litellm.llms.base_llm.chat.transformationr   r   Úlitellm.types.llms.openair   Úlitellm.types.utilsr   r   r   r   Úcommon_utilsr   Ú*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjrÌ   r   rG   r:   r8   ú<module>rÚ      sT   ðÛ 	Û ß 5Ó 5ç #ã Ý 0Ý E÷÷ SÝ 6ß FÓ Få )áÝXà*ÑàÐôI�jõ Ir:   