
    gR'                     h    d dl 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      Zy)    )Any	CoroutineOptionalUnionN)AsyncAzureOpenAIAsyncOpenAIAzureOpenAIOpenAI)FineTuningJob)verbose_loggerc                   t    e Zd ZdZd f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eeeef      fdZdedeeef   def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Zdedeeef   def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      fdZ	 	 ddeeef   dee   dee   f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Zdedeeef   def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      fdZ xZS )OpenAIFineTuningAPIz/
    OpenAI methods to support for batches
    returnc                 "    t         |           y N)super__init__)self	__class__s    \/var/www/openai/venv/lib/python3.12/site-packages/litellm/llms/openai/fine_tuning/handler.pyr   zOpenAIFineTuningAPI.__init__   s        api_keyapi_basetimeoutmax_retriesorganizationclient	_is_asyncapi_versionc	                     t               }	d }
|]i }|	j                         D ]*  \  }}|dk(  s
|dk(  s|dk(  r|dk(  r|||d<   #|&|||<   , |du rt        di |}
|
S t        di |}
|
S |}
|
S )Nr   r   r   r   base_urlT )localsitemsr   r
   )r   r   r   r   r   r   r   r   r   received_argsopenai_clientdatakvs                 r   get_openai_clientz%OpenAIFineTuningAPI.get_openai_client   s    (   	 >D%++-1;!x-13C*_'(D$]DG . D  + 3d 3 	 !'  #Mr   create_fine_tuning_job_datar&   c                 n   K    |j                   j                  j                  di | d {   }|S 7 w)Nr"   )fine_tuningjobscreate)r   r+   r&   responses       r   acreate_fine_tuning_jobz+OpenAIFineTuningAPI.acreate_fine_tuning_job<   s?     
 ?2277>> 
)
 
 
   *535c
           
      :   | j                  ||||||	||      }
|
t        d      |du r4t        |
t        t        f      st        d      | j                  ||
      S t        j                  d|        |
j                  j                  j                  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   r1   r   debugr-   r.   r/   )r   r   r+   r   r   r   r   r   r   r   r&   r0   s               r   create_fine_tuning_jobz*OpenAIFineTuningAPI.create_fine_tuning_jobF   s      ""#%# # 	
 	  |  mk;K-LM r  //,G+ 0   	02M	
 9=,,1188W;VWr   fine_tuning_job_idc                 n   K   |j                   j                  j                  |       d {   }|S 7 wNr;   )r-   r.   cancelr   r;   r&   r0   s       r   acancel_fine_tuning_jobz+OpenAIFineTuningAPI.acancel_fine_tuning_jobt   s=     
 '2277>>1 ? 
 
 
r2   c
           
      :   | j                  ||||||	||      }
|
t        d      |du r4t        |
t        t        f      st        d      | j                  ||
      S t        j                  d|       |
j                  j                  j                  |      }|S )Nr4   r5   Tr6   r;   r&   z#canceling fine tuning job, args= %sr>   )r*   r7   r8   r   r   rA   r   r9   r-   r.   r?   r   r   r;   r   r   r   r   r   r   r   r&   r0   s               r   cancel_fine_tuning_jobz*OpenAIFineTuningAPI.cancel_fine_tuning_job~   s      ""#%# # 	
 	  |  mk;K-LM r  //#5+ 0   	BDVW ,,11881 9 
 r   afterlimitc                 p   K   |j                   j                  j                  ||       d {   }|S 7 w)NrF   rG   )r-   r.   list)r   r&   rF   rG   r0   s        r   alist_fine_tuning_jobsz*OpenAIFineTuningAPI.alist_fine_tuning_jobs   s8      '2277<<5PU<VV Ws   +646c           
      @   | j                  ||||||||      }|t        d      |du r5t        |t        t        f      st        d      | j                  |	|
|      S t        j                  d|	|
       |j                  j                  j                  |	|
      }|S )Nr4   r5   Tr6   )rF   rG   r&   z*list fine tuning job, after= %s, limit= %srI   )r*   r7   r8   r   r   rK   r   r9   r-   r.   rJ   )r   r   r   r   r   r   r   r   r   rF   rG   r&   r0   s                r   list_fine_tuning_jobsz)OpenAIFineTuningAPI.list_fine_tuning_jobs   s    " ""#%# # 	
 	  |  mk;K-LM r  ..+ /  
 	I5RWX ,,1166U%6Pr   c                 n   K   |j                   j                  j                  |       d {   }|S 7 wr=   )r-   r.   retriever@   s       r   aretrieve_fine_tuning_jobz-OpenAIFineTuningAPI.aretrieve_fine_tuning_job   s>     
 '2277@@1 A 
 
 
r2   c
           
      .   | j                  ||||||	||      }
|
t        d      |du r.t        |
t              st        d      | j	                  ||
      S t        j                  d|       |
j                  j                  j                  |      }|S )Nr4   r5   Tr6   rC   z"retrieving fine tuning job, id= %sr>   )
r*   r7   r8   r   rP   r   r9   r-   r.   rO   rD   s               r   retrieve_fine_tuning_jobz,OpenAIFineTuningAPI.retrieve_fine_tuning_job   s      ""#%# # 	
 	  |  m[9 r  11#5+ 2   	ACUV ,,11::1 ; 
 r   )r   N)NFNr   )NN)NNN)__name__
__module____qualname____doc__r   r   strr   floathttpxTimeoutintr
   r   r	   r   boolr*   dictr   r1   r   r   r:   rA   rE   rK   rM   rP   rR   __classcell__)r   s   @r   r   r   
   s4    %)(#( 3-( uemm+,	(
 c]( sm( &+{4DDE
( ( c]( 
	

(T%) [*::; 
	, ,, &*, #	,
 3-, c], uemm+,, c], sm, &+{4DDE
, 
}iS-(?@@	A,\ [*::; 
	, ,,  , #	,
 3-, c], uemm+,, c], sm, &+{4DDE
,b  $#	[*::; } }	( ##,, #, 3-	,
 c], uemm+,, c], sm, &+{4DDE
, }, },\ [*::; 
	, ,,  , #	,
 3-, c], uemm+,, c], sm, &+{4DDE
,r   r   )typingr   r   r   r   rY   openair   r   r	   r
   openai.types.fine_tuningr   litellm._loggingr   r   r"   r   r   <module>rc      s&    2 2  E E 2 +O Or   