
    Cj&              &       P   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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r0 S=S\S   S\\   S\4S$ jjr1    S>S\S   S%\+S\\   S\\+   S\\+   S\\+   S\\\\\\4   4   4S& jjr2S\S   S\34S' jr4    S>S\S   S(\\	\5      S\\6   S\\7   S\\   S\34S) jjr8 S=S\S   S*\+S\\   S\34S+ jjr9 S=S\S   S*\+S\34S, jjr:   S@S\S   S*\+S-\S.   S/\+S0\\
\;      S\\6   S\<4S1 jjr=   S@S\S   S*\+S-\S.   S/\+S0\\
\;      S\\6   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\\A   S\B\C   4S7 jjrD       SAS\S   S*\+S%\+S8\\+   S\\+   S\\6   S\\+   S9\\E   S\\	\F      S\\   S\G4S: jjrHSS5.S6\\A   S\I\A   4S; jjrJ        SBS\S   S*\+S%\+S8\\+   S\\+   S\\6   S\\+   S9\\E   S\\	\F      S\\   S6\\A   S\G4S< jjrKg)C    N)partial)Any	CoroutineDictIterableListLiteralOptionalUnion)AsyncOpenAIOpenAI)	Assistant)AssistantDeleted)GenericLiteLLMParams)exception_typeget_litellm_params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              i/home/rurouni/.local/share/pipx/venvs/strix-agent/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[        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                  =(       dS    [        R                  =(       d<    [        R                   " S	5      =(       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OU S:X  Ga#  UR                  =(       d"    [        R                  =(       d    [/        S5      nUR0                  =(       d"    [        R0                  =(       d    [/        S5      nUR$                  =(       dK    [        R$                  =(       d4    [        R2                  =(       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[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cV  [        R6                  R9                  SR;                  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@   rA   request_timeoutX  F     @r   OPENAI_BASE_URL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?   rA   rT   rL   rM   r   r"   litellm_paramszLLiteLLM 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boolr2   r   r   rL   gethttpxTimeoutr   readfloatr@   litellmosgetenvrN   r?   
openai_keyopenai_assistants_apir,   rM   r   rA   	azure_keyazure_assistants_api
exceptionsBadRequestErrorformatResponseRequest)r   r   r?   r@   rA   r4   r"   optional_paramslitellm_params_dictrL   read_timeoutr;   rN   rS   rT   s                  r=   r,   r,   J   s    '-jj1BD&IO":ot+L+LT
 	
 + GMO -6v6 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	48Hh&$$ ++yy*++ 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+   rg   r   create_assistantsr-   r.   r/   r   r0   r1   r2   r   )r   r   r4   r5   r%   r6   r7   r8   r9   r:   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                 P   UR                  SS 5      nUb   [        U[        5      (       d  [        S5      e[	        S$XUS.UD6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UUUUUUUUU	U
S.
nUR                  5        VVs0 s H  u  nnUc  M  UU_M     nnnS nU S	:X  Ga-  UR                  =(       dS    [        R                  =(       d<    [         R"                  " S
5      =(       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    [1        S5      nUR2                  =(       d"    [        R2                  =(       d    [1        S5      nUR&                  =(       dK    [        R&                  =(       d4    [        R4                  =(       d    [1        S5      =(       d    [1        S5      nUR                  S0 5      nS nUb  UR                  SS 5      nO[1        S5      n[        U[6        5      (       a  S n[8        R-                  UUUUUUR.                  UUUUS9
nOV[        R:                  R=                  SR?                  U 5      SU [        R@                  " SS[        RB                  " SSS9S 9S!9eUc  [        R:                  RE                  S"UU S#9eU$ s  snnf )%Nr   zNInvalid value passed in for async_create_assistants. Only bool or None allowedrC   rD   rE   FrF   )
r%   r   r   r   r   r   r   r   r   r   r   rG   rH   rI   rJ   rK   )r@   r?   rL   rM   rN   create_assistant_datar   r   r   rO   rP   rQ   rR   rS   rT   rU   )
r@   r?   rT   rA   rL   rM   r   r   r   rV   zOLiteLLM doesn't support {} for 'create_assistants'. Only 'openai' is supported.rW   rX   rY   rZ   r[   r\   r_   rc   z-No response returned from 'create_assistants'rd   r%   re   rf   )#rg   rh   ri   
ValueErrorr   r   rL   rj   rk   rl   r   rm   rn   itemsr@   ro   rp   rq   rN   r?   rr   rs   r   rM   r   rA   rt   r   ru   rv   rw   rx   ry   rz   InternalServerError)r   r%   r   r   r   r   r   r   r   r   r   r   r?   r@   rA   r4   r   r{   r|   rL   r}   r   kvr;   rN   rS   rT   s                               r=   r   r      s   $ /5jj!4/ *:4 4 \
 	
 + GMO -6v6 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	 "$("* /4466A!16   LPHh&$$ ++yy*++ 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 
 	

 OCs   
P"&P"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   r0   r1   r2   r   r3   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[        S#0 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                  =(       dS    [        R                  =(       d<    [        R                   " S	5      =(       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R0                  =(       d"    [        R0                  =(       d    [/        S5      nUR$                  =(       dK    [        R$                  =(       d4    [        R2                  =(       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[4        5      (       a  S n[6        R+                  UUUUUU
UR,                  UU	US9
nOV[        R8                  R;                  SR=                  U 5      SU [        R>                  " SS[        R@                  " SSS9S9S 9eUc  [        R8                  RC                  S!SU S"9eU$ )$NrC   r   zNInvalid value passed in for async_delete_assistants. Only bool or None allowedrD   rE   FrF   r   rG   rH   rI   rJ   rK   )r@   r?   rL   rM   rN   r   r   r   r   rO   rP   rQ   rR   rS   rT   rU   )
r   r@   r?   rT   rA   rL   rM   r   r   rV   zNLiteLLM doesn't support {} for 'delete_assistant'. Only 'openai' is supported.rW   rX   rY   r   r[   r\   r_   rc   z,No response returned from 'delete_assistant'r   rf   )"r   r   rg   rh   ri   r   rL   rj   rk   rl   r   rm   rn   r@   ro   rp   rq   rN   r?   rr   rs   r   rM   r   rA   rt   r   ru   rv   rw   rx   ry   rz   r   )r   r   r   r?   r@   rA   r4   r{   r|   r   rL   r}   r;   rN   rS   rT   s                   r=   r   r     s    + GMO -6v6.4jj!4/ *:4 4 \
 	

 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	 	  h&$$ ++yy*++ 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 
 	

 Or~   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   rZ   r-   r.   r/   r   r0   r1   r2   r   )
r   r4   r5   r6   r7   r8   r9   r:   r;   r<   s
             r=   r   r   O  s      !!#D#F
}&9DVD &&(#CGGT2'7*=(
$1
 #2249JKK}--**H  %H L*  
 3  
 	

r>   messagesc                 N   UR                  SS5      n[        S 0 UD6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                  =(       dS    [        R                  =(       d<    [        R                  " S5      =(       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[0        5      (       a  Sn[2        R%                  UUUUUUU	UR&                  U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)!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   NrD   rE   FrF   r   rG   rH   rI   rJ   rK   )	r   r   r@   r?   rL   rM   rN   r   r   r   rO   rQ   rR   rP   rS   rT   rU   )r   r   r@   r?   rT   rA   rL   rM   r   r   rV   KLiteLLM doesn't support {} for 'create_thread'. Only 'openai' is supported.rW   rX   rY   rZ   r[   r\   r_   rc   rf   )rj   r   r   rL   rh   rk   rl   r   rm   rn   r@   ro   rp   rq   rN   r?   rr   rs   rZ   rM   r   rt   rA   rg   r   ru   rv   rw   rx   ry   rz   )r   r   r   r   r   r4   r   r{   r|   rL   r}   r@   r?   r;   rN   rA   rS   rT   s                     r=   rZ   rZ   r  sa   < ZZ 0$7N*4V4O,6v6 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	"H!G!%Hh&$$ ++yy*++ yy*++ + 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )66'33%) 7 

D Oo 
	'$$X(8(8XJGW<X 	
 ## ++  + 01+ /* 	 '' /""/-. 	 %((r:
(,!'^^,<dCN'(89Nff%%F'55)#'33). 6 
4 O   00ahh# ,^^._Bfg 1 
 	
r~   	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   r0   r1   r2   r   r   r   r   r4   r5   r6   r7   r8   r9   r:   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                 J   UR                  SS5      n[        S 0 UD6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                  =(       dS    [        R                  =(       d<    [        R                  " S5      =(       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[0        5      (       a  Sn[2        R'                  UU	U
UUUUR(                  U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)!z(Get the thread object, given a thread_idr   NrD   rE   FrF   r   rG   rH   rI   rJ   rK   )r   r@   r?   rL   rM   rN   r   r   r   rO   rP   rQ   rR   rS   rT   rU   )
r   r@   r?   rT   rA   rL   rM   r   r   rV   zHLiteLLM doesn't support {} for 'get_thread'. Only 'openai' is supported.rW   rX   rY   rZ   r[   r\   r_   rc   rf   )rg   r   r   rL   rj   rh   rk   rl   r   rm   rn   r@   ro   rp   rq   rN   r?   rr   rs   r   rM   r   rA   rt   r   ru   rv   rw   rx   ry   rz   )r   r   r   r4   r   r{   r|   rL   r}   r@   r?   r;   rN   rA   rS   rT   s                   r=   r   r   (  sX    **]D1K*4V4O,6v6%%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	"H!G!%Hh&$$ ++yy*++ yy*++ + 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )33'33%# 4 	
@ Om 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89Nff%%F'22)#'33#. 3 
2 O   00^ee# ,^^._Bfg 1 
 	
r~   role)user	assistantra   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   r0   r1   r2   r   )r   r   r   ra   r   r   r   r4   r5   r6   r7   r8   r9   r:   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                 f   UR                  SS 5      n[        X#XES9n	[        S%0 UD6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                  =(       dS    [        R                  =(       d<    [        R                   " S5      =(       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R0                  =(       d"    [        R0                  =(       d    [/        S5      nUR$                  =(       dK    [        R$                  =(       d4    [        R2                  =(       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[4        R+                  UUUUUUUUR,                  UUU
S9nU$ [        R6                  R9                  SR;                  U 5      SU [        R<                  " SS[        R>                  " S S!S"9S#9S$9e)&Nr   )r   ra   r   r   r   ra   r   r   )r   ra   r   r   r   rD   rE   FrF   r   rG   rH   rI   rJ   rK   )	r   message_datar@   r?   rL   rM   rN   r   r   r   rO   rP   rQ   rR   rS   rT   rU   )r   r   r@   r?   rA   rT   rL   rM   r   r   rV   r   rW   rX   rY   rZ   r[   r\   r_   rc   rf   ) rg   MessageDatar   r   r   rL   rj   rh   rk   rl   r   rm   rn   r@   ro   rp   rq   rN   r?   rr   rs   r   rM   r   rA   rt   ru   rv   rw   rx   ry   rz   )r   r   r   ra   r   r   r   r4   r   _message_datar|   r{   r   rL   r}   r?   r@   r;   rN   rA   rS   rT   s                         r=   r   r     s    JJ5MM -6v6*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*++ + 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )44%'33%' 5 

@ Ok 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89N'33%#)'33'. 4 
6 O   00ahh# ,^^._Bfg 1 
 	
r~   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   r0   r1   r2   r   r   s               r=   r   r   Y  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[        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                  =(       dS    [        R                  =(       d<    [        R                  " S5      =(       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[0        R'                  UUU
UUUUR(                  U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) Nr   rD   rE   FrF   r   rG   rH   rI   rJ   rK   )r   r@   r?   rL   rM   rN   r   r   r   rO   rP   rQ   rR   rS   rT   rU   )
r   r@   r?   rA   rT   rL   rM   r   r   rV   zJLiteLLM doesn't support {} for 'get_messages'. Only 'openai' is supported.rW   rX   rY   rZ   r[   r\   r_   rc   rf   )rg   r   r   rL   rj   rh   rk   rl   r   rm   rn   r@   ro   rp   rq   rN   r?   rr   rs   r   rM   r   rA   rt   ru   rv   rw   rx   ry   rz   )r   r   r   r4   r   r{   r|   rL   r}   r;   r?   r@   rN   rA   rS   rT   s                   r=   r   r     sH    JJ5M*4V4O,6v6 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	8<H!G"Hh&$$ ++yy*++ yy*++ + 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )55'33%' 6 	
| Oi 
	'$$X(8(8XJGW<X 	
 '' /""/-. 	 ## ++  + 01+ /* 	 %((r:
(,!'^^,<dCN'(89N'44#)'33'. 5 
4 O   00`gg# ,^^._Bfg 1 
 	
r~   )event_handlerr   c                 (    SUS'   [        SSU S.UD6$ )NTarun_threadstreamr   rf   
run_threadr   r4   s     r=   arun_thread_streamr     s#    
 !F=ITI&IIr~   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   r0   r1   r2   r   )r   r   r   r   r   r   r%   r   r   r   r4   r5   r6   r7   r8   r9   r:   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   rf   r   r   s     r=   run_thread_streamr   >  s    
 ITI&IIr~   c                    UR                  SS5      n[        S 0 UD6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a5  UR                  =(       dS    [        R                  =(       d<    [        R                  " S5      =(       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ad  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[0        R'                  UUUUUUUUUb  [3        U5      OSUb  [3        U5      OSUb  [3        U5      OSUb  [3        U5      OSUUR(                  U	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)!zRun a given thread + assistant.r   NrD   rE   FrF   r   rG   rH   rI   rJ   rK   )r   r   r   r   r   r%   r   r   r@   r?   rL   rM   rN   r   r   r   r   rO   rP   rQ   rR   rS   rT   rU   )r   r   r   r   r   r%   r   r   r@   r?   rA   rT   rL   rM   r   r   rV   zHLiteLLM doesn't support {} for 'run_thread'. Only 'openai' is supported.rW   rX   rY   rZ   r[   r\   r_   rc   rf   )rg   r   r   rL   rj   rh   rk   rl   r   rm   rn   r@   ro   rp   rq   rN   r?   rr   rs   r   rM   r   rA   rt   ru   strrv   rw   rx   ry   rz   )r   r   r   r   r   r   r%   r   r   r   r   r4   r   r{   r|   rL   r}   r;   r@   rN   r?   rA   rS   rT   s                           r=   r   r   F  s    **]D1K*4V4O,6v6 %%R4Es)KRsG 	w.."#675@||*s		Z%G%G.	"Hh&$$ ++yy*++ yy*++ + 	 (( ##yy.5 	 	 ## ++!!+ yy)*	 	 )33%$;%'33%#'! 4 
X Ou 
	'$$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 
 	
r~   )N)NNNN)NNNNNNNNNNNNN)NNN)NNNNNNN)NNNNNNNN)Lr*   r-   rp   	functoolsr   typingr   r   r   r   r   r	   r
   r   rk   r   r   r   openai.types.beta.assistantr   #openai.types.beta.assistant_deletedr   ro   litellm.types.routerr   litellm.utilsr   r   r   r   r   llms.azure.assistantsr   llms.openai.openair   types.llms.openaitypes.routerutilsr   rs   ru   AsyncCursorPager"   r   SyncCursorPager,   r   rn   r   r   r   Threadr   OpenAICreateThreadParamsMessagedict%OpenAICreateThreadParamsToolResourcesrZ   r   r   
AttachmentOpenAIMessager   r   r   r   AssistantEventHandlerAsyncAssistantStreamManagerAsyncAssistantEventHandlerr   ri   AssistantToolParamRunr   AssistantStreamManagerr   r   rf   r~   r=   <module>r      s~     	  Q Q Q  & 1 @  5  7 4 !  2 ,- )+  %)"
 !23"
[!"
 Y	"
N !!"!%C !23CSMC c]C sm	C
 #C ICP %)$
 !23$
[!$
 	$
T !%"&,0/3)-#'!<@ !"!%_ !23__ 3-_ #	_
 3-_ Dc3h()_ T#s(^,_ tCH~&_ %_ E?_ eCc3h$789_ SM_ c]_ sm_ #_" 9iS) 3445#_H %)#
 !23#
[!#
 	#
R !!"!%J !23JJ SMJ c]	J
 smJ #J YsC1A'ABBCJ` 
 !23 
 
J EI#FJ#M !23Mx ?@AM tnM BC	M
 VM Mf %)#
 !23#
#
 [!#

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

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

 ]#*
` !p !23pp SMp
 M"pl 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F !23FF F &c]	F
 3-F tnF C=F TNF H/01F SMF 12F 	Fr~   