
    ^h              &       L   S SK r S SKrS SKrS SKJr  S SKJrJrJrJ	r	J
r
JrJrJr  S SKrS SKJrJr  S SKJr  S SKJr  S SKrS SKJr  S SKJrJrJrJr  S	S
KJr  S	SK J!r!  S	SK"7  S	SK#7  SSK$J%r%  \!" 5       r&\" 5       r' S=S\S   S\\   S\(\   4S jjr)    S>S\S   S\\   S\\*   S\\*   S\\*   S\+\   4S jjr, S=S\S   S\\   S\4S jjr-             S?S\S   S\*S\\*   S\\*   S\\*   S\\
\\*\4         S\\\*\4      S\\\*\*4      S \\.   S!\\.   S"\\\*\\*\*4   4      S\\   S\\*   S\\*   S\\*   S\\\\\\4   4   4 S# jjr/ S=S\S   S\\   S\4S$ jjr0    S>S\S   S%\*S\\   S\\*   S\\*   S\\*   S\\\\\\4   4   4S& jjr1S\S   S\24S' jr3    S>S\S   S(\\	\4      S\\5   S\\6   S\\   S\24S) jjr7 S=S\S   S*\*S\\   S\24S+ jjr8 S=S\S   S*\*S\24S, jjr9   S@S\S   S*\*S-\S.   S/\*S0\\
\:      S\\5   S\;4S1 jjr<   S@S\S   S*\*S-\S.   S/\*S0\\
\:      S\\5   S\;4S2 jjr= S=S\S   S*\*S\\   S\(\;   4S3 jjr> S=S\S   S*\*S\\   S\+\;   4S4 jjr?SS5.S6\\@   S\A\B   4S7 jjrC       SAS\S   S*\*S%\*S8\\*   S\\*   S\\5   S\\*   S9\\D   S\\	\E      S\\   S\F4S: jjrGSS5.S6\\@   S\H\@   4S; jjrI        SBS\S   S*\*S%\*S8\\*   S\\*   S\\5   S\\*   S9\\D   S\\	\E      S\\   S6\\@   S\F4S< jjrJg)C    N)partial)Any	CoroutineDictIterableListLiteralOptionalUnion)AsyncOpenAIOpenAI)	Assistant)AssistantDeleted)GenericLiteLLMParams)exception_typeget_llm_provider
get_secretsupports_httpx_timeout   )AzureAssistantsAPI)OpenAIAssistantsAPI)*   )get_optional_params_add_messagecustom_llm_provider)openaiazureclientreturnc           	        #    [         R                  " 5       nSUS'    [        [        X40 UD6n[        R
                  " 5       n[        UR                  U5      n[        SU S9u  pp  nUR                  S U5      I S h  vN n[         R                  " U5      (       a  UI S h  vN n	U	$ Un	U	$  N/ N! [         a  n
[        SU U
0 US9eS n
A
ff = f7f)NTaget_assistants modelr   r$   r   original_exceptioncompletion_kwargsextra_kwargs)asyncioget_event_loopr   get_assistantscontextvarscopy_contextrunr   run_in_executoriscoroutine	Exceptionr   r   r   kwargsloopfuncctxfunc_with_context_init_responseresponsees              Q/home/james-whalen/.local/lib/python3.13/site-packages/litellm/assistants/main.pyr!   r!   $   s     
 !!#D $F
~':MfM &&(#CGGT2'7*=(
$1
 #2249JKK}--**H  %H L*  
 3  
 	

Y   CAB1 =B->$B1 "B/#B1 (C)B1 ,C-B1 /B1 1
C;CCCapi_keyapi_baseapi_versionc                    UR                  SS 5      nUb   [        U[        5      (       d  [        S5      e[	        S X#US.UD6nUR
                  =(       d    UR                  SS5      =(       d    SnUbE  [        U[        R                  5      (       a&  [        U 5      SL a  UR                  =(       d    Sn	U	nO3Ub+  [        U[        R                  5      (       d  [        U5      nOUc  SnS n
U S:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S	5      =(       d    S
nUR                   =(       d7    [        R                   =(       d     [        R                  " SS 5      =(       d    S nUR"                  =(       dD    [        R"                  =(       d-    [        R$                  =(       d    [        R                  " S5      n[&        R)                  UUUUR*                  UUUS9n
GOU S:X  Ga"  UR                  =(       d"    [        R                  =(       d    [-        S5      nUR.                  =(       d"    [        R.                  =(       d    [-        S5      nUR"                  =(       dK    [        R"                  =(       d4    [        R0                  =(       d    [-        S5      =(       d    [-        S5      nUR                  S0 5      nS nUb  UR                  SS 5      nO[-        S5      n[2        R)                  UUUUUUR*                  UUS9n
OV[        R4                  R7                  SR9                  U 5      SU [        R:                  " SS[        R<                  " SSS9S9S9eU
cV  [        R4                  R7                  SR9                  U 5      SU [        R:                  " SS[        R<                  " SSS9S9S9eU
$ )!Nr!   zFInvalid value passed in for aget_assistants. Only bool or None allowedr>   r?   r@   request_timeoutX  F     @r   OPENAI_API_BASEhttps://api.openai.com/v1OPENAI_ORGANIZATIONOPENAI_API_KEY)r?   r>   timeoutmax_retriesorganizationr   r!   r   AZURE_API_BASEAZURE_API_VERSIONAZURE_OPENAI_API_KEYAZURE_API_KEY
extra_bodyazure_ad_tokenAZURE_AD_TOKEN)r?   r>   r@   rR   rJ   rK   r   r!   zLLiteLLM doesn't support {} for 'get_assistants'. Only 'openai' is supported.n/a  Unsupported providercreate_thread"https://github.com/BerriAI/litellmmethodurlstatus_codecontentrequestmessager$   llm_providerr:    )pop
isinstanceboolr1   r   rJ   gethttpxTimeoutr   readfloatr?   litellmosgetenvrL   r>   
openai_keyopenai_assistants_apir+   rK   r   r@   	azure_keyazure_assistants_api
exceptionsBadRequestErrorformatResponseRequest)r   r   r>   r?   r@   r3   r!   optional_paramsrJ   read_timeoutr:   rL   rQ   rR   s                 r<   r+   r+   I   s    '-jj1BD&IO":ot+L+LT
 	
 + GMO
 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	48Hh&$$ ++yy*++ +	 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )77'33%+ 8 
 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89N'66#)'33+ 7 	
   00bii# ,^^._Bfg 1 
 	
   00bii# ,^^._Bfg 1 
 	
 O    c           	        #    [         R                  " 5       nSUS'   UR                  SS 5      n XS'   [        [        X40 UD6n[
        R                  " 5       n[        UR                  U5      n[        X@S9u  p  nUR                  S U5      I S h  vN n	[         R                  " U	5      (       a  U	I S h  vN n
U
$ U	n
U
$  N/ N! [         a  n[        UU U0 US9eS nAff = f7f)NTasync_create_assistantsr$   r   r#   r%   )r)   r*   rd   r   create_assistantsr,   r-   r.   r   r/   r0   r1   r   )r   r   r3   r4   r$   r5   r6   r7   r8   r9   r:   r;   s               r<   acreate_assistantsr~      s     
 !!#D(,F$%JJw%E
!x(*=OO &&(#CGGT2'7(
$1
 #2249JKK}--**H  %H L*  
 3  
 	

sY   -C%A"C C$C 7C8C =C%>C C%C C 
C"CC""C%r$   namedescriptioninstructionstoolstool_resourcesmetadatatemperaturetop_presponse_formatc                    UR                  SS 5      nUb   [        U[        5      (       d  [        S5      e[	        S#XUS.UD6nUR
                  =(       d    UR                  SS5      =(       d    SnUbE  [        U[        R                  5      (       a&  [        U 5      SL a  UR                  =(       d    SnUnO3Ub+  [        U[        R                  5      (       d  [        U5      nOUc  SnUUUUUUUUU	U
S.
nS nU S	:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S
5      =(       d    SnUR                   =(       d7    [        R                   =(       d     [        R                  " SS 5      =(       d    S nUR"                  =(       dD    [        R"                  =(       d-    [        R$                  =(       d    [        R                  " S5      n[&        R)                  UUUUR*                  UUUUS9nGOU S:X  Ga:  UR                  =(       d"    [        R                  =(       d    [-        S5      nUR.                  =(       d"    [        R.                  =(       d    [-        S5      nUR"                  =(       dK    [        R"                  =(       d4    [        R0                  =(       d    [-        S5      =(       d    [-        S5      nUR                  S0 5      nS nUb  UR                  SS 5      nO[-        S5      n[        U[2        5      (       a  S n[4        R)                  UUUUUUR*                  UUUS9	nOV[        R6                  R9                  SR;                  U 5      SU [        R<                  " SS[        R>                  " SSS9S9S 9eUc  [        R6                  RA                  S!UU S"9eU$ )$Nr|   zNInvalid value passed in for async_create_assistants. Only bool or None allowedrB   rC   rD   FrE   )
r$   r   r   r   r   r   r   r   r   r   r   rF   rG   rH   rI   )r?   r>   rJ   rK   rL   create_assistant_datar   r|   r   rM   rN   rO   rP   rQ   rR   rS   )	r?   r>   rR   r@   rJ   rK   r   r|   r   zOLiteLLM doesn't support {} for 'create_assistants'. Only 'openai' is supported.rT   rU   rV   rW   rX   rY   r\   r`   z-No response returned from 'create_assistants'ra   r$   rb   rc   )!rd   re   rf   
ValueErrorr   rJ   rg   rh   ri   r   rj   rk   r?   rl   rm   rn   rL   r>   ro   rp   r}   rK   r   r@   rq   r   rr   rs   rt   ru   rv   rw   InternalServerError)r   r$   r   r   r   r   r   r   r   r   r   r   r>   r?   r@   r3   r|   rx   rJ   ry   r   r:   rL   rQ   rR   s                            r<   r}   r}      s   $ /5jj!4/ *:4 4 \
 	
 + GMO
 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	 "$("* LPHh&$$ ++yy*++ +	 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )::'33%"7$; ; 	
 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89Nff%%F'99)#'33$;"7 : 

   00ell# ,^^._Bfg 1 
 	
   44C, 5 
 	

 Orz   c           	        #    [         R                  " 5       nSUS'    XS'   [        [        U 40 UD6n[        R
                  " 5       n[        UR                  U5      n[        SU S9u  pp  nUR                  S U5      I S h  vN n[         R                  " U5      (       a  UI S h  vN n	U	$ Un	U	$  N/ N! [         a  n
[        SU U
0 US9eS n
A
ff = f7f)NTasync_delete_assistantsr   r"   r#   r%   )r)   r*   r   delete_assistantr,   r-   r.   r   r/   r0   r1   r   r2   s              r<   adelete_assistantr     s     
 !!#D(,F$%
!x')<GG &&(#CGGT2'7*=(
$1
 #2249JKK}--**H  %H L*  
 3  
 	

sY   CA#B5 B1$B5 &B3'B5 ,C-B5 0C1B5 3B5 5
C?CCCassistant_idc                    [        S"X4US.UD6nUR                  SS 5      nUb   [        U[        5      (       d  [	        S5      eUR
                  =(       d    UR                  SS5      =(       d    Sn	U	bE  [        U	[        R                  5      (       a&  [        U 5      SL a  U	R                  =(       d    Sn
U
n	O3U	b+  [        U	[        R                  5      (       d  [        U	5      n	OU	c  Sn	S nU S:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S	5      =(       d    S
nUR                   =(       d7    [        R                   =(       d     [        R                  " SS 5      =(       d    S nUR"                  =(       dD    [        R"                  =(       d-    [        R$                  =(       d    [        R                  " S5      n[&        R)                  UUU	UR*                  UUUUS9nGOU S:X  Ga:  UR                  =(       d"    [        R                  =(       d    [-        S5      nUR.                  =(       d"    [        R.                  =(       d    [-        S5      nUR"                  =(       dK    [        R"                  =(       d4    [        R0                  =(       d    [-        S5      =(       d    [-        S5      nUR                  S0 5      nS nUb  UR                  SS 5      nO[-        S5      n[        U[2        5      (       a  S n[4        R)                  UUUUUU	UR*                  UUS9	nOV[        R6                  R9                  SR;                  U 5      SU [        R<                  " SS[        R>                  " SSS9S9S9eUc  [        R6                  RA                  S SU S!9eU$ )#NrB   r   zNInvalid value passed in for async_delete_assistants. Only bool or None allowedrC   rD   FrE   r   rF   rG   rH   rI   )r?   r>   rJ   rK   rL   r   r   r   r   rM   rN   rO   rP   rQ   rR   rS   )	r   r?   r>   rR   r@   rJ   rK   r   r   zNLiteLLM doesn't support {} for 'delete_assistant'. Only 'openai' is supported.rT   rU   rV   r   rX   rY   r\   r`   z,No response returned from 'delete_assistant'r   rc   )!r   rd   re   rf   r   rJ   rg   rh   ri   r   rj   rk   r?   rl   rm   rn   rL   r>   ro   rp   r   rK   r   r@   rq   r   rr   rs   rt   ru   rv   rw   r   )r   r   r   r>   r?   r@   r3   rx   r   rJ   ry   r:   rL   rQ   rR   s                  r<   r   r     s    + GMO /5jj!4/ *:4 4 \
 	

 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	 	  h&$$ ++yy*++ +	 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )99'33%%$; : 	
 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89Nff%%F'88%)#'33$; 9 

   00dkk# ,^^.-3W 1 
 	
   44B, 5 
 	

 Orz   c           	        #    [         R                  " 5       nSUS'    [        [        U 40 UD6n[        R
                  " 5       n[        UR                  U5      n[        SU S9u  p`  nUR                  S U5      I S h  vN n[         R                  " U5      (       a  UI S h  vN nU$ UnU$  N/ N! [         a  n	[        SU U	0 US9eS n	A	ff = f7f)NTacreate_threadr"   r#   r%   )r)   r*   r   rW   r,   r-   r.   r   r/   r0   r1   r   )
r   r3   r4   r5   r6   r7   r8   r9   r:   r;   s
             r<   r   r   ?  s      !!#D#F
}&9DVD &&(#CGGT2'7*=(
$1
 #2249JKK}--**H  %H L*  
 3  
 	

r=   messagesc                    UR                  SS5      n[        S0 UD6nUR                  =(       d    UR                  SS5      =(       d    SnUbE  [        U[        R
                  5      (       a&  [        U 5      SL a  UR                  =(       d    Sn	U	nO3Ub+  [        U[        R
                  5      (       d  [        U5      nOUc  SnSn
SnSnU S:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S5      =(       d    S	n
UR                  =(       d7    [        R                  =(       d     [        R                  " S
S5      =(       d    SnUR                  =(       dD    [        R                  =(       d-    [        R                  =(       d    [        R                  " S5      n[         R#                  UUU
UUUR$                  UUUS9	nU$ U S:X  Ga<  UR                  =(       d"    [        R                  =(       d    ['        S5      n
UR                  =(       dK    [        R                  =(       d4    [        R(                  =(       d    ['        S5      =(       d    ['        S5      nUR*                  =(       d"    [        R*                  =(       d    ['        S5      nUR                  S0 5      nSnUb  UR-                  SS5      nO['        S5      n[        U[.        5      (       a  Sn[0        R#                  UUU
UUUUUR$                  UUS9
nU$ [        R2                  R5                  SR7                  U 5      SU [        R8                  " SS[        R:                  " SSS9S9S9e) a  
- get the llm provider
- if openai - route it there
- pass through relevant params

```
from litellm import create_thread

create_thread(
    custom_llm_provider="openai",
    ### OPTIONAL ###
    messages =  {
        "role": "user",
        "content": "Hello, what is AI?"
        },
        {
        "role": "user",
        "content": "How does AI work? Explain it in simple terms."
    }]
)
```
r   NrC   rD   FrE   r   rF   rG   rH   rI   )	r   r   r?   r>   rJ   rK   rL   r   r   r   rM   rO   rP   rN   rQ   rR   rS   )
r   r   r?   r>   rR   r@   rJ   rK   r   r   KLiteLLM doesn't support {} for 'create_thread'. Only 'openai' is supported.rT   rU   rV   rW   rX   rY   r\   r`   rc   )rg   r   rJ   re   rh   ri   r   rj   rk   r?   rl   rm   rn   rL   r>   ro   rp   rW   rK   r   rq   r@   rd   r   rr   rs   rt   ru   rv   rw   )r   r   r   r   r   r3   r   rx   rJ   ry   r?   r>   r:   rL   r@   rQ   rR   s                    r<   rW   rW   b  s<   < ZZ 0$7N*4V4O %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	"H!G!%Hh&$$ ++yy*++ +	 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )66'33%) 7 

B Om 
	'$$X(8(8XJGW<X 	
 ## ++  + 01+ /* 	 '' /""/-. 	 %((r:
(,!'^^,<dCN'(89Nff%%F'55)#'33) 6 
2 O   00ahh# ,^^._Bfg 1 
 	
rz   	thread_idc           	        #    [         R                  " 5       nSUS'    [        [        XU40 UD6n[        R
                  " 5       n[        UR                  U5      n[        SU S9u  p  nUR                  S U5      I S h  vN n	[         R                  " U	5      (       a  U	I S h  vN n
U
$ U	n
U
$  N/ N! [         a  n[        SU U0 US9eS nAff = f7f)NTaget_threadr"   r#   r%   )r)   r*   r   
get_threadr,   r-   r.   r   r/   r0   r1   r   r   r   r   r3   r4   r5   r6   r7   r8   r9   r:   r;   s               r<   r   r     s      !!#D F=
z#66TVT &&(#CGGT2'7*=(
$1
 #2249JKK}--**H  %H L*  
 3  
 	

sY   CA B2 >B.?$B2 #B0$B2 )C*B2 -C.B2 0B2 2
C<C		CCc                    UR                  SS5      n[        S0 UD6nUR                  =(       d    UR                  SS5      =(       d    SnUbE  [	        U[
        R                  5      (       a&  [        U 5      SL a  UR                  =(       d    SnUnO3Ub+  [	        U[
        R                  5      (       d  [        U5      nOUc  SnSnSn	Sn
U S:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S5      =(       d    S	nUR                  =(       d7    [        R                  =(       d     [        R                  " S
S5      =(       d    SnUR                  =(       dD    [        R                  =(       d-    [        R                   =(       d    [        R                  " S5      n	["        R%                  UUU	UUR&                  UUUS9n
U
$ U S:X  Ga;  UR                  =(       d"    [        R                  =(       d    [)        S5      nUR*                  =(       d"    [        R*                  =(       d    [)        S5      nUR                  =(       dK    [        R                  =(       d4    [        R,                  =(       d    [)        S5      =(       d    [)        S5      n	UR                  S0 5      nSnUb  UR                  SS5      nO[)        S5      n[	        U[.        5      (       a  Sn[0        R%                  UUU	UUUUR&                  UUS9	n
U
$ [        R2                  R5                  SR7                  U 5      SU [
        R8                  " SS[
        R:                  " SSS9S9S9e) z(Get the thread object, given a thread_idr   NrC   rD   FrE   r   rF   rG   rH   rI   )r   r?   r>   rJ   rK   rL   r   r   r   rM   rN   rO   rP   rQ   rR   rS   )	r   r?   r>   rR   r@   rJ   rK   r   r   zHLiteLLM doesn't support {} for 'get_thread'. Only 'openai' is supported.rT   rU   rV   rW   rX   rY   r\   r`   rc   )rd   r   rJ   rg   re   rh   ri   r   rj   rk   r?   rl   rm   rn   rL   r>   ro   rp   r   rK   r   r@   rq   r   rr   rs   rt   ru   rv   rw   )r   r   r   r3   r   rx   rJ   ry   r?   r>   r:   rL   r@   rQ   rR   s                  r<   r   r     s5    **]D1K*4V4O %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	"H!G!%Hh&$$ ++yy*++ +	 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )33'33%# 4 	
~ Ok 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89Nff%%F'22)#'33# 3 

0 O   00^ee# ,^^._Bfg 1 
 	
rz   role)user	assistantr^   attachmentsc           
        #    [         R                  " 5       nSUS'    [        [        U UUUUUU40 UD6n	[        R
                  " 5       n
[        U
R                  U	5      n[        SU S9u  p  nUR                  S U5      I S h  vN n[         R                  " U5      (       a  UI S h  vN nU$ UnU$  N/ N! [         a  n[        SU U0 US9eS nAff = f7f)NTa_add_messager"   r#   r%   )r)   r*   r   add_messager,   r-   r.   r   r/   r0   r1   r   )r   r   r   r^   r   r   r   r3   r4   r5   r6   r7   r8   r9   r:   r;   s                   r<   r   r     s     !!#D"F?%


 

 &&(#CGGT2'7*=(
$1
 #2249JKK}--**H  %H L*
  
 3  
 	

sY   CA%B7 B3$B7 (B5)B7 .C/B7 2C3B7 5B7 7
CCCCc                    UR                  SS 5      n[        X#XES9n	[        S$0 UD6n
[        U	S   U	S   U	S   U	S   U S9nU
R                  =(       d    UR                  SS	5      =(       d    S	nUbE  [        U[        R                  5      (       a&  [        U 5      S
L a  UR                  =(       d    S	nUnO3Ub+  [        U[        R                  5      (       d  [        U5      nOUc  SnS nS nS nU S:X  Ga  U
R                  =(       d6    [        R                  =(       d    [        R                  " S5      =(       d    SnU
R                   =(       d7    [        R                   =(       d     [        R                  " SS 5      =(       d    S nU
R"                  =(       dD    [        R"                  =(       d-    [        R$                  =(       d    [        R                  " S5      n[&        R)                  UUUUUU
R*                  UUUS9	nU$ U S:X  Ga%  U
R                  =(       d"    [        R                  =(       d    [-        S5      nU
R.                  =(       d"    [        R.                  =(       d    [-        S5      nU
R"                  =(       dK    [        R"                  =(       d4    [        R0                  =(       d    [-        S5      =(       d    [-        S5      nU
R                  S0 5      nS nUb  UR                  SS 5      nO[-        S5      n[2        R)                  UUUUUUUU
R*                  UUS9
nU$ [        R4                  R7                  SR9                  U 5      SU [        R:                  " SS[        R<                  " SS S!9S"9S#9e)%Nr   )r   r^   r   r   r   r^   r   r   )r   r^   r   r   r   rC   rD   FrE   r   rF   rG   rH   rI   )	r   message_datar?   r>   rJ   rK   rL   r   r   r   rM   rN   rO   rP   rQ   rR   rS   )
r   r   r?   r>   r@   rR   rJ   rK   r   r   r   rT   rU   rV   rW   rX   rY   r\   r`   rc   )rd   MessageDatar   r   rJ   rg   re   rh   ri   r   rj   rk   r?   rl   rm   rn   rL   r>   ro   rp   r   rK   r   r@   rq   rr   rs   rt   ru   rv   rw   )r   r   r   r^   r   r   r   r3   r   _message_datarx   r   rJ   ry   r>   r?   r:   rL   r@   rQ   rR   s                        r<   r   r     sg    JJ5MM +4V4O26"i(!-0z*/L %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	!G"H(,Hh&$$ ++yy*++ +	 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )44%'33%' 5 

~ Oi 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89N'33%#)'33' 4 
4 O   00ahh# ,^^._Bfg 1 
 	
rz   c           	        #    [         R                  " 5       nSUS'    [        [        U UU40 UD6n[        R
                  " 5       n[        UR                  U5      n[        SU S9u  p  nUR                  S U5      I S h  vN n	[         R                  " U	5      (       a  U	I S h  vN n
U
$ U	n
U
$  N/ N! [         a  n[        SU U0 US9eS nAff = f7f)NTaget_messagesr"   r#   r%   )r)   r*   r   get_messagesr,   r-   r.   r   r/   r0   r1   r   r   s               r<   r   r   A  s      !!#D"F?!
	

 
 &&(#CGGT2'7*=(
$1
 #2249JKK}--**H  %H L*
  
 3  
 	

sY   CA!B3 ?B/ $B3 $B1%B3 *C+B3 .C/B3 1B3 3
C=C

CCc                    UR                  SS 5      n[        S0 UD6nUR                  =(       d    UR                  SS5      =(       d    SnUbE  [	        U[
        R                  5      (       a&  [        U 5      SL a  UR                  =(       d    SnUnO3Ub+  [	        U[
        R                  5      (       d  [        U5      nOUc  SnS nS n	S n
U S:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S5      =(       d    Sn
UR                  =(       d7    [        R                  =(       d     [        R                  " S	S 5      =(       d    S nUR                  =(       dD    [        R                  =(       d-    [        R                   =(       d    [        R                  " S
5      n	["        R%                  UU
U	UUR&                  UUUS9nU$ U S:X  Ga$  UR                  =(       d"    [        R                  =(       d    [)        S5      n
UR*                  =(       d"    [        R*                  =(       d    [)        S5      nUR                  =(       dK    [        R                  =(       d4    [        R,                  =(       d    [)        S5      =(       d    [)        S5      n	UR                  S0 5      nS nUb  UR                  SS 5      nO[)        S5      n[.        R%                  UU
U	UUUUR&                  UUS9	nU$ [        R0                  R3                  SR5                  U 5      SU [
        R6                  " SS[
        R8                  " SSS9S9S9e)Nr   rC   rD   FrE   r   rF   rG   rH   rI   )r   r?   r>   rJ   rK   rL   r   r   r   rM   rN   rO   rP   rQ   rR   rS   )	r   r?   r>   r@   rR   rJ   rK   r   r   zJLiteLLM doesn't support {} for 'get_messages'. Only 'openai' is supported.rT   rU   rV   rW   rX   rY   r\   r`   rc   )rd   r   rJ   rg   re   rh   ri   r   rj   rk   r?   rl   rm   rn   rL   r>   ro   rp   r   rK   r   r@   rq   rr   rs   rt   ru   rv   rw   )r   r   r   r3   r   rx   rJ   ry   r:   r>   r?   rL   r@   rQ   rR   s                  r<   r   r   n  s#    JJ5M*4V4O %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	8<H!G"Hh&$$ ++yy*++ +	 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )55'33%' 6 	
z Og 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89N'44#)'33' 5 

2 O   00`gg# ,^^._Bfg 1 
 	
rz   )event_handlerr   c                 (    SUS'   [        SSU S.UD6$ )NTarun_threadstreamr   rc   
run_threadr   r3   s     r<   arun_thread_streamr     s#    
 !F=ITI&IIrz   additional_instructionsr   c
                   #    [         R                  " 5       nSU
S'    [        [        U UUUUUUUUU	40 U
D6n[        R
                  " 5       n[        UR                  U5      n[        SU S9u  p  nUR                  S U5      I S h  vN n[         R                  " U5      (       a  UI S h  vN nU$ UnU$  N/ N! [         a  n[        SU U0 U
S9eS nAff = f7f)NTr   r"   r#   r%   )r)   r*   r   r   r,   r-   r.   r   r/   r0   r1   r   )r   r   r   r   r   r   r$   r   r   r   r3   r4   r5   r6   r7   r8   r9   r:   r;   s                      r<   r   r     s     !!#D F=(
#
 
  &&(#CGGT2'7*=(
$1
 #2249JKK}--**H  %H L*
  
 3  
 	

sY   CA(B: B6$B: +B8,B: 1C2B: 5C6B: 8B: :
CCCCc                     [        SSU S.UD6$ )NTr   rc   r   r   s     r<   run_thread_streamr   #  s    
 ITI&IIrz   c                 P   UR                  SS5      n[        S0 UD6nUR                  =(       d    UR                  SS5      =(       d    SnUbE  [	        U[
        R                  5      (       a&  [        U 5      SL a  UR                  =(       d    SnUnO3Ub+  [	        U[
        R                  5      (       d  [        U5      nOUc  SnSnU S:X  Ga  UR                  =(       d6    [        R                  =(       d    [        R                  " S5      =(       d    S	nUR                  =(       d7    [        R                  =(       d     [        R                  " S
S5      =(       d    SnUR                  =(       dD    [        R                  =(       d-    [        R                   =(       d    [        R                  " S5      n["        R%                  UUUUUUUUUUUUR&                  UU	UU
S9nU$ U S:X  Gac  UR                  =(       d"    [        R                  =(       d    [)        S5      nUR*                  =(       d"    [        R*                  =(       d    [)        S5      nUR                  =(       dK    [        R                  =(       d4    [        R,                  =(       d    [)        S5      =(       d    [)        S5      nUR                  S0 5      nSnUb  UR                  SS5      nO[)        S5      n[.        R%                  UUUUUUUUUb  [1        U5      OSUb  [1        U5      OSUb  [1        U5      OSUb  [1        U5      OSUUR&                  U	US9nU$ [        R2                  R5                  SR7                  U 5      SU [
        R8                  " SS[
        R:                  " SSS9S9S9e) zRun a given thread + assistant.r   NrC   rD   FrE   r   rF   rG   rH   rI   )r   r   r   r   r   r$   r   r   r?   r>   rJ   rK   rL   r   r   r   r   rM   rN   rO   rP   rQ   rR   rS   )r   r   r   r   r   r$   r   r   r?   r>   r@   rR   rJ   rK   r   r   zHLiteLLM doesn't support {} for 'run_thread'. Only 'openai' is supported.rT   rU   rV   rW   rX   rY   r\   r`   rc   )rd   r   rJ   rg   re   rh   ri   r   rj   rk   r?   rl   rm   rn   rL   r>   ro   rp   r   rK   r   r@   rq   rr   strrs   rt   ru   rv   rw   )r   r   r   r   r   r   r$   r   r   r   r   r3   r   rx   rJ   ry   r:   r?   rL   r>   r@   rQ   rR   s                          r<   r   r   +  su    **]D1K*4V4O %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	"Hh&$$ ++yy*++ +	 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )33%$;%'33%#'! 4 
V Os 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
!'^^,<dCN'(89N'22%$;%&.&:S]$+$7CLT,7,CK(2@2L3~.RV'33#! 3 
> O   00^ee# ,^^._Bfg 1 
 	
rz   )N)NNNN)NNNNNNNNNNNNN)NNN)NNNNNNN)NNNNNNNN)Kr)   r,   rm   	functoolsr   typingr   r   r   r   r   r	   r
   r   rh   r   r   r   openai.types.beta.assistantr   #openai.types.beta.assistant_deletedr   rl   litellm.types.routerr   litellm.utilsr   r   r   r   llms.azure.assistantsr   llms.openai.openair   types.llms.openaitypes.routerutilsr   rp   rr   AsyncCursorPager!   r   SyncCursorPager+   r~   rk   r}   r   r   Threadr   OpenAICreateThreadParamsMessagedict%OpenAICreateThreadParamsToolResourcesrW   r   r   
AttachmentOpenAIMessager   r   r   r   AssistantEventHandlerAsyncAssistantStreamManagerAsyncAssistantEventHandlerr   rf   AssistantToolParamRunr   AssistantStreamManagerr   r   rc   rz   r<   <module>r      s~     	  Q Q Q  & 1 @  5  7 4 !  2 ,- )+  %)"
 !23"
[!"
 Y	"
N !!"!%@ !23@SM@ c]@ sm	@
 #@ I@J %)$
 !23$
[!$
 	$
T !%"&,0/3)-#'!<@ !"!%W !23WW 3-W #	W
 3-W Dc3h()W T#s(^,W tCH~&W %W E?W eCc3h$789W SMW c]W smW #W" 9iS) 3445#Wx %)#
 !23#
[!#
 	#
R !!"!%F !23FF SMF c]	F
 smF #F YsC1A'ABBCFX 
 !23 
 
J EI#FJ#J !23Jx ?@AJ tnJ BC	J
 VJ J` %)#
 !23#
#
 [!#

 #
R p !23pp
 pv /3#2
 !232
2
 %
&2
 	2

 $z*+2
 tn2
 2
t /3#~ !23~~ %
&~ 	~
 $z*+~ tn~ ~H %)*
 !23*
*
 [!*

 ]#*
` !m !23mm SMm
 M"mf 6:J12J !!;<	J .2"&#!48 8
 !238
8
 8
 &c]	8

 3-8
 tn8
 C=8
 TN8
 H/018
 SM8
 	8
z 6:J12J 12	J .2"&#!48 59C !23CC C &c]	C
 3-C tnC C=C TNC H/01C SMC 12C 	Crz   