Ë
    uPêjt  ã                   ó   — U d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	m
Z
mZ ddlZddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ddl­ ddlmZ ddlmZm Z   e«       Z!e
e"d<    e«       Z#e
e"d<    e«       Z$e
e"d<   de%e&e	f   dz  de%e&e	f   de%e&e	f   de%e&e	f   fd„Z'ei dddddddfde&de&de%dz  de&dz  de&dz  de(e&   dz  de)dz  ded    d!e%e&e&f   dz  de%e&e&f   dz  defd"„«       Z*d#„ Z+d$e	de&de,ejZ                  z  fd%„Z.ei dddddddfde&de&de%dz  de&dz  de&dz  de(e&   dz  de)dz  ded    d!e%e&e&f   dz  de%e&e&f   dz  deee	e	ef   z  fd&„«       Z/e	 	 	 d0d'e&ded    d!e%e&e&f   dz  de%e&e&f   dz  def
d(„«       Z0e	 	 	 d0d'e&ded    d!e%e&e&f   dz  de%e&e&f   dz  deee	e	ef   z  f
d)„«       Z1	 	 	 	 	 d1d*e&dz  d+e)dz  ded    d!e%e&e&f   dz  de%e&e&f   dz  f
d,„Z2	 	 	 	 	 d1d*e&dz  d+e)dz  ded    d!e%e&e&f   dz  de%e&e&f   dz  f
d-„Z3e	 	 	 d0d'e&ded    d!e%e&e&f   dz  de%e&e&f   dz  def
d.„«       Z4e	 	 	 d0d'e&ded    d!e%e&e&f   dz  de%e&e&f   dz  deee	e	ef   z  f
d/„«       Z5y)2zÉ
Main File for Fine Tuning API implementation

https://platform.openai.com/docs/api-reference/fine-tuning

- fine_tuning.jobs.create()
- fine_tuning.jobs.list()
- client.fine_tuning.jobs.list_events()
é    N)Ú	Coroutine)Úpartial)ÚAnyÚFinalÚLiteral)Úverbose_logger)ÚAzureOpenAIFineTuningAPI)ÚOpenAIFineTuningAPI)ÚVertexFineTuningAPI)Úget_secret_str)ÚFineTuningJobCreateÚHyperparameters)Ú*)ÚLiteLLMFineTuningJob)ÚclientÚsupports_httpx_timeoutÚ openai_fine_tuning_apis_instanceÚazure_fine_tuning_apis_instanceÚ vertex_fine_tuning_apis_instanceÚ
extra_bodyÚkwargsÚazure_specific_hyperparamsÚreturnc                 ób   — | €i } dg}|D ]  }||v sŒ||   | |<   Œ |r| j                  |«       | S )aæ  
    Prepare extra_body for Azure fine-tuning API by combining Azure-specific parameters.

    Azure fine-tuning API accepts additional parameters beyond the standard OpenAI spec:
    - trainingType: Type of training (e.g., 1 for supervised fine-tuning)
    - prompt_loss_weight: Weight for prompt loss in training

    These parameters must be passed in the extra_body field when calling the Azure OpenAI SDK.

    Args:
        extra_body: Optional existing extra_body dict
        kwargs: Request kwargs that may contain Azure-specific parameters
        azure_specific_hyperparams: Dict of Azure-specific hyperparameters already extracted

    Returns:
        Dict containing all Azure-specific parameters to be passed in extra_body
    ÚtrainingType)Úupdate)r   r   r   Úazure_specific_paramsÚparams        ú]/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/fine_tuning/main.pyÚ_prepare_azure_extra_bodyr    &   sX   € ð, ÐØˆ
ð %3Ð#3ÐØ&ò .ˆØ�FŠ?Ø & u¡ˆJ�uÒð.ñ
 "Ø×ÑÐ4Ô5àÐó    ÚopenaiÚmodelÚtraining_fileÚhyperparametersÚsuffixÚvalidation_fileÚintegrationsÚseedÚcustom_llm_provider)r"   ÚazureÚ	vertex_aiÚextra_headersc
              ‹   ó   K  — t        j                  d| |
«       	 t        j                  «       }d|
d<   t	        t
        | |||||||||	fi |
¤Ž}t        j                  «       }t	        |j                  |«      }|j                  d|«      ƒ d{  –—† }t        j                  |«      r|ƒ d{  –—† }|S |}|S 7 Œ)7 Œ# t        $ r}|‚d}~ww xY w­w)zO
    Async: Creates and executes a batch from an uploaded file of request

    z5inside acreate_fine_tuning_job model=%s and kwargs=%sTÚacreate_fine_tuning_jobN)r   ÚdebugÚasyncioÚget_event_loopr   Úcreate_fine_tuning_jobÚcontextvarsÚcopy_contextÚrunÚrun_in_executorÚiscoroutineÚ	Exception)r#   r$   r%   r&   r'   r(   r)   r*   r-   r   r   ÚloopÚfuncÚctxÚfunc_with_contextÚinit_responseÚresponseÚes                     r   r/   r/   L   sò   è ø€ ô$ ×ÑÐPÐRWÐY_Ô`ðÜ×,Ñ,Ó.ˆØ,0ˆÐ(Ñ)ô Ü"ØØØØØØØØØØñ
ð ñ
ˆô  !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHØˆð  Søà*ùô ò ØˆûðüsY   ‚C›A2B; ÂB7ÂB; Â,B9Â-B; Â2CÂ3B; Â6CÂ7B; Â9B; Â;	CÃCÃCÃCc           	      ó&   — t        | ||||||¬«      S )N©r#   r$   r%   r&   r'   r(   r)   )r   rB   s          r   Ú_build_fine_tuning_job_datarC   €   s$   € ÜØØ#Ø'ØØ'Ø!Øôð r!   Útimeoutc                 ó¤   — | xs d} t        | t        j                  «      r&t        |«      st	        | j
                  xs d«      S | S t	        | «      S )zZNormalise a raw timeout value to a float (seconds) or httpx.Timeout for fine-tuning calls.ç     À‚@éX  )Ú
isinstanceÚhttpxÚTimeoutr   ÚfloatÚread)rD   r*   s     r   Ú_resolve_fine_tuning_timeoutrM   Œ   sH   € ð
 Ò˜€GÜ�'œ5Ÿ=™=Ô)Ü%Ð&9Ô:Ü˜Ÿ™Ò,¨Ó-Ð-ØˆÜ�‹>Ðr!   c
                 óZ  — 	 |
j                  dd«      du }t        d*i |
¤Ž}|xs i }i }|dk(  r#dg}|D ]  }||v sŒ|j                  |«      ||<   Œ t        d*i |¤Ž}t        |j                  xs |
j                  dd«      |«      }|dk(  �r6|j                  xsB t        j                  xs0 t        j                  d	«      xs t        j                  d
«      xs d}|j                  xs, t        j                  xs t        j                  dd«      xs d}|j                  xs9 t        j                  xs' t        j                  xs t        j                  d«      }t        | ||||||«      j                  d¬«      }t        j!                  |||j"                  ||||j$                  ||
j                  dd«      ¬«	      }|S |dk(  �r.|j                  xs t        j                  xs t'        d«      }|j"                  xs t        j"                  xs t'        d«      }|j                  xs< t        j                  xs* t        j(                  xs t'        d«      xs t'        d«      }|j                  di «      }	|	�|	j                  dd«       t+        |	|
|«      }	t        | ||||||«      j                  d¬«      }|	r|	|d<   t,        j!                  ||||||j$                  ||j                  ¬«      }|S |dk(  r®|j                  xs d}|j.                  xs t        j.                  xs t'        d«      }|j0                  xs t        j0                  xs t'        d«      }|j2                  xs t'        d«      }t4        j!                  |t        | ||||||«      ||||||
|¬«	      }|S t        j6                  j9                  d|› d �d!|t;        j<                  d"d#t;        j>                  d$d%¬&«      ¬'«      ¬(«      ‚# t@        $ r&}tC        jD                  d)tG        |«      «       |‚d}~ww xY w)+zç
    Creates a fine-tuning job which begins the process of creating a new model from a given dataset.

    Response includes details of the enqueued job including job status and the name of the fine-tuned models once complete

    r/   FTr+   Úprompt_loss_weightÚrequest_timeoutrG   r"   ÚOPENAI_BASE_URLÚOPENAI_API_BASEúhttps://api.openai.com/v1ÚOPENAI_ORGANIZATIONNÚOPENAI_API_KEY)Úexclude_noner   )	Úapi_baseÚapi_keyÚapi_versionÚorganizationÚcreate_fine_tuning_job_datarD   Úmax_retriesÚ	_is_asyncr   ÚAZURE_API_BASEÚAZURE_API_VERSIONÚAZURE_OPENAI_API_KEYÚAZURE_API_KEYr   Úazure_ad_token)rW   rX   rY   r[   rD   r\   r]   rZ   r,   Ú ÚVERTEXAI_PROJECTÚVERTEXAI_LOCATIONÚVERTEXAI_CREDENTIALS)	r]   r[   Úvertex_credentialsÚvertex_projectÚvertex_locationrD   rW   r   Úoriginal_hyperparametersúLiteLLM doesn't support ú0 for 'create_batch'. Only 'openai' is supported.ún/aé�  úUnsupported providerÚcreate_threadú"https://github.com/BerriAI/litellm©ÚmethodÚurl©Ústatus_codeÚcontentÚrequest©Úmessager#   Úllm_providerr?   z*got exception in create_fine_tuning_job=%s© )$ÚpopÚGenericLiteLLMParamsr   rM   rD   ÚgetrW   ÚlitellmÚosÚgetenvrZ   rX   Ú
openai_keyrC   Ú
model_dumpr   r3   rY   r\   r   Ú	azure_keyr    r   rh   ri   rg   r   Ú
exceptionsÚBadRequestErrorrI   ÚResponseÚRequestr9   r   ÚerrorÚstr)r#   r$   r%   r&   r'   r(   r)   r*   r-   r   r   r]   Úoptional_paramsr   Úazure_hyperparameter_keysÚkeyÚ_oai_hyperparametersrD   rW   rZ   rX   Ú create_fine_tuning_job_data_dictr?   rY   Úvertex_ai_projectÚvertex_ai_locationrg   r@   s                               r   r3   r3   ™   s¿  € ð(]Ø!Ÿ:™:Ð&?ÀÓGÈ4ÐOˆ	Ü!5Ñ!?¸Ñ!?ˆð *Ò/¨Rˆð -/Ð"Ø 'Ò)Ø0DÐ/EÐ%Ø0ò O�Ø˜/Ò)Ø6E×6IÑ6IÈ#Ó6NÐ.¨sÒ3ðOô 8Gñ 8
Øñ8
Ðô 6Ø×#Ñ#ÒI v§z¡zÐ2CÀSÓ'IØó
ˆð  (Ó*ð  ×(Ñ(ò /Ü×#Ñ#ò/ä—9‘9Ð.Ó/ò/ô —9‘9Ð.Ó/ò/ð /ð ð  ×,Ñ,ò Ü×'Ñ'òä—9‘9Ð2°DÓ9òð ð	 ð  ×'Ñ'ò /Ü—?‘?ò/ä×%Ñ%ò/ô —9‘9Ð-Ó.ð	 ô 0KØØØ$ØØØØó0÷ ‰j dˆjÓ+ð -ô 8×NÑNØ!ØØ+×7Ñ7Ø)Ø,LØØ+×7Ñ7Ø#Ø—z‘zØ˜dóð Oó ˆHðB ˆðg ! GÓ+Ø&×/Ñ/Òg´7×3CÑ3CÒgÄ~ÐVfÓGgˆHà)×5Ñ5Òs¼×9LÑ9LÒsÔP^Ð_rÓPsˆKð  ×'Ñ'ò 3Ü—?‘?ò3ä×$Ñ$ò3ô "Ð"8Ó9ò3ô " /Ó2ð ð )×,Ñ,¨\¸2Ó>ˆJØÐ%Ø—‘Ð/°Ô6ô 3°:¸vÐGaÓbˆJä/JØØØ$ØØØØó0÷ ‰j dˆjÓ+ð -ñ ØAKÐ0°Ñ>ä6×MÑMØ!ØØ'Ø,LØØ+×7Ñ7Ø#Ø,×9Ñ9ð Nó 	ˆHðb ˆðO ! KÒ/Ø&×/Ñ/Ò5°2ˆHà×.Ñ.Òn´'×2HÑ2HÒnÌNÐ[mÓLnð ð  ×/Ñ/Òq´7×3JÑ3JÒqÌnÐ]pÓNqð ð )8×(JÑ(JÒ(tÌnÐ]sÓNtÐÜ7×NÑNØ#Ü,GØØ!Ø(ØØ#Ø Øó-ð $6Ø0Ø 2ØØ!ØØ)8ð# Oó ˆHð< ˆô ×$Ñ$×4Ñ4Ø2Ð3FÐ2GÐGwÐxØØ0ÜŸ™Ø #Ø2Ü!ŸM™M°ÐFjÔkôð	 5ó 	ð 	øô ò Ü×ÑÐIÌ3ÈqË6ÔRØˆûðús2   ‚8O; »FO; ÇD3O; Ë6B2O; Î)AO; Ï;	P*Ð!P%Ð%P*Úfine_tuning_job_idc              ‹   óf  K  — 	 t        j                  «       }d|d<   t        t        | |||fi |¤Ž}t	        j
                  «       }t        |j                  |«      }|j                  d|«      ƒ d{  –—† }	t        j                  |	«      r|	ƒ d{  –—† }
|
S |	}
|
S 7 Œ)7 Œ# t        $ r}|‚d}~ww xY w­w)z4
    Async: Immediately cancel a fine-tune job.
    TÚacancel_fine_tuning_jobN)
r1   r2   r   Úcancel_fine_tuning_jobr4   r5   r6   r7   r8   r9   ©r“   r*   r-   r   r   r:   r;   r<   r=   r>   r?   r@   s               r   r•   r•   M  sÉ   è ø€ ðÜ×,Ñ,Ó.ˆØ,0ˆÐ(Ñ)ô Ü"ØØØØñ
ð ñ
ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHØˆð  Søà*ùô ò ØˆûðüóY   ‚B1„A,B Á0BÁ1B ÂBÂB ÂB1ÂB ÂB1ÂB ÂB Â	B.Â'B)Â)B.Â.B1c                 óV  — 	 t        d"i |¤Ž}|j                  xs |j                  dd«      xs d}|�:t        |t        j
                  «      r t        |«      du r|j                  xs d}|}n,|�&t        |t        j
                  «      st        |«      }n|€d}|j                  dd«      du }|dk(  �r|j                  xsB t        j                  xs0 t        j                  d	«      xs t        j                  d
«      xs d}	|j                  xs, t        j                  xs t        j                  dd«      xs d}
|j                  xs9 t        j                  xs' t        j                   xs t        j                  d«      }t"        j%                  |	||j&                  |
| ||j(                  ||j                  dd«      ¬«	      }|S |dk(  rù|j                  xs t        j                  xs t+        d«      }	|j&                  xs t        j&                  xs t+        d«      }|j                  xs< t        j                  xs* t        j,                  xs t+        d«      xs t+        d«      }|j                  di «      }|�|j                  dd«       t.        j%                  |	||| ||j(                  ||j                  ¬«      }|S t        j0                  j3                  d|› d�d|t	        j4                  ddt	        j6                  dd¬«      ¬ «      ¬!«      ‚# t8        $ r}|‚d}~ww xY w)#zª
    Immediately cancel a fine-tune job.

    Response includes details of the enqueued job including job status and the name of the fine-tuned models once complete

    rP   rG   NFrF   r•   Tr"   rQ   rR   rS   rT   rU   r   ©	rW   rX   rY   rZ   r“   rD   r\   r]   r   r+   r^   r_   r`   ra   r   rb   ©rW   rX   rY   r“   rD   r\   r]   rZ   rk   rl   rm   rn   ro   rp   rq   rr   ru   ry   r|   )r~   rD   r   rH   rI   rJ   r   rL   rK   r}   rW   r€   r�   r‚   rZ   rX   rƒ   r   r–   rY   r\   r   r…   r   r†   r‡   rˆ   r‰   r9   ©r“   r*   r-   r   r   rŒ   rD   Úread_timeoutr]   rW   rZ   rX   r?   rY   r@   s                  r   r–   r–   s  s<  € ð`Ü!5Ñ!?¸Ñ!?ˆà!×)Ñ)ÒV¨V¯Z©ZÐ8IÈ3Ó-OÒVÐSVˆð ÐÜ˜7¤E§M¡MÔ2Ü&Ð':Ó;¸uÑDà")§,¡,Ò"5°#ˆLØ"‰GØÐ ¬°G¼U¿]¹]Ô)KÜ˜G“n‰GØˆ_ØˆGà!Ÿ:™:Ð&?ÀÓGÈ4ÐOˆ	ð  (Ó*ð  ×(Ñ(ò /Ü×#Ñ#ò/ä—9‘9Ð.Ó/ò/ô —9‘9Ð.Ó/ò/ð /ð ð  ×,Ñ,ò Ü×'Ñ'òä—9‘9Ð2°DÓ9òð ð	 ð  ×'Ñ'ò /Ü—?‘?ò/ä×%Ñ%ò/ô —9‘9Ð-Ó.ð	 ô 8×NÑNØ!ØØ+×7Ñ7Ø)Ø#5ØØ+×7Ñ7Ø#Ø—z‘z (¨DÓ1ð Oó 
ˆHðd ˆðM ! GÒ+Ø&×/Ñ/Òg´7×3CÑ3CÒgÄ~ÐVfÓGgˆHà)×5Ñ5Òs¼×9LÑ9LÒsÔP^Ð_rÓPsˆKð  ×'Ñ'ò 3Ü—?‘?ò3ä×$Ñ$ò3ô "Ð"8Ó9ò3ô " /Ó2ð ð )×,Ñ,¨\¸2Ó>ˆJØÐ%Ø—‘Ð/°Ô6ä6×MÑMØ!ØØ'Ø#5ØØ+×7Ñ7Ø#Ø,×9Ñ9ð Nó 	ˆHð* ˆô ×$Ñ$×4Ñ4Ø2Ð3FÐ2GÐGwÐxØØ0ÜŸ™Ø #Ø2Ü!ŸM™M°ÐFjÔkôð	 5ó 	ð 	øô ò Øˆûðúó&   ‚GL ÇC=L ËAL Ì	L(Ì!L#Ì#L(ÚafterÚlimitc              ‹   óh  K  — 	 t        j                  «       }d|d<   t        t        | ||||fi |¤Ž}t	        j
                  «       }t        |j                  |«      }	|j                  d|	«      ƒ d{  –—† }
t        j                  |
«      r|
ƒ d{  –—† }|S |
}|S 7 Œ)7 Œ# t        $ r}|‚d}~ww xY w­w)z:
    Async: List your organization's fine-tuning jobs
    TÚalist_fine_tuning_jobsN)
r1   r2   r   Úlist_fine_tuning_jobsr4   r5   r6   r7   r8   r9   )rŸ   r    r*   r-   r   r   r:   r;   r<   r=   r>   r?   r@   s                r   r¢   r¢   ä  sÌ   è ø€ ðÜ×,Ñ,Ó.ˆØ+/ˆÐ'Ñ(ô Ü!ØØØØØñ
ð ñ
ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHØˆð  Søà*ùô ò ØˆûðüsY   ‚B2„A-B Á1BÁ2B ÂBÂB ÂB2ÂB ÂB2ÂB ÂB Â	B/Â(B*Â*B/Â/B2c                 óZ  — 	 t        d"i |¤Ž}|j                  xs |j                  dd«      xs d}|�:t        |t        j
                  «      r t        |«      du r|j                  xs d}|}n,|�&t        |t        j
                  «      st        |«      }n|€d}|j                  dd«      du }	|dk(  �r|j                  xsB t        j                  xs0 t        j                  d	«      xs t        j                  d
«      xs d}
|j                  xs, t        j                  xs t        j                  dd«      xs d}|j                  xs9 t        j                  xs' t        j                   xs t        j                  d«      }t"        j%                  |
||j&                  || |||j(                  |	|j                  dd«      ¬«
      }|S |dk(  rú|j                  xs t        j                  xs t+        d«      }
|j&                  xs t        j&                  xs t+        d«      }|j                  xs< t        j                  xs* t        j,                  xs t+        d«      xs t+        d«      }|j                  di «      }|�|j                  dd«       t.        j%                  |
||| |||j(                  |	|j                  ¬«	      }|S t        j0                  j3                  d|› d�d|t	        j4                  ddt	        j6                  dd¬«      ¬ «      ¬!«      ‚# t8        $ r}|‚d}~ww xY w)#a   
    List your organization's fine-tuning jobs

    Params:

    - after: Optional[str] = None, Identifier for the last job from the previous pagination request.
    - limit: Optional[int] = None, Number of fine-tuning jobs to retrieve. Defaults to 20
    rP   rG   NFrF   r¢   Tr"   rQ   rR   rS   rT   rU   r   )
rW   rX   rY   rZ   rŸ   r    rD   r\   r]   r   r+   r^   r_   r`   ra   r   rb   )	rW   rX   rY   rŸ   r    rD   r\   r]   rZ   rk   rl   rm   rn   ro   rp   rq   rr   ru   ry   r|   )r~   rD   r   rH   rI   rJ   r   rL   rK   r}   rW   r€   r�   r‚   rZ   rX   rƒ   r   r£   rY   r\   r   r…   r   r†   r‡   rˆ   r‰   r9   )rŸ   r    r*   r-   r   r   rŒ   rD   r�   r]   rW   rZ   rX   r?   rY   r@   s                   r   r£   r£     sB  € ð bÜ!5Ñ!?¸Ñ!?ˆà!×)Ñ)ÒV¨V¯Z©ZÐ8IÈ3Ó-OÒVÐSVˆð ÐÜ˜7¤E§M¡MÔ2Ü&Ð':Ó;¸uÑDà")§,¡,Ò"5°#ˆLØ"‰GØÐ ¬°G¼U¿]¹]Ô)KÜ˜G“n‰GØˆ_ØˆGà!Ÿ:™:Ð&>ÀÓFÈ$ÐNˆ	ð  (Ó*ð  ×(Ñ(ò /Ü×#Ñ#ò/ä—9‘9Ð.Ó/ò/ô —9‘9Ð.Ó/ò/ð /ð ð  ×,Ñ,ò Ü×'Ñ'òä—9‘9Ð2°DÓ9òð ð	 ð  ×'Ñ'ò /Ü—?‘?ò/ä×%Ñ%ò/ô —9‘9Ð-Ó.ð	 ô 8×MÑMØ!ØØ+×7Ñ7Ø)ØØØØ+×7Ñ7Ø#Ø—z‘z (¨DÓ1ð Nó ˆHðh ˆðO ! GÒ+Ø&×/Ñ/Òg´7×3CÑ3CÒgÄ~ÐVfÓGgˆHà)×5Ñ5Òs¼×9LÑ9LÒsÔP^Ð_rÓPsˆKð  ×'Ñ'ò 3Ü—?‘?ò3ä×$Ñ$ò3ô "Ð"8Ó9ò3ô " /Ó2ð ð )×,Ñ,¨\¸2Ó>ˆJØÐ%Ø—‘Ð/°Ô6ä6×LÑLØ!ØØ'ØØØØ+×7Ñ7Ø#Ø,×9Ñ9ð Mó 
ˆHð, ˆô ×$Ñ$×4Ñ4Ø2Ð3FÐ2GÐGwÐxØØ0ÜŸ™Ø #Ø2Ü!ŸM™M°ÐFjÔkôð	 5ó 	ð 	øô ò Øˆûðús&   ‚GL Ç	C>L ËAL Ì	L*Ì#L%Ì%L*c              ‹   óf  K  — 	 t        j                  «       }d|d<   t        t        | |||fi |¤Ž}t	        j
                  «       }t        |j                  |«      }|j                  d|«      ƒ d{  –—† }	t        j                  |	«      r|	ƒ d{  –—† }
|
S |	}
|
S 7 Œ)7 Œ# t        $ r}|‚d}~ww xY w­w)z2
    Async: Get info about a fine-tuning job.
    TÚaretrieve_fine_tuning_jobN)
r1   r2   r   Úretrieve_fine_tuning_jobr4   r5   r6   r7   r8   r9   r—   s               r   r¦   r¦   €  sÉ   è ø€ ðÜ×,Ñ,Ó.ˆØ.2ˆÐ*Ñ+ô Ü$ØØØØñ
ð ñ
ˆô !×-Ñ-Ó/ˆÜ#*¨3¯7©7°DÓ#9ÐØ%)×%9Ñ%9¸$Ð@QÓ%R×RˆÜ×Ñ˜}Ô-Ø*×*ˆHð ˆð %ˆHØˆð  Søà*ùô ò Øˆûðür˜   c                 óV  — 	 t        d"i |¤Ž}|j                  xs |j                  dd«      xs d}|�:t        |t        j
                  «      r t        |«      du r|j                  xs d}|}n,|�&t        |t        j
                  «      st        |«      }n|€d}|j                  dd«      du }|dk(  �r|j                  xsB t        j                  xs0 t        j                  d	«      xs t        j                  d
«      xs d}	|j                  xs, t        j                  xs t        j                  dd«      xs d}
|j                  xs9 t        j                  xs' t        j                   xs t        j                  d«      }t"        j%                  |	||j&                  |
| ||j(                  ||j                  dd«      ¬«	      }|S |dk(  rù|j                  xs t        j                  xs t+        d«      }	|j&                  xs t        j&                  xs t+        d«      }|j                  xs< t        j                  xs* t        j,                  xs t+        d«      xs t+        d«      }|j                  di «      }|�|j                  dd«       t.        j%                  |	||| ||j(                  ||j                  ¬«      }|S t        j0                  j3                  d|› d�d|t	        j4                  ddt	        j6                  dd¬«      ¬ «      ¬!«      ‚# t8        $ r}|‚d}~ww xY w)#z+
    Get info about a fine-tuning job.
    rP   rG   NFrF   r¦   Tr"   rQ   rR   rS   rT   rU   r   rš   r+   r^   r_   r`   ra   r   rb   r›   rk   zI for 'retrieve_fine_tuning_job'. Only 'openai' and 'azure' are supported.rm   rn   ro   r§   rq   rr   ru   ry   r|   )r~   rD   r   rH   rI   rJ   r   rL   rK   r}   rW   r€   r�   r‚   rZ   rX   rƒ   r   r§   rY   r\   r   r…   r   r†   r‡   rˆ   r‰   r9   rœ   s                  r   r§   r§   ¦  s.  € ðYÜ!5Ñ!?¸Ñ!?ˆà!×)Ñ)ÒV¨V¯Z©ZÐ8IÈ3Ó-OÒVÐSVˆð ÐÜ˜7¤E§M¡MÔ2Ü&Ð':Ó;¸uÑDà")§,¡,Ò"5°#ˆLØ"‰GØÐ ¬°G¼U¿]¹]Ô)KÜ˜G“n‰GØˆ_ØˆGà!Ÿ:™:Ð&AÀ5ÓIÈTÐQˆ	ð  (Ó*à×(Ñ(ò /Ü×#Ñ#ò/ä—9‘9Ð.Ó/ò/ô —9‘9Ð.Ó/ò/ð /ð ð  ×,Ñ,Òv´×0DÑ0DÒvÌÏ	É	ÐRgÐimÓHnÒvÐrvð ð &×-Ñ-Òu´·±ÒuÄG×DVÑDVÒuÔZ\×ZcÑZcÐdtÓZuˆGä7×PÑPØ!ØØ+×7Ñ7Ø)Ø#5ØØ+×7Ñ7Ø#Ø—z‘z (¨DÓ1ð Qó 
ˆHðj ˆðS ! GÒ+Ø&×/Ñ/Òg´7×3CÑ3CÒgÄ~ÐVfÓGgˆHà)×5Ñ5Òs¼×9LÑ9LÒsÔP^Ð_rÓPsˆKð  ×'Ñ'ò 3Ü—?‘?ò3ä×$Ñ$ò3ô "Ð"8Ó9ò3ô " /Ó2ð ð )×,Ñ,¨\¸2Ó>ˆJØÐ%Ø—‘Ð/°Ô6ä6×OÑOØ!ØØ'Ø#5ØØ+×7Ñ7Ø#Ø,×9Ñ9ð Pó 	ˆHð0 ˆô ×$Ñ$×4Ñ4Ø2Ð3FÐ2Gð  HQð  RØØ0ÜŸ™Ø #Ø2Ü!ŸM™MØ9Ø@ôôð	 5ó ð øô ò Øˆûðúrž   )r"   NN)NNr"   NN)6Ú__doc__r1   r4   r�   Úcollections.abcr   Ú	functoolsr   Útypingr   r   r   rI   r€   Úlitellm._loggingr   Ú&litellm.llms.azure.fine_tuning.handlerr	   Ú'litellm.llms.openai.fine_tuning.handlerr
   Ú*litellm.llms.vertex_ai.fine_tuning.handlerr   Úlitellm.secret_managers.mainr   Úlitellm.types.llms.openair   r   Úlitellm.types.routerÚlitellm.types.utilsr   Úlitellm.utilsr   r   r   Ú__annotations__r   r   Údictr‹   r    ÚlistÚintr/   rC   rK   rJ   rM   r3   r•   r–   r¢   r£   r¦   r§   r|   r!   r   ú<module>rº      s~  ðòó Û Û 	Ý %Ý ß &Ñ &ã ã Ý +Ý KÝ GÝ JÝ 7ß JÜ "Ý 4ß 8ñ +>Ó*?Ð   %Ó ?Ù)AÓ)CÐ  Ó CÙ*=Ó*?Ð   %Ó ?ð#Ø�S˜#�X‘ Ñ%ð#à��c�‰Nð#ð !% S¨# X¡ð#ð 
ˆ#ˆsˆ(�^ó	#ðL ð $&ØØ"&Ø%)ØØCKØ+/Ø(,ñ0Øð0àð0ð ˜D‘[ð0ð �$‰Jð	0ð
 ˜4‘Zð0ð �s‘)˜dÑ"ð0ð �‰*ð0ð !Ð!?Ñ@ð0ð ˜˜S˜‘> DÑ(ð0ð �S˜#�X‘ Ñ%ð0ð ò0ó ð0òf	ð
Øð
àð
ð ˆU�]‰]Ñó
ð ð $&ØØ"&Ø%)ØØCKØ+/Ø(,ñpØðpàðpð ˜D‘[ðpð �$‰Jð	pð
 ˜4‘Zðpð �s‘)˜dÑ"ðpð �‰*ðpð !Ð!?Ñ@ðpð ˜˜S˜‘> DÑ(ðpð �S˜#�X‘ Ñ%ðpð ˜I c¨3Ð0DÐ&DÑEÑEòpó ðpðf ð DLØ+/Ø(,ñ	"Øð"à Ð!?Ñ@ð"ð ˜˜S˜‘> DÑ(ð"ð �S˜#�X‘ Ñ%ð	"ð ò"ó ð"ðJ ð DLØ+/Ø(,ñ	mØðmà Ð!?Ñ@ðmð ˜˜S˜‘> DÑ(ðmð �S˜#�X‘ Ñ%ð	mð ˜I c¨3Ð0DÐ&DÑEÑEòmó ðmðb ØØCKØ+/Ø(,ñ$Ø�‰:ð$à�‰:ð$ð !Ð!?Ñ@ð$ð ˜˜S˜‘> DÑ(ð	$ð
 �S˜#�X‘ Ñ%ó$ðP ØØCKØ+/Ø(,ñrØ�‰:ðrà�‰:ðrð !Ð!?Ñ@ðrð ˜˜S˜‘> DÑ(ð	rð
 �S˜#�X‘ Ñ%órðj ð DLØ+/Ø(,ñ	"Øð"à Ð!?Ñ@ð"ð ˜˜S˜‘> DÑ(ð"ð �S˜#�X‘ Ñ%ð	"ð ò"ó ð"ðJ ð DLØ+/Ø(,ñ	cØðcà Ð!?Ñ@ðcð ˜˜S˜‘> DÑ(ðcð �S˜#�X‘ Ñ%ð	cð ˜I c¨3Ð0DÐ&DÑEÑEòcó ñcr!   