Ë
    tPêjÔ]  ã                   óÊ  — U d dl Z d dlmZmZ d dlmZmZmZmZm	Z	m
Z
 d dlZd dlmZ d dl­ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ  e«       Zeed<   d dlmZ dad„ Zde fd„Z!ejE                  d ee«      gdgd¬«      ejE                  d ee«      gdgd¬«       ee«      fde	de
dede#fd„«       «       Z$ejK                  d ee«      gdgd¬«      ejK                  d ee«      gdgd¬«      d ee«      fde	de
de de&d   dz  de#f
d„«       «       Z'ejK                  d ee«      gdgd ¬«      ejK                  d ee«      gdgd ¬«      d edd!¬"«      dd ee«      fde	de
de&d   dz  d#e dz  d$e dz  d%e(dz  de#fd&„«       «       Z)ejE                  d' ee«      gdgd(¬«      ejE                  d) ee«      gdgd(¬«       ee«      fde	de
de de#fd*„«       «       Z*y)+é    N)ÚFinalÚcast)Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚRequestÚResponse)Úverbose_proxy_logger)Ú*)Úuser_api_key_auth)ÚProxyBaseLLMRequestProcessing)Ú"_is_base64_encoded_unified_file_idÚvalidate_managed_id_requirement)Úhandle_exception_on_proxy)ÚLiteLLMFineTuningJobÚrouter)ÚLiteLLMFineTuningJobCreatec                 ó  — | €y t        | t        «      st        d«      ‚| D ]f  }t        |t        «      sŒ|j	                  «       D ]@  \  }}t        |t
        «      sŒ|j                  d«      sŒ)t        j                  |«      ||<   ŒB Œh | a	y )Nz9invalid fine_tuning config, expected a list is not a listzos.environ/)
Ú
isinstanceÚlistÚ
ValueErrorÚdictÚitemsÚstrÚ
startswithÚlitellmÚ
get_secretÚfine_tuning_config)ÚconfigÚelementÚkeyÚvalues       úr/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/proxy/fine_tuning_endpoints/endpoints.pyÚset_fine_tuning_configr%       s‡   € Ø€~Øô �fœdÔ#ÜÐTÓUÐUàò =ˆÜ�gœtÕ$Ø%Ÿm™m›oò =‘
��UÜ˜e¤SÕ)¨e×.>Ñ.>¸}Õ.MÜ#*×#5Ñ#5°eÓ#<�G˜C’Lñ=ð=ð  Ñó    Úcustom_llm_providerc                 ól   — t         €t        d«      ‚t         D ]  }|j                  d«      | k(  sŒ|c S  y )Nz?fine_tuning_config is not set, set it on your config.yaml file.r'   )r   r   Úget)r'   Úsettings     r$   Úget_fine_tuning_provider_configr+   2   sB   € ô Ð!ÜÐZÓ[Ð[Ü%ò ˆØ�;‰;Ð,Ó-Ð1DÓDØŠNðð r&   z/v1/fine_tuning/jobszfine-tuningu'   âœ¨ (Enterprise) Create Fine-Tuning Job)ÚdependenciesÚtagsÚsummaryz/fine_tuning/jobsÚrequestÚfastapi_responseÚfine_tuning_requestÚuser_api_key_dictc              ƒ   óV  K  — ddl m}m}m}m}m}m}	 |j                  d¬«      }
	 |dur&t        dt        j                  j                  › �«      ‚t        j                  dt        j                  |
d¬«      «       t!        |
¬	«      }|j#                  | |||	||d
¬«      ƒ d{  –—† \  }
}d}|j$                  }t'        |d||j)                  d«      ¬«      ƒ d{  –—†  t'        |j*                  d||j)                  d«      ¬«      ƒ d{  –—†  d}|rt-        |«      }|rQ	 |€t/        dddi¬«      ‚t1        t2         |j4                  d%i |
¤Žƒ d{  –—† «      }||_        ||j6                  d<   nR|j8                  rFt;        |j8                  ¬«      }|�|
j=                  |«       t?        j4                  d%i |
¤Žƒ d{  –—† }|€t        d«      ‚|jA                  |
||¬«      ƒ d{  –—† }|�tC        |t2        «      r|}tE        jF                  |jI                  |
jK                  dd«      d¬«      «       tM        |di «      xs i }|jK                  dd«      xs d}|jK                  dd«      xs d}|jK                  d d«      xs d}|jN                  j=                  t!        jP                  |||||	tM        |d!d«      ¬"«      «       |S 7 �Œ'7 �Œó7 �ŒÆ7 �Œ‚7 �Œ7 Œñ# tR        $ rC}|jU                  |||
¬#«      ƒ d{  –—†7   t        jV                  d$|«       tY        |«      ‚d}~ww xY w­w)&ad  
    Creates a fine-tuning job which begins the process of creating a new model from a given dataset.
    This is the equivalent of POST https://api.openai.com/v1/fine_tuning/jobs

    Supports Identical Params as: https://platform.openai.com/docs/api-reference/fine-tuning/create

    Example Curl:
    ```
    curl http://localhost:4000/v1/fine_tuning/jobs       -H "Content-Type: application/json"       -H "Authorization: Bearer sk-1234"       -d '{
        "model": "gpt-3.5-turbo",
        "training_file": "file-abc123",
        "hyperparameters": {
          "n_epochs": 4
        }
      }'
    ```
    r   ©Úgeneral_settingsÚ
llm_routerÚpremium_userÚproxy_configÚproxy_logging_objÚversionT)Úexclude_noneú+Only premium users can use this endpoint + zRequest received by LiteLLM:
%sé   )Úindent©ÚdataÚacreate_fine_tuning_job©r/   r5   r2   r:   r9   r8   Ú
route_typeNFÚfileÚmanaged_files©Úresource_idÚresource_kindr2   Úmanaged_files_objéô  Úerrorú9LLM Router not initialized. Ensure models added to proxy.©Ústatus_codeÚdetailÚunified_file_id©r'   úLInvalid request, No litellm managed file id or custom_llm_provider provided.©r@   r2   ÚresponseÚlitellm_call_idÚ Úsuccess©rU   ÚstatusÚ_hidden_paramsÚmodel_idÚ	cache_keyÚapi_baseÚallowed_model_region©r2   r[   r\   r]   r:   Úmodel_region©r2   Úoriginal_exceptionÚrequest_datazLlitellm.proxy.proxy_server.create_fine_tuning_job(): Exception occurred - %s© )-Úlitellm.proxy.proxy_serverr5   r6   r7   r8   r9   r:   Ú
model_dumpr   ÚCommonProxyErrorsÚnot_premium_userr#   r   ÚdebugÚjsonÚdumpsr   Ú common_processing_pre_call_logicÚtraining_filer   Úget_proxy_hookÚvalidation_filer   r   r   r   rA   rZ   r'   r+   Úupdater   Úpost_call_success_hookr   ÚasyncioÚcreate_taskÚupdate_request_statusr)   ÚgetattrÚheadersÚget_custom_headersÚ	ExceptionÚpost_call_failure_hookÚ	exceptionr   )r/   r0   r1   r2   r5   r6   r7   r8   r9   r:   r@   Úbase_llm_response_processorÚlitellm_logging_objrP   rm   rT   Úllm_provider_configÚ	_responseÚhidden_paramsr[   r\   r]   Úes                          r$   Úcreate_fine_tuning_jobr�   >   s�  è ø€ ÷L÷ ð ×)Ñ)°tÐ)Ó<€Dðm+Ø˜tÑ#ÜÐJÔK\×KmÑKm×KsÑKsÐJtÐuÓvÐvô 	×"Ñ"Ø.Ü�J‰J�t AˆJÓ&ô	
ô .KÐPTÔ-UÐ#ð .×NÑNØØ-Ø/ØØ/Ø%Ø0ð Oó 
÷ 
ñ	
ØØð 16ˆØ2×@Ñ@ˆÜ-Ø%Ø Ø/Ø/×>Ñ>¸ÓOô	
÷ 	
ð 	
ô .Ø+×;Ñ;Ø Ø/Ø/×>Ñ>¸ÓOô	
÷ 	
ð 	
ð 15ˆÙÜ@ÀÓOˆOáØØÐ!Ü#Ø #Ø#Ð%`Ðaôð ô
 Ô0Ð8Z¸
×8ZÑ8ZÑ8bÐ]aÑ8b×2bÓcˆHØ%4ˆHÔ"Ø9HˆH×#Ñ#Ð$5Ò6à ×4Ò4ä)HØ$7×$KÑ$Kô*Ðð #Ð.Ø—‘Ð/Ô0ä$×<Ñ<ÑD¸tÑD×DˆHàÐÜÐkÓlÐlð "3×!IÑ!IØØ/Øð "Jó "
÷ 
ˆ	ð
 Ð ¤Z°	Ô;OÔ%PØ ˆHô 	×ÑØ×3Ñ3ÀDÇHÁHÐM^Ð`bÓDcÐluÐ3Óvô	
ô
  ' xÐ1AÀ2ÓFÒLÈ"ˆØ'×+Ñ+¨J¸Ó=ÒCÀˆØ(×,Ñ,¨[¸$Ó?ÒEÀ2ˆ	Ø'×+Ñ+¨J¸Ó=ÒCÀˆà× Ñ ×'Ñ'Ü)×<Ñ<Ø"3Ø!Ø#Ø!ØÜ$Ð%6Ð8NÐPRÓSôô		
ð ˆðm
ùð	
ùð	
ùð$ 3cùð Eùð
ùô> ò +Ø×6Ñ6Ø/ÀAÐTXð 7ó 
÷ 	
ñ 	
ô 	×&Ñ&ØZÐ\]ô	
ô (¨Ó*Ð*ûð+üs¤   ‚#L)¦A<K Â"K	Â#6K ÃKÃ/K Ä	KÄ
AK ÅK
ÅA,K Æ=KÆ>(K Ç&KÇ'C!K ËL)Ë	K ËK ËK ËK ËK ËK Ë	L&Ë#L!Ë:K=Ë;&L!Ì!L&Ì&L)z./v1/fine_tuning/jobs/{fine_tuning_job_id:path}u)   âœ¨ (Enterprise) Retrieve Fine-Tuning Jobz+/fine_tuning/jobs/{fine_tuning_job_id:path}Úfine_tuning_job_id)ÚopenaiÚazurec              ƒ   óì  K  — ddl m}m}m}m}m}	m}
 d|i}	 |dur&t        dt        j                  j                  › �«      ‚t        |d||	j                  d«      ¬«      ƒ d	{  –—†  t        |¬
«      }|j                  | |||
|	|t        j                   j                  ¬«      ƒ d	{  –—† \  }}	 | j#                  «       ƒ d	{  –—† }|j'                  dd	«      xs |}d}d	}|rt)        |«      }|rI|€t+        dddi¬«      ‚t-        t.         |j                   d#i |¤Žƒ d	{  –—† «      }||j0                  d<   n>|r<t3        |¬«      }|�|j5                  |«       t7        j                   d#i |¤Žƒ d	{  –—† }|€t+        dd¬«      ‚|	j9                  |||¬«      ƒ d	{  –—† }|�t;        |t.        «      r|}t=        j>                  |	jA                  |j'                  dd«      d¬«      «       tC        |di «      xs i }|j'                  dd	«      xs d}|j'                  dd	«      xs d}|j'                  dd	«      xs d}|jD                  j5                  t        jF                  |||||
tC        |dd«      ¬ «      «       |S 7 �Œ7 �ŒÝ7 �ŒÄ# t$        $ r i }Y �ŒÐw xY w7 �Œ{7 �Œ,7 �Œ# t$        $ rC}|	jI                  |||¬!«      ƒ d	{  –—†7   tK        jL                  d"|«       tO        |«      ‚d	}~ww xY w­w)$a&  
    Retrieves a fine-tuning job.
    This is the equivalent of GET https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}

    Supported Query Params:
    - `custom_llm_provider`: Name of the LiteLLM provider
    - `fine_tuning_job_id`: The ID of the fine-tuning job to retrieve.
    r   r4   r‚   Tr<   úfine-tuning jobrE   rF   Nr?   rB   r'   FrJ   rK   rL   rM   Úunified_finetuning_job_idrQ   é�  rR   rS   rU   rV   rW   rX   rZ   r[   r\   r]   r^   r_   ra   zNlitellm.proxy.proxy_server.retrieve_fine_tuning_job(): Exception occurred - %srd   )(re   r5   r6   r7   r8   r9   r:   r   rg   rh   r#   r   rn   r   rl   Ú	CallTypesÚaretrieve_fine_tuning_jobrj   rx   r)   r   r   r   r   rZ   r+   rp   r   rq   r   rr   rs   rt   ru   rv   rw   ry   r   rz   r   )r/   r0   r‚   r'   r2   r5   r6   r7   r8   r9   r:   r@   r{   r|   Úrequest_bodyr‡   rT   r}   r~   r   r[   r\   r]   r€   s                           r$   Úretrieve_fine_tuning_jobrŒ   Þ   su  è ø€ ÷6÷ ð 'Ð(:Ð;€Dðj+Ø˜tÑ#ÜÐJÔK\×KmÑKm×KsÑKsÐJtÐuÓvÐvÜ-Ø*Ø+Ø/Ø/×>Ñ>¸ÓOô	
÷ 	
ð 	
ô .KÐPTÔ-UÐ#ð .×NÑNØØ-Ø/ØØ/Ø%Ü ×:Ñ:×@Ñ@ð Oó 
÷ 
ñ	
ØØð	Ø!(§¡£×/ˆLð +×.Ñ.Ð/DÀdÓKÒbÐObÐð ;@Ð!Ø04ˆÙÜ(JÐK]Ó(^Ð%Ù$ØÐ!Ü#Ø #Ø#Ð%`Ðaôð ô Ü$Ø:�j×:Ñ:ñ Øñ÷ óˆHð D]ˆH×#Ñ#Ð$?Ò@Ù ä)HÐ]pÔ)qÐà"Ð.Ø—‘Ð/Ô0ä$×>Ñ>ñ Øñ÷ ˆHð ÐÜØØeôð ð "3×!IÑ!IØØ/Øð "Jó "
÷ 
ˆ	ð
 Ð ¤Z°	Ô;OÔ%PØ ˆHô 	×ÑØ×3Ñ3ÀDÇHÁHÐM^Ð`bÓDcÐluÐ3Óvô	
ô
  ' xÐ1AÀ2ÓFÒLÈ"ˆØ'×+Ñ+¨J¸Ó=ÒCÀˆØ(×,Ñ,¨[¸$Ó?ÒEÀ2ˆ	Ø'×+Ñ+¨J¸Ó=ÒCÀˆà× Ñ ×'Ñ'Ü)×<Ñ<Ø"3Ø!Ø#Ø!ØÜ$Ð%6Ð8NÐPRÓSôô		
ð ˆð}	
ùð
ùð 0úÜò 	Ø‹Lð	úð$ùðùð
úô@ ò +Ø×6Ñ6Ø/ÀAÐTXð 7ó 
÷ 	
ñ 	
ô 	×&Ñ&Ø\Ð^_ô	
ô (¨Ó*Ð*ûð+üsÃ   ‚K4˜AJ% Á#JÁ$AJ% Â'JÂ(J% Â0J
 ÃJÃJ
 ÃAJ% Ä!J
Ä"AJ% Å3JÅ4*J% ÆJ"ÆC!J% Ê K4ÊJ% ÊJ% ÊJ
 Ê
JÊJ% ÊJÊJ% ÊJ% Ê"J% Ê%	K1Ê.K,ËKË&K,Ë,K1Ë1K4u&   âœ¨ (Enterprise) List Fine-Tuning JobszOComma separated list of model names to filter by. Example: 'gpt-4o,gpt-4o-mini')ÚdefaultÚdescriptionÚtarget_model_namesÚafterÚlimitc              ƒ   óz  K  — ddl m}m}m}	m}
m}m} i }	 |	dur&t        dt        j                  j                  › �«      ‚t        |¬«      }|j                  | |||||
t        j                  j                  ¬«      ƒ d{  –—† \  }}d}|rtt        |t         «      rd|j#                  d«      }t%        |«      d	k7  rt'        d
d¬«      ‚|€t'        dd¬«      ‚|d   |d<    |j                  di |¤||dœ¤Žƒ d{  –—† }|S |rAt)        |¬«      }|�|j+                  |«       t-        j                  di |¤||dœ¤Žƒ d{  –—† }|€t'        d
d¬«      ‚t/        |di «      xs i }|j1                  dd«      xs d}|j1                  dd«      xs d}|j1                  dd«      xs d}|j2                  j+                  t        j4                  |||||t/        |dd«      ¬«      «       |S 7 �Œf7 Œï7 Œ¬# t6        $ rC}|j9                  |||¬«      ƒ d{  –—†7   t;        j<                  d|«       t?        |«      ‚d}~ww xY w­w)ar  
    Lists fine-tuning jobs for the organization.
    This is the equivalent of GET https://api.openai.com/v1/fine_tuning/jobs

    Supported Query Params:
    - `custom_llm_provider`: Name of the LiteLLM provider
    - `after`: Identifier for the last job from the previous pagination request.
    - `limit`: Number of fine-tuning jobs to retrieve (default is 20).
    r   r4   Tr<   r?   rB   Nú,é   rˆ   zatarget_model_names on list fine-tuning jobs must be a list of one model name. Example: ['gpt-4o']rM   rJ   rL   Úmodel)r�   r‘   rQ   rR   rZ   r[   rV   r\   r]   r^   r_   ra   zKlitellm.proxy.proxy_server.list_fine_tuning_jobs(): Exception occurred - %srd   ) re   r5   r6   r7   r8   r9   r:   r   rg   rh   r#   r   rl   r‰   Úalist_fine_tuning_jobsr   r   ÚsplitÚlenr   r+   rp   r   ru   r)   rv   rw   rx   ry   r   rz   r   )r/   r0   r'   r�   r�   r‘   r2   r5   r6   r7   r8   r9   r:   r@   r{   r|   rT   Útarget_model_names_listr}   r   r[   r\   r]   r€   s                           r$   Úlist_fine_tuning_jobsrš   p  sª  è ø€ ÷B÷ ð €DðQ+Ø˜tÑ#ÜÐJÔK\×KmÑKm×KsÑKsÐJtÐuÓvÐvä-JÐPTÔ-UÐ#ð .×NÑNØØ-Ø/ØØ/Ø%Ü ×7Ñ7×=Ñ=ð Oó 
÷ 
ñ	
ØØð  $ˆÙ¤*Ð-?ÄÔ"EØ-?×-EÑ-EÀcÓ-JÐ#ÜÐ*Ó+¨qÒ0Ü#Ø #Ø~ôð ð
 Ð!Ü#Ø #ØVôð ð 4°AÑ6ˆD�‰MØ>˜Z×>Ñ>ñ ØðàØó÷ ˆHð
 ˆOÙ ä)HÐ]pÔ)qÐà"Ð.Ø—‘Ð/Ô0ä$×;Ñ;ñ ØðàØó÷ ˆHð
 ÐÜØØeôð ô  ' xÐ1AÀ2ÓFÒLÈ"ˆØ'×+Ñ+¨J¸Ó=ÒCÀˆØ(×,Ñ,¨[¸$Ó?ÒEÀ2ˆ	Ø'×+Ñ+¨J¸Ó=ÒCÀˆà× Ñ ×'Ñ'Ü)×<Ñ<Ø"3Ø!Ø#Ø!ØÜ$Ð%6Ð8NÐPRÓSôô		
ð ˆðE
ùð2øðùô< ò +Ø×6Ñ6Ø/ÀAÐTXð 7ó 
÷ 	
ñ 	
ô 	×&Ñ&Ð'tÐvwÔxÜ'¨Ó*Ð*ûð+üsy   ‚H;–A)G, Á?G%Â A8G, Ã8G(Ã9G, Ã>H;Ã?>G, Ä=G*Ä>B&G, Ç$H;Ç%G, Ç(G, Ç*G, Ç,	H8Ç5H3ÈHÈ&H3È3H8È8H;z5/v1/fine_tuning/jobs/{fine_tuning_job_id:path}/cancelu(   âœ¨ (Enterprise) Cancel Fine-Tuning Jobsz2/fine_tuning/jobs/{fine_tuning_job_id:path}/cancelc              ƒ   óà  K  — ddl m}m}m}m}m}m}	 d|i}
	 |dur&t        dt        j                  j                  › �«      ‚t        |d||j                  d«      ¬«      ƒ d	{  –—†  t        |
¬
«      }|j                  | |||	||t        j                   j                  ¬«      ƒ d	{  –—† \  }
}	 | j#                  «       ƒ d	{  –—† }|j'                  dd	«      }d}d	}|rt)        |«      }|rI|€t+        dddi¬«      ‚t-        t.         |j                   d#i |
¤Žƒ d	{  –—† «      }||j0                  d<   n<t3        |¬«      }|�|
j5                  |«       t7        j                   d#i |
¤Žƒ d	{  –—† }|€t+        dd¬«      ‚|j9                  |
||¬«      ƒ d	{  –—† }|�t;        |t.        «      r|}t=        j>                  |jA                  |
j'                  dd«      d¬«      «       tC        |di «      xs i }|j'                  dd	«      xs d}|j'                  dd	«      xs d}|j'                  dd	«      xs d}|jD                  j5                  t        jF                  |||||	tC        |dd«      ¬ «      «       |S 7 �Œ7 �Œ×7 �Œ¾# t$        $ r i }Y �ŒÊw xY w7 �Œy7 �Œ,7 �Œ# t$        $ rC}|jI                  |||
¬!«      ƒ d	{  –—†7   tK        jL                  d"|«       tO        |«      ‚d	}~ww xY w­w)$a*  
    Cancel a fine-tuning job.

    This is the equivalent of POST https://api.openai.com/v1/fine_tuning/jobs/{fine_tuning_job_id}/cancel

    Supported Query Params:
    - `custom_llm_provider`: Name of the LiteLLM provider
    - `fine_tuning_job_id`: The ID of the fine-tuning job to cancel.
    r   r4   r‚   Tr<   r†   rE   rF   Nr?   rB   r'   FrJ   rK   rL   rM   r‡   rQ   rˆ   rR   rS   rU   rV   rW   rX   rZ   r[   r\   r]   r^   r_   ra   zLlitellm.proxy.proxy_server.cancel_fine_tuning_job(): Exception occurred - %srd   )(re   r5   r6   r7   r8   r9   r:   r   rg   rh   r#   r   rn   r   rl   r‰   Úacancel_fine_tuning_jobrj   rx   r)   r   r   r   r   rZ   r+   rp   r   rq   r   rr   rs   rt   ru   rv   rw   ry   r   rz   r   )r/   r0   r‚   r2   r5   r6   r7   r8   r9   r:   r@   r{   r|   r‹   r'   r‡   rT   r}   r~   r   r[   r\   r]   r€   s                           r$   Úcancel_fine_tuning_jobr�   ï  so  è ø€ ÷6÷ ð 'Ð(:Ð;€Dðj+Ø˜tÑ#ÜÐJÔK\×KmÑKm×KsÑKsÐJtÐuÓvÐvÜ-Ø*Ø+Ø/Ø/×>Ñ>¸ÓOô	
÷ 	
ð 	
ô .KÐPTÔ-UÐ#ð .×NÑNØØ-Ø/ØØ/Ø%Ü ×8Ñ8×>Ñ>ð Oó 
÷ 
ñ	
ØØð	Ø!(§¡£×/ˆLð &2×%5Ñ%5Ð6KÈTÓ%RÐð ;@Ð!Ø04ˆÙÜ(JÐK]Ó(^Ð%Ù$ØÐ!Ü#Ø #Ø#Ð%`Ðaôð ô Ü$Ø8�j×8Ñ8ñ Øñ÷ óˆHð D]ˆH×#Ñ#Ð$?Ò@ô *IÐ]pÔ)qÐà"Ð.Ø—‘Ð/Ô0ä$×<Ñ<ñ Øñ÷ ˆHð ÐÜØØeôð ð "3×!IÑ!IØØ/Øð "Jó "
÷ 
ˆ	ð
 Ð ¤Z°	Ô;OÔ%PØ ˆHô 	×ÑØ×3Ñ3ÀDÇHÁHÐM^Ð`bÓDcÐluÐ3Óvô	
ô
  ' xÐ1AÀ2ÓFÒLÈ"ˆØ'×+Ñ+¨J¸Ó=ÒCÀˆØ(×,Ñ,¨[¸$Ó?ÒEÀ2ˆ	Ø'×+Ñ+¨J¸Ó=ÒCÀˆà× Ñ ×'Ñ'Ü)×<Ñ<Ø"3Ø!Ø#Ø!ØÜ$Ð%6Ð8NÐPRÓSôô		
ð ˆð}	
ùð
ùð 0úÜò 	Ø‹Lð	úð$ùðùð
úô@ ò +Ø×6Ñ6Ø/ÀAÐTXð 7ó 
÷ 	
ñ 	
ô 	×&Ñ&ØZÐ\]ô	
ô (¨Ó*Ð*ûð+üsÃ   ‚K.˜AJ Á#I;Á$AJ Â'I>Â(J Â0J ÃJÃJ ÃAJ ÄJ
ÄAJ Å-JÅ.*J ÆJÆC!J É:K.É;J É>J ÊJ ÊJÊJ ÊJÊJ ÊJ ÊJ Ê	K+Ê(K&Ê?KË &K&Ë&K+Ë+K.)+rr   Útypingr   r   Úfastapir   r   r   r   r	   r
   r   Úlitellm._loggingr   Úlitellm.proxy._typesÚ$litellm.proxy.auth.user_api_key_authr   Ú'litellm.proxy.common_request_processingr   Ú1litellm.proxy.openai_files_endpoints.common_utilsr   r   Úlitellm.proxy.utilsr   Úlitellm.types.utilsr   r   Ú__annotations__Úlitellm.types.llms.openair   r   r%   r   r+   ÚpostÚUserAPIKeyAuthr�   r)   ÚLiteralrŒ   Úintrš   r�   rd   r&   r$   ú<module>r­      s9  ðô ß ç O× Oã Ý 1Ü "Ý BÝ Q÷õ :Ý 4á“€ˆÓ å @àÐ ò ð$	Øó	ð ‡�ØÙÐ+Ó,Ð-Ø
ˆØ5ð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø
ˆØ5ð	 ó ñ )0Ð0AÓ(Bñ	Q+ØðQ+àðQ+ð 4ðQ+ð &ò	Q+óóðQ+ðh ‡�Ø4ÙÐ+Ó,Ð-Ø
ˆØ7ð	 ó ð ‡�Ø1ÙÐ+Ó,Ð-Ø
ˆØ7ð	 ó ð >BÙ(/Ð0AÓ(BñC+ØðC+àðC+ð ðC+ð !Ð!2Ñ3°dÑ:ð	C+ð
 &òC+óóðC+ðL ‡�ØÙÐ+Ó,Ð-Ø
ˆØ4ð	 ó ð ‡�ØÙÐ+Ó,Ð-Ø
ˆØ4ð	 ó ð >BÙ%*ØØeô&ð ØÙ(/Ð0AÓ(Bñp+Øðp+àðp+ð !Ð!2Ñ3°dÑ:ðp+ð ˜d™
ð	p+ð �‰:ðp+ð �‰:ðp+ð &òp+óóðp+ðf ‡�Ø;ÙÐ+Ó,Ð-Ø
ˆØ6ð	 ó ð ‡�Ø8ÙÐ+Ó,Ð-Ø
ˆØ6ð	 ó ñ )0Ð0AÓ(Bñ	C+ØðC+àðC+ð ðC+ð &ò	C+óóñC+r&   