o
    ưi)                     @   sf   d dl mZmZmZmZmZ d dlZd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ G dd dZdS )    )Any	CoroutineOptionalUnioncastN)AsyncAzureOpenAIAsyncOpenAIAzureOpenAIOpenAI)verbose_logger)LiteLLMFineTuningJobc                       s  e Zd ZdZd' fddZ				d(dee dee d	eee	j
f d
ee dee deeeeeef  dedee dee deeeeee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 deeeeeef  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 deeeeeef  deeeeeef f 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eeeef  dee 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 deeeeeef  deeeeeef f fd%d&Z  ZS ),OpenAIFineTuningAPIz/
    OpenAI methods to support for batches
    returnNc                    s   t    d S N)super__init__)self	__class__ ^/home/app/Keep/.python/lib/python3.10/site-packages/litellm/llms/openai/fine_tuning/handler.pyr      s   zOpenAIFineTuningAPI.__init__Fapi_keyapi_basetimeoutmax_retriesorganizationclient	_is_asyncapi_versionlitellm_paramsc
                 C   s   t  }
d }|d u rLi }|
 D ]&\}}|dks|dks|dkr q|dkr-|d ur-||d< q|d ur5|||< q|du rCtdi |}|S tdi |}|S |}|S )Nr   r   r   r   base_urlTr   )localsitemsr   r
   )r   r   r   r   r   r   r   r   r   r   Zreceived_argsopenai_clientdatakvr   r   r   get_openai_client   s(   
z%OpenAIFineTuningAPI.get_openai_clientcreate_fine_tuning_job_datar#   c                    s.   |j jjdi |I d H }tdi | S )Nr   )fine_tuningjobscreater   
model_dump)r   r(   r#   responser   r   r   acreate_fine_tuning_job6   s
   z+OpenAIFineTuningAPI.acreate_fine_tuning_jobc
              
   C   s   | j ||||||	||d}
|
d u rtd|du r+t|
ttfs$td| j||
dS td| tt	|
j
jjdi |}tdi | S )Nr   r   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#   z"creating fine tuning job, args= %sr   )r'   
ValueError
isinstancer   r   r.   r   debugr   r
   r)   r*   r+   r   r,   )r   r   r(   r   r   r   r   r   r   r   r#   r-   r   r   r   create_fine_tuning_jobA   s>   z*OpenAIFineTuningAPI.create_fine_tuning_jobfine_tuning_job_idc                    *   |j jj|dI d H }tdi | S Nr6   r   )r)   r*   cancelr   r,   r   r6   r#   r-   r   r   r   acancel_fine_tuning_jobq   
   z+OpenAIFineTuningAPI.acancel_fine_tuning_jobc
              
   C   s   | j ||||||	||d}
|
d u rtd|du r+t|
ttfs$td| j||
dS td| tt	|
j
jj|d}tdi | S )	Nr/   r0   Tr1   r6   r#   z#canceling fine tuning job, args= %sr9   r   )r'   r2   r3   r   r   r<   r   r4   r   r
   r)   r*   r:   r   r,   r   r   r6   r   r   r   r   r   r   r   r#   r-   r   r   r   cancel_fine_tuning_job{   s:   z*OpenAIFineTuningAPI.cancel_fine_tuning_jobafterlimitc                    s   |j jj||dI d H }|S )NrA   rB   )r)   r*   list)r   r#   rA   rB   r-   r   r   r   alist_fine_tuning_jobs   s   z*OpenAIFineTuningAPI.alist_fine_tuning_jobsc              
   C   s|   | j ||||||||d}|d u rtd|du r,t|ttfs$td| j|	|
|dS td|	|
 |jj	j
|	|
d}|S )Nr/   r0   Tr1   )rA   rB   r#   z*list fine tuning job, after= %s, limit= %srC   )r'   r2   r3   r   r   rE   r   r4   r)   r*   rD   )r   r   r   r   r   r   r   r   r   rA   rB   r#   r-   r   r   r   list_fine_tuning_jobs   s8   z)OpenAIFineTuningAPI.list_fine_tuning_jobsc                    r7   r8   )r)   r*   retriever   r,   r;   r   r   r   aretrieve_fine_tuning_job   r=   z-OpenAIFineTuningAPI.aretrieve_fine_tuning_jobc
              
   C   s   | j ||||||	||d}
|
d u rtd|du r)t|
ts"td| j||
dS td| tt|
j	j
j|d}tdi | S )	Nr/   r0   Tr1   r>   z"retrieving fine tuning job, id= %sr9   r   )r'   r2   r3   r   rH   r   r4   r   r
   r)   r*   rG   r   r,   r?   r   r   r   retrieve_fine_tuning_job   s:   
z,OpenAIFineTuningAPI.retrieve_fine_tuning_job)r   N)NFNNr   )NN)NNN)__name__
__module____qualname____doc__r   r   strr   floathttpxTimeoutintr
   r   r	   r   booldictr'   r   r.   r   r   r5   r<   r@   rE   rF   rH   rI   __classcell__r   r   r   r   r   
   s<   

$

	

0

	

1

	
.

	
r   )typingr   r   r   r   r   rP   Zopenair   r   r	   r
   Zlitellm._loggingr   Zlitellm.types.utilsr   r   r   r   r   r   <module>   s    