o
    ưiv!                     @   s   d Z ddl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mZ ddlmZmZmZ ddlmZ dd	lmZ G d
d deZdS )z
Azure Batches API Handler
    )Any	CoroutineOptionalUnioncastN)AsyncOpenAIOpenAI)AsyncAzureOpenAIAzureOpenAI)CancelBatchRequestCreateBatchRequestRetrieveBatchRequest)LiteLLMBatch   )BaseAzureLLMc                       sV  e Zd ZdZd$ fddZdedeeef de	fdd	Z
		d%d
ededee dee dee deeejf dee deeeeeef  dee dee	eeee	f f fddZdedeeef de	fddZ		d%d
ededee dee dee deeejf dee deeeeeef  dee fddZdedeeef de	fddZ		d%d
ededee dee dee deeejf dee deeeeeef  dee fddZ		d%deeef dee dee fd d!Z				d&d
edee dee dee deeejf dee dee dee deeeeeef  dee fd"d#Z  Z S )'AzureBatchesAPIz
    Azure methods to support for batches
    - create_batch()
    - retrieve_batch()
    - cancel_batch()
    - list_batch()
    returnNc                    s   t    d S )N)super__init__)self	__class__ Y/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/azure/batches/handler.pyr      s   zAzureBatchesAPI.__init__create_batch_dataazure_clientc                    ,   |j jdi |I d H }tdi | S Nr   )batchescreater   
model_dump)r   r   r   responser   r   r   acreate_batch!      zAzureBatchesAPI.acreate_batch	_is_asyncapi_keyapi_baseapi_versiontimeoutmax_retriesclientlitellm_paramsc
                 C      | j ||||||	p
i d}
|
d u rtd|du r+t|
ttfs$td| j||
dS tttt	f |
j
jdi |}tdi | S )Nr%   r&   r'   r*   r$   r+   jOpenAI client is not initialized. Make sure api_key is passed or OPENAI_API_KEY is set in the environment.T\OpenAI client is not an instance of AsyncOpenAI. Make sure you passed an AsyncOpenAI client.)r   r   r   )get_azure_openai_client
ValueError
isinstancer	   r   r"   r   r   r
   r   r   r   r   r    )r   r$   r   r%   r&   r'   r(   r)   r*   r+   r   r!   r   r   r   create_batch)   s.   
 zAzureBatchesAPI.create_batchretrieve_batch_datac                    r   r   )r   retriever   r    )r   r4   r*   r!   r   r   r   aretrieve_batchO   r#   zAzureBatchesAPI.aretrieve_batchc
                 C   r,   )Nr-   r.   Tr/   )r4   r*   r   )r0   r1   r2   r	   r   r6   r   r   r
   r   r   r5   r   r    )r   r$   r4   r%   r&   r'   r(   r)   r*   r+   r   r!   r   r   r   retrieve_batchW   s2   
zAzureBatchesAPI.retrieve_batchcancel_batch_datac                    r   r   )r   cancelr   r    )r   r8   r*   r!   r   r   r   acancel_batch   r#   zAzureBatchesAPI.acancel_batchc
                 C   s   | j ||||||	p
i d}
|
d u rtd|du r+t|
ttfs$td| j||
dS t|
ttfs6td|
jj	di |}t
di | S )Nr-   r.   TziAzure client is not an instance of AsyncAzureOpenAI or AsyncOpenAI. Make sure you passed an async client.)r8   r*   z]Azure client is not an instance of AzureOpenAI or OpenAI. Make sure you passed a sync client.r   )r0   r1   r2   r	   r   r:   r
   r   r   r9   r   r    )r   r$   r8   r%   r&   r'   r(   r)   r*   r+   r   r!   r   r   r   cancel_batch   s6   
zAzureBatchesAPI.cancel_batchafterlimitc                    s   |j j||dI d H }|S )Nr<   r=   )r   list)r   r*   r<   r=   r!   r   r   r   alist_batches   s   zAzureBatchesAPI.alist_batchesc                 C   sl   | j ||||	||
p
i d}|d u rtd|du r,t|ttfs$td| j|||dS |jj||d}|S )Nr-   r.   Tr/   )r*   r<   r=   r>   )r0   r1   r2   r	   r   r@   r   r?   )r   r$   r%   r&   r'   r(   r)   r<   r=   r*   r+   r   r!   r   r   r   list_batches   s.   
zAzureBatchesAPI.list_batches)r   N)NN)NNNN)!__name__
__module____qualname____doc__r   r   r   r	   r   r   r"   boolr   strfloathttpxTimeoutintr
   r   dictr   r   r3   r   r6   r7   r   r:   r;   r@   rA   __classcell__r   r   r   r   r      s    

	

&

	

(

	

/

	
r   )rE   typingr   r   r   r   r   rI   Zopenair   r   Zlitellm.llms.azure.azurer	   r
   Zlitellm.types.llms.openair   r   r   Zlitellm.types.utilsr   Zcommon_utilsr   r   r   r   r   r   <module>   s    