Ë
    uPêj  ã                   ó˜   — d Z ddlmZmZ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 erddlZdd
lmZ eZneZ G d„ de«      Zy)z,
CompactifAI chat completion transformation
é    )ÚTYPE_CHECKINGÚAnyÚFinalN)ÚBaseLLMException©ÚOpenAIError©Úget_secret_str)ÚModelResponseé   )ÚOpenAIGPTConfig)ÚLoggingc                   óÖ   — e Zd Z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j                  d	e	d
e
dededededddedz  dedz  de	fd„Zdededeej                   z  defd„Zy)ÚCompactifAIChatConfigz†
    Configuration class for CompactifAI chat completions.
    Since CompactifAI is OpenAI-compatible, we extend OpenAIGPTConfig.
    Úapi_baseNÚapi_keyÚreturnc                 ó<   — |xs d}|xs t        d«      xs d}||fS )z@
        Get API base and key for CompactifAI provider.
        zhttps://api.compactif.ai/v1ÚCOMPACTIFAI_API_KEYÚ r	   )Úselfr   r   Údynamic_api_keys       úq/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/compactifai/chat/transformation.pyÚ$_get_openai_compatible_provider_infoz:CompactifAIChatConfig._get_openai_compatible_provider_info    s0   € ð Ò<Ð<ˆØ!(Ò!W¬NÐ;PÓ,QÒ!WÐUWˆØ˜Ð(Ð(ó    ÚmodelÚraw_responseÚmodel_responseÚlogging_objÚrequest_dataÚmessagesÚoptional_paramsÚlitellm_paramsÚencodingztiktoken.Encoding | NoneÚ	json_modec                 óx  — |j                  ||
|j                  d|i¬«       |j                  «       }|rq|d   D ]i  }|j                  d«      }|sŒ|j                  d«      sŒ)|j                  dg «      }t	        |«      dk(  sŒJ|d   d   j                  d	d
«      |d<   d|d<   Œk t        di |¤Ž}d|› �|_        |S )z¢
        Transform CompactifAI response to LiteLLM format.
        Since CompactifAI is OpenAI-compatible, we can use the standard OpenAI transformation.
        Úcomplete_input_dict)Úinputr   Úoriginal_responseÚadditional_argsÚchoicesÚmessageÚ
tool_callsé   r   ÚfunctionÚ	argumentsr   ÚcontentNzcompactifai/© )Ú	post_callÚtextÚjsonÚgetÚlenr   r   )r   r   r   r   r   r    r!   r"   r#   r$   r   r%   Úresponse_jsonÚchoicer,   r-   Úreturned_responses                    r   Útransform_responsez(CompactifAIChatConfig.transform_response,   sâ   € ð& 	×ÑØØØ*×/Ñ/Ø2°LÐAð	 	ô 	
ð  ,×0Ñ0Ó2ˆñ Ø'¨	Ñ2ò 5�Ø Ÿ*™* YÓ/�Ú˜wŸ{™{¨<Õ8à!(§¡¨\¸2Ó!>�JÜ˜:“¨!Ó+Ø-7¸©]¸:Ñ-F×-JÑ-JÈ;ÐXZÓ-[˜ 	Ñ*Ø04˜ Ò-ð5ô $1Ñ#A°=Ñ#AÐð %1°°Ð"8ÐÔà Ð r   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )z—
        Get the appropriate error class for CompactifAI errors.
        Since CompactifAI is OpenAI-compatible, we use OpenAI error handling.
        )r=   r,   r>   r   )r   r<   r=   r>   s       r   Úget_error_classz%CompactifAIChatConfig.get_error_class[   s   € ô
 Ø#Ø!Øô
ð 	
r   )NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚstrÚtupler   ÚhttpxÚResponser   ÚLiteLLMLoggingObjÚdictÚlistÚboolr;   ÚintÚHeadersr   r@   r2   r   r   r   r      s   „ ñð

)à˜‘*ð
)ð �t‘ð
)ð 
ˆs�T‰z˜3 ™:Ð%Ñ	&ó	
)ð. #Ø!%ñ-!àð-!ð —n‘nð-!ð &ð	-!ð
 'ð-!ð ð-!ð ð-!ð ð-!ð ð-!ð -ð-!ð �t‘ð-!ð ˜$‘;ð-!ð 
ó-!ð^	
¨Sð 	
¸sð 	
ÈTÐTY×TaÑTaÑMað 	
Ðfvô 	
r   r   )rD   Útypingr   r   r   rG   Ú)litellm.llms.base_llm.chat.transformationr   Ú litellm.llms.openai.common_utilsr   Úlitellm.secret_managers.mainr
   Úlitellm.types.utilsr   Úopenai.chat.gpt_transformationr   ÚtiktokenÚ*litellm.litellm_core_utils.litellm_loggingr   Ú_LiteLLMLoggingObjrI   r   r2   r   r   ú<module>rX      sG   ðñ÷ -Ñ ,ã å FÝ 8Ý 7Ý -å =áÛåXà*ÑàÐôJ
˜Oõ J
r   