
    h9                         d Z ddlmZmZmZmZmZmZmZm	Z	 ddl
Z
ddlmZmZ ddlmZ ddlmZmZmZ ddlmZ erdd	lmZ  G d
 de      Z G d de      Zdedee   defdZy)z:
- completion
- acompletion
- streaming
- async_streaming
    )TYPE_CHECKINGAnyAsyncIteratorCallable	CoroutineIteratorOptionalUnionN)AsyncHTTPHandlerHTTPHandler)GenericStreamingChunk)EmbeddingResponseImageResponseModelResponse   )BaseLLM)CustomStreamWrapperc                        e Zd Z fdZ xZS )CustomLLMErrorc                 T    || _         || _        t        |   | j                         y N)status_codemessagesuper__init__)selfr   r   	__class__s      S/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/custom_llm.pyr   zCustomLLMError.__init__#   s(    
 'LL	
    )__name__
__module____qualname__r   __classcell__r   s   @r   r   r   "   s    	
 	
r   r   c                       e Zd Zd fdZdddi ddfdededededed	ed
ede	e
eej                  f      de	e   de
edf   fdZdddi ddfdededededed	ed
ede	e
eej                  f      de	e   dee   fdZdddi ddfdededededed	ed
ede	e
eej                  f      de	e   de
eeee
edf   f   e
edf   f   fdZdddi ddfdededededed	ed
ede	e
eej                  f      de	e   dee   fdZ	 	 ddedede	e   de	e   ded
edede	e
eej                  f      de	e   defdZ	 	 ddededede	e   de	e   d
edede	e
eej                  f      de	e   defdZ	 	 	 	 ddededed	eded
ede	e   de	e   de	e
eej                  f      defdZ	 	 	 	 ddededed	eded
ede	e   de	e   de	e
eej                  f      defdZ xZS )	CustomLLMreturnNc                 "    t         |           y r   )r   r   )r   r   s    r   r   zCustomLLM.__init__0   s    r   modelmessagesapi_basecustom_prompt_dictmodel_responseprint_verboseoptional_paramstimeoutclientr   c                     t        dd      Ni  zNot implemented yet!)r   r   r   r   r)   r*   r+   r,   r-   r.   encodingapi_keylogging_objr/   acompletionlitellm_params	logger_fnheadersr0   r1   s                    r   
completionzCustomLLM.completion3       & 6LMMr   c                     t        dd      r3   r4   r5   s                    r   	streamingzCustomLLM.streamingH   r>   r   c                 $   K   t        dd      wr3   r4   r5   s                    r   r9   zCustomLLM.acompletion]   s     , 6LMM   c                 $   K   t        dd      wr3   r4   r5   s                    r   
astreamingzCustomLLM.astreamingu   s     & 6LMMrB   promptr7   r8   c
                     t        dd      r3   r4   )
r   r)   rE   r7   r+   r-   r/   r8   r0   r1   s
             r   image_generationzCustomLLM.image_generation   s     6LMMr   c
                 $   K   t        dd      wr3   r4   )
r   r)   rE   r-   r7   r+   r/   r8   r0   r1   s
             r   aimage_generationzCustomLLM.aimage_generation   s       6LMMrB   inputc                     t        dd      r3   r4   r   r)   rJ   r-   r.   r8   r/   r7   r+   r0   r:   s              r   	embeddingzCustomLLM.embedding   s     6LMMr   c                 $   K   t        dd      wr3   r4   rL   s              r   
aembeddingzCustomLLM.aembedding   s      6LMMrB   )r'   N)NN)NNNN) r    r!   r"   r   strlistdictr   r   r	   r
   floathttpxTimeoutr   r=   r   r   r@   r   r   r   r9   r   rD   r   rG   rI   r   rM   rO   r#   r$   s   @r   r&   r&   /   sA    9=(,#NN N 	N
 !N &N  N N  %u}} 456!N" %#N$ 
}33	4%NB 9=(,#NN N 	N
 !N &N  N N  %u}} 456!N" %#N$ 
'	(%NB 9=-1#NN N 	N
 !N &N  N N  %u}} 456!N" )*#N$ 
#sE-1F"FGGHm223	5
%NH 9=-1#NN N 	N
 !N &N  N N  %u}} 456!N" )*#N$ 
,	-%N< :>(,NN N #	N
 3-N &N N N %u}} 456N %N 
N6 :>-1NN N &	N
 
N 
N N N %u}} 456N )*N 
N4 "&"&9=NN N *	N
  N N N #N 3-N %u}} 456N 
N. "&"&9=NN N *	N
  N N N #N 3-N %u}} 456N 
Nr   r&   async_fnstream
custom_llmc                 n    | r|r|j                   S |j                  S |r|j                  S |j                  S )z
    Routes call to CustomLLM completion/acompletion/streaming/astreaming functions, based on call type

    Validates if response is in expected format
    )rD   r9   r@   r=   )rV   rW   rX   s      r   custom_chat_llm_routerrZ      s=     (((%%%###   r   )__doc__typingr   r   r   r   r   r   r	   r
   rT   &litellm.llms.custom_httpx.http_handlerr   r   litellm.types.utilsr   litellm.utilsr   r   r   baser   litellmr   	Exceptionr   r&   boolrZ    r   r   <module>re      sq   	 	 	  P 5 I I +

Y 

WN WNt!!$TN!8A!r   