Ë
    uPêjý  ã                   ó�   — d 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  G d
„ de	«      Z G d„ de«      Zy)z¶
Support for OVHCloud AI Endpoints `/v1/chat/completions` endpoint.

Our unified API follows the OpenAI standard.
More information on our website: https://endpoints.ai.cloud.ovh.net
é    )ÚFinalN)ÚBaseModelResponseIterator)ÚBaseLLMException)ÚOpenAIGPTConfig©ÚOVHCloudException)ÚAllMessageValues)ÚModelResponseStreamc                   óæ   ‡ — e Zd Zededz  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	dee
j                  z  defd„Zdededededef
ˆ fd„Zdedee   dedededefˆ fd„Zˆ xZS )ÚOVHCloudChatConfigÚreturnNc                  ó   — y)NÚovhcloud© )Úselfs    ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/ovhcloud/chat/transformation.pyÚcustom_llm_providerz&OVHCloudChatConfig.custom_llm_provider   s   € àó    Úapi_baseÚapi_keyÚmodelÚoptional_paramsÚlitellm_paramsÚstreamc                 ó:   — |€dn|j                  d«      }|› d�}|S )Nz0https://oai.endpoints.kepler.ai.cloud.ovh.net/v1ú/z/chat/completions)Úrstrip)r   r   r   r   r   r   r   Úcomplete_urls           r   Úget_complete_urlz#OVHCloudChatConfig.get_complete_url   s3   € ð JRÐIYÑEÐ_g×_nÑ_nÐorÓ_sˆØ!) 
Ð*;Ð<ˆØÐr   Úerror_messageÚstatus_codeÚheadersc                 ó   — t        |||¬«      S )N©Úmessager!   r"   r   )r   r    r!   r"   s       r   Úget_error_classz"OVHCloudChatConfig.get_error_class&   s   € Ü Ø!Ø#Øô
ð 	
r   Únon_default_paramsÚdrop_paramsc                 ó,   •— t         ‰| �  ||||«      }|S ©N)ÚsuperÚmap_openai_params)r   r'   r   r   r(   Úmapped_openai_paramsÚ	__class__s         €r   r,   z$OVHCloudChatConfig.map_openai_params-   s%   ø€ ô ',¡gÑ&?Ð@RÐTcÐejÐlwÓ&xÐØ#Ð#r   Úmessagesc                 ót   •— |j                  di «      }t        ‰| �	  |||||«      }|j                  |«       |S )NÚ
extra_body)Úpopr+   Útransform_requestÚupdate)	r   r   r/   r   r   r"   r1   Úresponser.   s	           €r   r3   z$OVHCloudChatConfig.transform_request7   sA   ø€ ð ,×/Ñ/°¸bÓAˆ
Ü™'Ñ3°E¸8À_ÐVdÐfmÓnˆØ�‰˜
Ô#Øˆr   r*   )Ú__name__Ú
__module__Ú__qualname__ÚpropertyÚstrr   ÚdictÚboolr   ÚintÚhttpxÚHeadersr   r&   r,   Úlistr	   r3   Ú__classcell__)r.   s   @r   r   r      s'  ø„ Øð S¨4¡Zò ó ðð #ñà˜‘*ðð �t‘ðð ð	ð
 ðð ðð �t‘ðð 
óð
¨Sð 
¸sð 
ÈTÐTY×TaÑTaÑMað 
Ðfvó 
ð$à ð$ð ð$ð ð	$ð
 ð$ð 
õ$ðàðð Ð'Ñ(ðð ð	ð
 ðð ðð 
÷ñ r   r   c                   ó    — e Zd ZdZdedefd„Zy)Ú&OVHCloudChatCompletionStreamingHandlerzO
    Handler for OVHCloud AI Endpoints streaming chat completion responses
    Úchunkr   c                 óö  — 	 d|v rF|d   }dj                  |j                  dd«      «      }t        ||j                  dd«      ddi¬	«      ‚g }|d
   D ]G  }d|v r0|d   }|j                  d«      }|j                  d«      }|�|€||d<   |j                  |«       ŒI t	        |d   d|d   |j                  d«      |d   |¬«      S # t
        $ r}	t        d|	› d|› �dddi¬	«      ‚d}	~	wt        $ r}	|	‚d}	~	ww xY w)zA
        Parse individual chunks from streaming response
        ÚerrorzOVHCloud Error: {}r%   zUnknown errorÚcodei�  zContent-Typezapplication/jsonr$   ÚchoicesÚdeltaÚ	reasoningÚreasoning_contentNÚidzchat.completion.chunkÚcreatedÚusager   )rL   ÚobjectrM   rN   r   rH   z
KeyError: z), Got unexpected response from CometAPI: )ÚformatÚgetr   Úappendr
   ÚKeyErrorÚ	Exception)
r   rD   Úerror_chunkr    Únew_choicesÚchoicerI   Úreasoning_newÚreasoning_legacyÚes
             r   Úchunk_parserz3OVHCloudChatCompletionStreamingHandler.chunk_parserJ   sR  € ð'	Ø˜%ÑØ%*¨7¡^�Ø';×'BÑ'BÀ;Ç?Á?ÐS\Ð^mÓCnÓ'o�Ü'Ø)Ø +§¡°¸Ó <Ø+Ð-?Ð@ôð ð "$ˆKØ 	Ñ*ò +�Ø˜fÑ$Ø" 7™O�Eð
 %*§I¡I¨kÓ$:�MØ',§y¡yÐ1DÓ'EÐ$Ø$Ð0Ð5EÐ5MØ5B˜Ð1Ñ2Ø×"Ñ" 6Õ*ð+ô 'Ø˜‘;Ø.Ø˜iÑ(Ø—i‘i Ó(Ø˜G‘nØ#ôð øô ò 	Ü#Ø$ Q CÐ'PÐQVÐPWÐXØØ'Ð);Ð<ôð ûô
 ò 	ØˆGûð	ús$   ‚CC Ã	C8ÃC%Ã%C8Ã1C3Ã3C8N)r6   r7   r8   Ú__doc__r;   r
   r[   r   r   r   rC   rC   E   s   „ ñð+ $ð +Ð+>ô +r   rC   )r\   Útypingr   r>   Ú)litellm.llms.base_llm.base_model_iteratorr   Ú)litellm.llms.base_llm.chat.transformationr   Ú+litellm.llms.openai.chat.gpt_transformationr   Úlitellm.llms.ovhcloud.utilsr   Úlitellm.types.llms.openair	   Úlitellm.utilsr
   r   rC   r   r   r   ú<module>rd      s>   ðñõ ã å OÝ FÝ GÝ 9Ý 6Ý -ô.˜ô .ôb0Ð-Fõ 0r   