Ë
    uPêjS  ã                   óF   — d dl mZ d dlZd dlmZ d dlmZ  G d„ de«      Zy)é    )ÚFinalN)ÚOpenAIGPTConfig©Úget_secret_strc                   óŒ  ‡ — e Zd ZU dZdZedz  ed<   dZee	z  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ez  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e	z  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z  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dedz  dedz  deedz  edz  f   fd„Z	 	 d!de	dedede	de	dedz  dedz  de	fd„Zˆ xZS )"ÚFeatherlessAIConfigzÄ
    Reference: https://featherless.ai/docs/completions

    The class `FeatherlessAI` provides configuration for the FeatherlessAI's Chat Completions API interface. Below are the parameters:
    NÚfrequency_penaltyÚfunction_callÚ	functionsÚ
logit_biasÚ
max_tokensÚnÚpresence_penaltyÚstopÚtemperatureÚtop_pÚresponse_formatÚtool_choiceÚtoolsÚ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   Úlocals_ÚkeyÚvalues                    út/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/featherless_ai/chat/transformation.pyÚ__init__zFeatherlessAIConfig.__init__   sF   € ô   ›Ÿ™›ˆØ!Ÿ-™-›/ò 	4‰JˆC�Ø�f‹} Ñ!2Ü˜Ÿ™¨¨UÕ3ñ	4ó    c                 ó    •— t         ‰| �  «       S )N)ÚsuperÚ
get_config)Úclsr   s    €r!   r&   zFeatherlessAIConfig.get_config2   s   ø€ ä‰wÑ!Ó#Ð#r#   Úmodelc                 ó
   — g d¢S )N)Ústreamr	   r
   r   r   r   Úmax_completion_tokensr   r   r   r   r   © )r   r(   s     r!   Úget_supported_openai_paramsz/FeatherlessAIConfig.get_supported_openai_params6   s   € ò
ð 	
r#   Únon_default_paramsÚoptional_paramsÚdrop_paramsc                 óN  — | j                  |¬«      }|j                  «       D ]  \  }}|dk(  s|dk(  rX|dk(  r|dk(  s|dk(  r|||<   Œ%t        j                  du s|du rd }Œ>d|› d|› d	�}t        j                  j                  |d
¬«      ‚|dk(  r||d<   Œs||v sŒx|€Œ{|||<   Œ� |S )N)r(   r   r   ÚautoÚnoneTzFeatherless AI doesn't support ú=zS. To drop unsupported openai params from the call, set `litellm.drop_params = True`i�  )ÚmessageÚstatus_coder+   r   )r-   r   Úlitellmr0   ÚutilsÚUnsupportedParamsError)	r   r.   r/   r(   r0   Úsupported_openai_paramsÚparamr    Úerror_messages	            r!   Úmap_openai_paramsz%FeatherlessAIConfig.map_openai_paramsF   sö   € ð *.×)IÑ)IÐPUÐ)IÓ)VÐØ.×4Ñ4Ó6ò 	3‰LˆE�5Ø˜Ò%¨°'Ò)9Ø˜MÒ)¨u¸ªÀ%È6Â/à-2�O EÒ*ô ×*Ñ*¨dÑ2°kÀTÑ6IØ $™à*IÈ%ÈÐPQÐRWÐQXð  Ylð  )m˜Ü%Ÿm™m×BÑBØ$1Ø(+ð Có ð ð Ð1Ò1Ø05� Ò-ØÐ1Ò1ØÑ$Ø-2�O EÒ*ð'	3ð( Ðr#   Úapi_baseÚapi_keyc                 ó‚   — |xs t        d«      xs t        d«      xs d}|xs t        d«      xs t        d«      }||fS )NÚFEATHERLESS_AI_API_BASEÚFEATHERLESS_API_BASEzhttps://api.featherless.ai/v1ÚFEATHERLESS_AI_API_KEYÚFEATHERLESS_API_KEYr   )r   r>   r?   Údynamic_api_keys       r!   Ú$_get_openai_compatible_provider_infoz8FeatherlessAIConfig._get_openai_compatible_provider_infod   s[   € ð
 ò /ÜÐ7Ó8ò/äÐ4Ó5ò/ð /ð	 	ð "Òv¤^Ð4LÓ%MÒvÔQ_Ð`uÓQvˆØ˜Ð(Ð(r#   ÚheadersÚmessagesÚlitellm_paramsc                 ó:   — |st        d«      ‚d|› �|d<   d|d<   |S )NzMissing Featherless AI API KeyzBearer ÚAuthorizationzapplication/jsonzContent-Type)Ú
ValueError)r   rG   r(   rH   r/   rI   r?   r>   s           r!   Úvalidate_environmentz(FeatherlessAIConfig.validate_environmentq   s3   € ñ ÜÐ=Ó>Ð>à%,¨W¨IÐ#6ˆ�Ñ Ø"4ˆ�Ñàˆr#   )NNNNNNNNNNNNN)NN) Ú__name__Ú
__module__Ú__qualname__Ú__doc__r	   ÚintÚ__annotations__r
   ÚstrÚdictr   Úlistr   r   r   r   r   r   r   r   r   r   r"   Úclassmethodr&   r-   Úboolr=   ÚtuplerF   rM   Ú__classcell__)r   s   @r!   r   r      s±  ø… ñð %)Ð�s˜T‘zÓ(Ø'+€M�3˜‘: Ñ$Ó+Ø!€Iˆt�d‰{Ó!Ø"€J��t‘Ó"Ø!€J��d‘
Ó!Ø€A€sˆT�zÓØ#'Ð�c˜D‘jÓ'Ø"€Dˆ#�‰*�tÑ
Ó"Ø"€K��t‘Ó"Ø€Eˆ3�‰:ÓØ#'€O�T˜D‘[Ó'Ø"€K��t‘Ó"Ø€Eˆ4�$‰;Óð )-Ø+/Ø!%Ø"&Ø!%ØØ'+Ø"&Ø"&Ø Ø'+Ø"&Ø!ñ4à ™:ð4ð ˜T‘z DÑ(ð4ð ˜$‘;ð	4ð
 ˜4‘Kð4ð ˜$‘Jð4ð �‰:ð4ð  ™*ð4ð �D‰j˜4Ñð4ð ˜4‘Zð4ð �T‰zð4ð  ™ð4ð ˜4‘Zð4ð �d‰{ð4ð 
ó4ð* ó$ó ð$ð
°ó 
ð à ðð ðð ð	ð
 ðð 
óð<)Ø˜d™
ð)Ø-0°4©Zð)à	ˆs�T‰z˜3 ™:Ð%Ñ	&ó)ð( #Ø#ñàðð ðð ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
÷r#   r   )Útypingr   r7   Ú+litellm.llms.openai.chat.gpt_transformationr   Úlitellm.secret_managers.mainr   r   r,   r#   r!   ú<module>r^      s   ðÝ ã Ý GÝ 7ôy˜/õ yr#   