
    gl                        d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	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mZmZ ddlm Z  ddl!m"Z"m#Z#m$Z$ ddl%m&Z&  e       Z' e       Z( ed      Z)e"	 	 	 	 d(de
d   de
d   de*de
d   dee	e*e*f      dee	e*e*f      dee	e*e*f      defd       Z+e"	 	 	 	 d(de
d   de
d   de*de
d   dee	e*e*f      dee	e*e*f      dee	e*e*f      deeeeeef   f   fd       Z,	 	 	 	 d(de*de
d   dee	e*e*f      dee	e*e*f      dee	e*e*f      defdZ-	 	 	 	 d(de*de
d   dee	e*e*f      dee	e*e*f      dee	e*e*f      deeeeeef   f   fd Z.	 	 	 	 	 	 d)d!ee*   d"ee/   de
d#   dee	e*e*f      dee	e*e*f      dee	e*e*f      fd$Z0	 	 	 	 	 d*d!ee*   d"ee/   de
d#   dee	e*e*f      dee	e*e*f      f
d%Z1	 	 	 	 d(de*de
d#   dee	e*e*f      dee	e*e*f      dee	e*e*f      defd&Z2	 	 	 	 d(de*de
d#   dee	e*e*f      dee	e*e*f      dee	e*e*f      deeeeeef   f   fd'Z3y)+z
Main File for Batches API implementation

https://platform.openai.com/docs/api-reference/batch

- create_batch()
- retrieve_batch()
- cancel_batch()
- list_batch()

    N)partial)Any	CoroutineDictLiteralOptionalUnion)Logging)AzureBatchesAPI)OpenAIBatchesAPI)VertexAIBatchPrediction)get_secret_str)BatchCancelBatchRequestCreateBatchRequestRetrieveBatchRequest)GenericLiteLLMParams)clientget_litellm_paramssupports_httpx_timeout   )batches_async_logging )gcs_bucket_namecompletion_window24hendpoint)z/v1/chat/completionsz/v1/embeddingsz/v1/completionsinput_file_idcustom_llm_provider)openaiazure	vertex_aimetadataextra_headers
extra_bodyreturnc           
        K   	 t        j                         }d|d<   t        t        | ||||||fi |}	t	        j
                         }
t        |
j                  |	      }|j                  d|       d{   }t        j                  |      r| d{   }n|}|<t        j                  t        d|j                  dd      |j                  |d|       |S 7 f7 I# t        $ r}|d}~ww xY ww)z
    Async: Creates and executes a batch from an uploaded file of request

    LiteLLM Equivalent of POST: https://api.openai.com/v1/batches
    Tacreate_batchNlitellm_logging_obj)logging_objbatch_idr    )asyncioget_event_loopr   create_batchcontextvarscopy_contextrunrun_in_executoriscoroutinecreate_taskr   getid	Exception)r   r   r   r   r#   r$   r%   kwargsloopfuncctxfunc_with_contextinit_responseresponsees                  I/var/www/openai/venv/lib/python3.12/site-packages/litellm/batches/main.pyr(   r(   -   s     (%%'"& 

 

 &&(#CGGT2"2249JKK}-**H$H %  &

+@$ G%[[(; 	 % L +   sN   C1A/C 3C4C CAC C1C C 	C.'C))C..C1c                 l   	 t        d-i |}|j                  dd      du }	|j                  dd      }
|j                  xs |j                  dd      xs d}t	        ||j                  dd      |j                  d	      |j                  d
            }|
j                  dd|j                         ||       |:t        |t        j                        r t        |      du r|j                  xs d}|}n,|&t        |t        j                        st        |      }n|d}t        | |||||      }d}|dk(  r|j                  xs+ t        j                  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.                  |	      }|S |dk(  r|j                  xs t        j                  xs t1        d      }|j2                  xs t        j2                  xs t1        d      }|j&                  xs< t        j&                  xs* t        j4                  xs t1        d      xs t1        d      }|j                  di       }||j                  dd       nt1        d       t6        j-                  |	|||||j.                  |      }|S |dk(  r|j                  xs d}|j8                  xs t        j8                  xs t1        d       }|j:                  xs t        j:                  xs t1        d!      }|j<                  xs t1        d"      }t>        j-                  |	||||||j.                  |#      }|S t        j@                  jC                  d$jE                  |      d%|t        jF                  d&d't        jH                  d(d)*      +      ,      # tJ        $ r}|d}~ww xY w).z
    Creates and executes a batch from an uploaded file of request

    LiteLLM Equivalent of POST: https://api.openai.com/v1/batches
    r(   FTr)   Nrequest_timeoutX  litellm_call_idlitellm_trace_idlitellm_metadata)r   rE   rF   rG   )modeluseroptional_paramslitellm_paramsr        @)r   r   r   r#   r$   r%   r    OPENAI_API_BASEhttps://api.openai.com/v1OPENAI_ORGANIZATIONOPENAI_API_KEY)api_baseapi_keyorganizationcreate_batch_datatimeoutmax_retries	_is_asyncr!   AZURE_API_BASEAZURE_API_VERSIONAZURE_OPENAI_API_KEYAZURE_API_KEYr%   azure_ad_tokenAZURE_AD_TOKEN)rW   rQ   rR   api_versionrU   rV   rT   r"   r   VERTEXAI_PROJECTVERTEXAI_LOCATIONVERTEXAI_CREDENTIALS)rW   rQ   vertex_projectvertex_locationvertex_credentialsrU   rV   rT   zALiteLLM doesn't support custom_llm_provider={} for 'create_batch'n/a  Unsupported providercreate_thread"https://github.com/BerriAI/litellmmethodurlstatus_codecontentrequestmessagerH   llm_providerr?   r,   )&r   popr6   rU   r   update_environment_variables
model_dump
isinstancehttpxTimeoutr   readfloatr   rQ   litellmosgetenvrS   rR   
openai_keyopenai_batches_instancer/   rV   r   r^   	azure_keyazure_batches_instancerb   rc   rd   vertex_ai_batches_instance
exceptionsBadRequestErrorformatResponseRequestr8   )r   r   r   r   r#   r$   r%   r9   rJ   rW   r)   rU   rK   read_timeout_create_batch_requestrQ   rS   rR   r?   r^   vertex_ai_projectvertex_ai_locationrd   r@   s                           rA   r/   r/   h   s    U.88JJ6$>	17<QSW1X!))VVZZ8I3-OVSV+ 3"JJ'8$?#ZZ(:;#ZZ(:;	
 	88+668) 3 	9 	
 7EMM2&':;uD"<<.3L"G GU]])KGnG_G 2/''!!
 #'(*  (( /##/99.// /	   ,, ''992D9 	   '' /??/%%/ 99-.	  /;;!)"7+77# < Hf U !G+(( 4##4!"23   ++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-::#!'+77"7 ; H` O !K/&//52H.. 6))6!"45   // 7**7!"56 
 "1!C!C "~&H 2>>#!0 2#5+77"7 ? 	H.  $$44[bb' 0 #2!MMFjk 5    s-   HP# C>P# B,P# AP# #	P3,P..P3r+   c                 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)zo
    Async: Retrieves a batch.

    LiteLLM Equivalent of GET https://api.openai.com/v1/batches/{batch_id}
    Taretrieve_batchN)
r-   r.   r   retrieve_batchr0   r1   r2   r3   r4   r8   r+   r   r#   r$   r%   r9   r:   r;   r<   r=   r>   r?   r@   s                rA   r   r     s     %%'$( ! 
 
 &&(#CGGT2"2249JKK}-**H  %H L*
  Y   B2A-B 1B2B BB B2B B2B B 	B/(B**B//B2c                    	 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}t        | ||      }	|j                  dd      du }
d}|d	k(  r|j                  xs+ t        j                  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(                        }|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       nt+        d       t0        j'                  |
|||||j(                  |	      }|S |dk(  r|j                  xs d}|j2                  xs t        j2                  xs t+        d      }|j4                  xs t        j4                  xs t+        d      }|j6                  xs t+        d      }t8        j'                  |
| ||||||j(                        }|S t        j:                  j=                  dj?                  |      d|t	        j@                  d d!t	        jB                  d"d#$      %      &      # tD        $ r}|d}~ww xY w)(zh
    Retrieves a batch.

    LiteLLM Equivalent of GET https://api.openai.com/v1/batches/{batch_id}
    rC   rD   NFrL   r+   r$   r%   r   Tr    rM   rN   rO   rP   )rW   retrieve_batch_datarQ   rR   rS   rU   rV   r!   rX   rY   rZ   r[   r%   r\   r]   )rW   rQ   rR   r^   rU   rV   r   r"   r   r_   r`   ra   )rW   r+   rQ   rb   rc   rd   rU   rV   zJLiteLLM doesn't support {} for 'create_batch'. Only 'openai' is supported.re   rf   rg   rh   ri   rj   rm   rq   r,   )#r   rU   r6   rw   rx   ry   r   rz   r{   r   rt   rQ   r|   r}   r~   rS   rR   r   r   r   rV   r   r^   r   r   rb   rc   rd   r   r   r   r   r   r   r8   )r+   r   r#   r$   r%   r9   rJ   rU   r   _retrieve_batch_requestrW   rQ   rS   rR   r?   r^   r   r   rd   r@   s                       rA   r   r   9  s   F.88!))VVZZ8I3-OVSV 7EMM2&':;uD"<<.3L"G GU]])KGnG_G"6'!#
 JJ0%8D@	"&(*  (( /##/99.// /	   ,, ''992D9 	   '' /??/%%/ 99-.	  /==#$;!)+77 > Hf U !G+(( 4##4!"23   ++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-<<#!'+77$; = H` O !K/&//52H.. 6))6!"45   // 7**7!"56 
 "1!C!C "~&H 2@@#!!0 2#5+77 A 	H.  $$44dkk' 0 #2!MMFjk 5    s-   F!N- $C>N- #B,N- AN- -	N=6N88N=afterlimit)r    r!   c                 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)z2
    Async: List your organization's batches.
    Talist_batchesN)
r-   r.   r   list_batchesr0   r1   r2   r3   r4   r8   )r   r   r   r#   r$   r%   r9   r:   r;   r<   r=   r>   r?   r@   s                 rA   r   r     s     %%'"& 
 
 &&(#CGGT2"2249JKK}-**H  %H L*
  r   c                    	 t        d i |}|j                  xs9 t        j                  xs' t        j                  xs t	        j
                  d      }|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s+ t        j                  xs t	        j
                  d
      xs d}|j                   xs, t        j                   xs t	        j
                  dd      xs d}t"        j%                  |
| ||||||j&                        }|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       nt)        d       t.        j%                  |
|||||j&                        }|S t        j0                  j3                  dj5                  |      d|t        j6                  ddt        j8                  dd                  # t:        $ r}|d}~ww xY w)!z>
    Lists batches

    List your organization's batches.
    rP   rC   rD   NFrL   r   Tr    rM   rN   rO   )rW   r   r   rQ   rR   rS   rU   rV   r!   rX   rY   rZ   r[   r%   r\   r]   )rW   rQ   rR   r^   rU   rV   zHLiteLLM doesn't support {} for 'list_batch'. Only 'openai' is supported.re   rf   rg   rh   ri   rj   rm   rq   r,   )r   rR   r|   r   r}   r~   rU   r6   rw   rx   ry   r   rz   r{   rt   rQ   rS   r   r   rV   r   r^   r   r   r   r   r   r   r   r8   )r   r   r   r$   r%   r9   rJ   rR   rU   r   rW   rQ   rS   r?   r^   r@   s                   rA   r   r     s   `.88## ++!!+ yy)*	 	 "))VVZZ8I3-OVSV 7EMM2&':;uD"<<.3L"G GU]])KGnG_GJJ6$>	(*  (( /##/99.// /	   ,, ''992D9 	  /;;#!)+77 < 	Hj W !G+&//g73C3Cg~VfGgH++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-::#!'+77 ; H*  $$44bii' 0 #2!MMFjk 5    s&   FK0 C=K0 AK0 0	L 9K;;L c                 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)zu
    Async: Cancels a batch.

    LiteLLM Equivalent of POST https://api.openai.com/v1/batches/{batch_id}/cancel
    Tacancel_batchN)
r-   r.   r   cancel_batchr0   r1   r2   r3   r4   r8   r   s                rA   r   r   h  s     %%'"& 
 
 &&(#CGGT2"2249JKK}-**H  %H L*
  r   c                 &   	 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}t        | ||      }	|j                  dd      du }
d}|d	k(  r|j                  xs+ t        j                  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(                        }|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       nt+        d       t0        j'                  |
|||||j(                  |	      }|S t        j2                  j5                  dj7                  |      d|t	        j8                  ddt	        j:                  dd                   # t<        $ r}|d}~ww xY w)"zn
    Cancels a batch.

    LiteLLM Equivalent of POST https://api.openai.com/v1/batches/{batch_id}/cancel
    rC   rD   NFrL   r   r   Tr    rM   rN   rO   rP   )rW   cancel_batch_datarQ   rR   rS   rU   rV   r!   rX   rY   rZ   r[   r%   r\   r]   )rW   rQ   rR   r^   rU   rV   r   zWLiteLLM doesn't support {} for 'cancel_batch'. Only 'openai' and 'azure' are supported.re   rf   rg   r   ri   rj   rm   rq   r,   )r   rU   r6   rw   rx   ry   r   rz   r{   r   rt   rQ   r|   r}   r~   rS   rR   r   r   r   rV   r   r^   r   r   r   r   r   r   r   r8   )r+   r   r#   r$   r%   r9   rJ   rU   r   _cancel_batch_requestrW   rQ   rS   rR   r?   r^   r@   s                    rA   r   r     s<   i.88!))VVZZ8I3-OVSV 7EMM2&':;uD"<<.3L"G GU]])KGnG_G 2'!!
 JJ6$>	"&(*(( /##/99.// /	   ,, ''992D9 	   '' /??/%%/ 99-.	  /;;#"7!)+77 < Hr a !G+(( 4##4!"23   ++ 7&&7!"56   '' 3??3$$3 ""893 "/2  ),,\2>J%/6/0-::#!'+77"7 ; H,  $$44qxx' 0 #2!MMEij 5    s&   F!L  $C>L  #AL   	L	LL)r    NNN)NNr    NNN)NNr    NN)4__doc__r-   r0   r}   	functoolsr   typingr   r   r   r   r   r	   rx   r|   *litellm.litellm_core_utils.litellm_loggingr
   LiteLLMLoggingObj"litellm.llms.azure.batches.handlerr   litellm.llms.openai.openair   &litellm.llms.vertex_ai.batches.handlerr   litellm.secret_managers.mainr   litellm.types.llms.openair   r   r   r   litellm.types.routerr   litellm.utilsr   r   r   batch_utilsr   r   r   r   strr(   r/   r   r   intr   r   r   r   r,       rA   <module>r      s  
   	  A A   S > 7 J 7  6 L L . +, (* 4RH  
 DL)-.2+/7u~7QR7 7 !!?@	7
 tCH~&7 DcN+7 c3h(7 7 7t 
 DL)-.2+/du~dQRd d !!?@	d
 tCH~&d DcN+d c3h(d 5)CeO,,-d dR DL)-.2+/&& !?@& tCH~&& DcN+	&
 c3h(& &V DL)-.2+/SS !?@S tCH~&S DcN+	S
 c3h(S 5)CeO,,-Sn  6>)-.2+/&C=&C=& !!23& tCH~&	&
 DcN+& c3h(&T  6>.2+/mC=mC=m !!23m DcN+	m
 c3h(md 7?)-.2+/&& !23& tCH~&& DcN+	&
 c3h(& &V 7?)-.2+/vv !23v tCH~&v DcN+	v
 c3h(v 5)CeO,,-vr   