o
    ưi$8                     @   sz   d dl mZmZm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 ddlmZmZ e ZG d	d
 d
eZdS )    )AnyCallableOptional)AsyncAzureOpenAIAzureOpenAI)prompt_factory)CustomStreamWrapperModelResponseTextCompletionResponse   )OpenAITextCompletionConfig   )AzureOpenAIErrorBaseAzureLLMc                       s2  e Zd Zd! fddZdd Z			d"ded	ed
edee dedededee dee	 de	de
dee fddZddi fdee dededededed
edededee defddZddi fdedee dededededee defddZddi fdedee dededededee defdd Z  ZS )#AzureTextCompletionreturnNc                    s   t    d S )N)super__init__)self	__class__ \/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/azure/completion/handler.pyr      s   zAzureTextCompletion.__init__c                 C   s6   ddi}|d ur||d< |S |d urd| |d< |S )Nzcontent-typezapplication/jsonzapi-keyBearer Authorizationr   )r   api_keyazure_ad_tokenheadersr   r   r   validate_environment   s   z(AzureTextCompletion.validate_environmentFmodelmessagesmodel_responser   api_baseapi_versionapi_typer   azure_ad_token_providerprint_verboseacompletionr   c                 C   sZ  z|d u s	|d u rt ddd|dd}t||dd}|d ur<d|v r<| j|||||||||	||d	}d |d
|}n||d
|}|du ro|ddr]| j||||||||||d
W S | j||||||||||||dW S d|v r|d du r| j|||||||||d	W S |j||||d|||dd t	|t
st ddd| j|||||d|d}t	|tst ddd|jjjd i |d|i}| }| }|j||||||dd tjtd i ||dW S  t y } z|d }~w ty, } z)t|dd}t|dd }t|dd }|d u r|rt|dd }t |t||dd }~ww )!N  zMissing model or messagesstatus_codemessagemax_retriesr   
azure_text)r    r   custom_llm_providerzgateway.ai.cloudflare.com)r   r#   r"   r   clientr,   timeoutr   r%   r'   litellm_params)r   promptTstreamF)
logging_objr"   datar   r   r#   r   r0   r/   r1   )r"   r5   r!   r   r#   r   r   r0   r/   r4   r,   r1   )	r4   r"   r5   r   r   r#   r   r0   r/   )r   r   )r   r#   r"   complete_input_dictinputr   additional_argsmax retries must be an int)r   r"   r#   r/   r1   	_is_asyncr     .azure_client is not an instance of AzureOpenAIr0   )r   r#   r"   )r8   r   original_responser9   Zresponse_objectZmodel_response_objectr*   r   responser*   r+   r   r   )r   popr   Z,_init_azure_client_for_cloudflare_ai_gatewaygetasync_streamingr'   	streamingpre_call
isinstanceintget_azure_openai_clientr   completionswith_raw_responsecreateparse
model_dumpZ	post_callopenai_text_completion_config%convert_to_chat_model_response_objectr
   	Exceptiongetattrstr)r   r   r    r!   r   r"   r#   r$   r   r%   r&   r0   r4   Zoptional_paramsr1   Z	logger_fnr'   r   r/   r,   r2   r5   azure_clientraw_responser@   Zstringified_responseer*   error_headerserror_responser   r   r   
completion   s
  



zAzureTextCompletion.completionr5   r0   r4   r,   r1   c              
      s$  d }zN| j ||||d||d}t|tstddd|j|d |jdd|j i|jjd|d	d
 |jj	j
di |d|iI d H }| }tj| |dW S  ty_ } z|d }~w ty } z't|dd}t|dd }t|dd }|d u r|rt|dd }t|t||dd }~ww )NTr#   r"   r   r   r;   r/   r1   r<   3azure_client is not an instance of AsyncAzureOpenAIr)   r2   r   r   r   r"   r'   r6   r7   r0   r?   r*   r   r@   rA   r   )rI   rG   r   r   rF   r   	_base_url_uri_referencerJ   rK   rL   rM   rO   rP   rN   rQ   rR   rS   )r   r   r#   r   r"   r5   r0   r!   r4   r,   r   r/   r1   r@   rT   rU   rV   r*   rW   rX   r   r   r   r'      sd   
	

zAzureTextCompletion.acompletionc              	   C   s   | dd}t|tstddd| j||||d|	|
d}t|ts(tdd	d|j|d
 |jdd|j i|jj	d|dd |j
jjdi |d|i}| }t||d|d}|S )Nr,   r   r(   r:   r)   FrZ   r<   r=   r2   r   r   Tr\   r7   r0   r-   Zcompletion_streamr   r.   r4   r   )rB   rG   rH   r   rI   r   rF   r   r]   r^   rJ   rK   rL   rM   r   )r   r4   r"   r   r#   r5   r   r0   r   r/   r1   r,   rT   rU   r@   streamwrapperr   r   r   rE     sR   

	
zAzureTextCompletion.streamingc              
      s  zO| j ||||d|	|
d}t|tstddd|j|d |jdd|j i|jjd|d	d
 |jj	j
di |d|iI d H }| }t||d|d}|W S  ty } z't|dd}t|dd }t|dd }|d u rv|rvt|dd }t|t||dd }~ww )NTrZ   r<   r[   r)   r2   r   r   r\   r7   r0   r-   r_   r*   r   r@   rA   r   )rI   rG   r   r   rF   r   r]   r^   rJ   rK   rL   rM   r   rQ   rR   rS   )r   r4   r"   r   r#   r5   r   r0   r   r/   r1   rT   rU   r@   r`   rV   r*   rW   rX   r   r   r   rD   ?  sb   
	

z#AzureTextCompletion.async_streaming)r   N)FNN)__name__
__module____qualname__r   r   rS   listr	   r   r   booldictrY   r   rH   r'   rE   rD   __classcell__r   r   r   r   r      s    	

 5	

J	
B	r   N)typingr   r   r   Zopenair   r   Z3litellm.litellm_core_utils.prompt_templates.factoryr   Zlitellm.utilsr   r	   r
   Z openai.completion.transformationr   Zcommon_utilsr   r   rO   r   r   r   r   r   <module>   s    