o
    ưi                     @   sl   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 d dlmZ ddlmZ e ZG dd dZdS )	    )AnyAsyncIterator	CoroutineDictListOptionalUnioncastN)GenericLiteLLMParams)ModelResponse   )GoogleGenAIAdapterc                   @   sz  e Zd ZdZe				ddedeeeee	f  eee	f f de
eee	f  dede
e d	e
eee	f  d
eee	f fddZe		ddedeeeee	f  eee	f f dede
eee	f  ded
eeee	f ee f fddZe			ddedeeeee	f  eee	f f dede
eee	f  deded
eeee	f ee ee	e	eeee	f ee f f f fddZdS )"GenerateContentToCompletionHandlerzaHandler for transforming generate_content calls to completion format when provider config is NoneNFmodelcontentsconfigstreamlitellm_paramsextra_kwargsreturnc                 C   sf   t jd| |||d|pi }t|}|dur+d|v r!|d |d< d|v r+|d |d< |r1||d< |S )z1Prepare kwargs for litellm.completion/acompletion)r   r   r   r   Nmetadataextra_headersr    )GOOGLE_GENAI_ADAPTERZ(translate_generate_content_to_completiondict)r   r   r   r   r   r   Zcompletion_requestcompletion_kwargsr   r   \/home/app/Keep/.python/lib/python3.10/site-packages/litellm/google_genai/adapters/handler.py_prepare_completion_kwargs   s$   
z=GenerateContentToCompletionHandler._prepare_completion_kwargsc              
      s   t j| |||||d}z8tjdi |I dH }|r:t|ds*ttt|}|W S t	|}	|	dur6|	W S t
dttt|}|W S  tyY }
 z	t
dt|
 d}
~
ww )zDHandle generate_content call asynchronously using completion adapterr   r   r   r   r   r   N	__aiter__&Failed to transform streaming responsez8Error calling litellm.acompletion for generate_content: r   )r   r   litellmZacompletionhasattrr   (translate_completion_to_generate_contentr	   r   ,translate_completion_output_params_streaming
ValueError	Exceptionstr)r   r   r   r   r   kwargsr   completion_responsegenerate_content_responsetransformed_streamer   r   r   async_generate_content_handler6   sH   
zAGenerateContentToCompletionHandler.async_generate_content_handler	_is_asyncc              
   K   s   |rt jd| ||||d|S t j| |||||d}z5tjdi |}|rFt|ds6ttt	|}	|	W S t
|}
|
durB|
W S tdttt	|}	|	W S  tye } z	tdt| d}~ww )z5Handle generate_content call using completion adapter)r   r   r   r   r   r   __iter__Nr    z7Error calling litellm.completion for generate_content: r   )r   r-   r   r!   
completionr"   r   r#   r	   r   r$   r%   r&   r'   )r   r   r   r   r   r.   r(   r   r)   r*   r+   r,   r   r   r   generate_content_handlerp   sZ   

z;GenerateContentToCompletionHandler.generate_content_handler)NFNN)NF)NFF)__name__
__module____qualname____doc__staticmethodr'   r   r   r   r   r   boolr
   r   r   bytesr-   r   r1   r   r   r   r   r      s|    
%9
 r   )typingr   r   r   r   r   r   r   r	   r!   Zlitellm.types.routerr
   Zlitellm.types.utilsr   Ztransformationr   r   r   r   r   r   r   <module>   s   ( 