o
    ưi                     @   s   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 deZG dd deZdedee defddZdS )z:
- completion
- acompletion
- streaming
- async_streaming
    )TYPE_CHECKINGAnyAsyncIteratorCallable	CoroutineIteratorOptionalUnionN)AsyncHTTPHandlerHTTPHandler)GenericStreamingChunk)EmbeddingResponseImageResponseModelResponse   )BaseLLM)CustomStreamWrapperc                       s   e Zd Z fddZ  ZS )CustomLLMErrorc                    s   || _ || _t | j d S N)status_codemessagesuper__init__)selfr   r   	__class__ N/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/custom_llm.pyr   #   s
   zCustomLLMError.__init__)__name__
__module____qualname__r   __classcell__r   r   r   r   r   "   s    r   c                       s  e Zd Zd( fd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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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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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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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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!d"Z		d)ded#ede	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$d%Z		d)ded#ede	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&d'Z   Z!S )+	CustomLLMreturnNc                    s   t    d S r   )r   r   )r   r   r   r   r   0   s   zCustomLLM.__init__modelmessagesapi_basecustom_prompt_dictmodel_responseprint_verboseoptional_paramstimeoutclientr   c                 C      t dddNi  zNot implemented yet!)r   r   r   r   r$   r%   r&   r'   r(   r)   encodingapi_keylogging_objr*   acompletionlitellm_paramsZ	logger_fnheadersr+   r,   r   r   r   
completion3      zCustomLLM.completionc                 C   r-   r.   r/   r0   r   r   r   	streamingH   r8   zCustomLLM.streamingc                       t dddr.   r/   r0   r   r   r   r4   ]   s   zCustomLLM.acompletionc                    r:   r.   r/   r0   r   r   r   
astreamingu   s   zCustomLLM.astreamingpromptr2   r3   c
           
      C   r-   r.   r/   )
r   r$   r<   r2   r&   r(   r*   r3   r+   r,   r   r   r   image_generation   s   zCustomLLM.image_generationc
           
         r:   r.   r/   )
r   r$   r<   r(   r2   r&   r*   r3   r+   r,   r   r   r   aimage_generation   s   zCustomLLM.aimage_generationinputc                 C   r-   r.   r/   r   r$   r?   r(   r)   r3   r*   r2   r&   r+   r5   r   r   r   	embedding      zCustomLLM.embeddingc                    r:   r.   r/   r@   r   r   r   
aembedding      zCustomLLM.aembeddingimagec                 C   r-   r.   r/   r   r$   rE   r<   r(   r2   r&   r*   r3   r+   r,   r   r   r   
image_edit   rB   zCustomLLM.image_editc                    r:   r.   r/   rF   r   r   r   aimage_edit   rD   zCustomLLM.aimage_edit)r#   N)NN)NNNN)"r   r   r    r   strlistdictr   r   r   r	   floathttpxTimeoutr   r7   r   r   r9   r
   r   r   r4   r   r;   r   r=   r>   r   rA   rC   rG   rH   r!   r   r   r   r   r"   /   s   

!
!

$
	


	

	

	

	
r"   async_fnstream
custom_llmc                 C   s$   | 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
    )r;   r4   r9   r7   )rO   rP   rQ   r   r   r   custom_chat_llm_router   s   rR   )__doc__typingr   r   r   r   r   r   r   r	   rM   Z&litellm.llms.custom_httpx.http_handlerr
   r   Zlitellm.types.utilsr   Zlitellm.utilsr   r   r   baser   Zlitellmr   	Exceptionr   r"   boolrR   r   r   r   r   <module>   s&   ( 9