
    g              &          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mZmZ d dlZd dlmZmZ d dlmZ d dlmZ d dl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! d	dl" d	dl# ddl$m%Z%  e!       Z& e       Z'	 d=ded   dee   de(e   fdZ)	 	 	 	 d>ded   dee   dee*   dee*   dee*   de+e   fdZ,	 d=ded   dee   defdZ-	 	 	 	 	 	 	 	 	 	 	 	 	 d?ded   de*dee*   dee*   dee*   dee
ee*ef         deee*ef      deee*e*f      d ee.   d!ee.   d"eee*ee*e*f   f      dee   dee*   dee*   dee*   deeeeeef   f   f d#Z/	 d=ded   dee   defd$Z0	 	 	 	 d>ded   d%e*dee   dee*   dee*   dee*   deeeeeef   f   fd&Z1ded   de2fd'Z3	 	 	 	 d>ded   d(ee	e4      dee5   dee6   dee   de2fd)Z7	 d=ded   d*e*dee   de2fd+Z8	 d=ded   d*e*de2fd,Z9	 	 	 d@ded   d*e*d-ed.   d/e*d0ee
e:      dee5   de;fd1Z<	 	 	 d@ded   d*e*d-ed.   d/e*d0ee
e:      dee5   de;fd2Z=	 d=ded   d*e*dee   de(e;   fd3Z>	 d=ded   d*e*dee   de+e;   fd4Z?dd5d6ee@   deAeB   fd7ZC	 	 	 	 	 	 	 dAded   d*e*d%e*d8ee*   dee*   dee5   dee*   d9eeD   dee	eE      dee   deFfd:ZGdd5d6ee@   deHe@   fd;ZI	 	 	 	 	 	 	 	 dBded   d*e*d%e*d8ee*   dee*   dee5   dee*   d9eeD   dee	eE      dee   d6ee@   deFfd<ZJy)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                   K   t        j                         }d|d<   	 t        t        | |fi |}t	        j
                         }t        |j                  |      }t        d|       \  }} }}|j                  d |       d {   }t        j                  |      r| d {   }	|	S |}	|	S 7 )7 # t        $ r}
t        d| |
i |      d }
~
ww xY ww)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              L/var/www/openai/venv/lib/python3.12/site-packages/litellm/assistants/main.pyr!   r!   $   s     
 !!#D $F
~':FMfM &&(#CGGT2'7*=(
$1
 #2249JKK}-**H  %H L*  
 3  
 	

sY   CA#B.  B*B. B, B. %C&B. )C*B. ,B. .	C7CCCapi_keyapi_baseapi_versionc                    |j                  dd       }|t        |t              st        d      t	        d |||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}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*                  |||      }
n^| 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        j0                  xs t-        d      xs t-        d      }|j                  di       }d }||j                  dd       }nt-        d      }t2        j)                  ||||||j*                  ||      }
n]t        j4                  j7                  dj9                  |       d| t        j:                  ddt        j<                  dd                  |
]t        j4                  j7                  dj9                  |       d| t        j:                  ddt        j<                  dd                  |
S )!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?   rQ   rI   rJ   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   rI   gethttpxTimeoutr   readfloatr>   litellmosgetenvrK   r=   
openai_keyopenai_assistants_apir+   rJ   r   r?   	azure_keyazure_assistants_api
exceptionsBadRequestErrorformatResponseRequest)r   r   r=   r>   r?   r3   r!   optional_paramsrI   read_timeoutr:   rK   rP   rQ   s                 r<   r+   r+   I   s    '-jj1BD&IO":ot+LT
 	
 + (GMO
 %%R4Es)KRsG 	w."#675@||*s		Z%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                   K   t        j                         }d|d<   |j                  dd       }	 ||d<   t        t        | |fi |}t        j                         }t        |j                  |      }t        ||       \  }} }}|j                  d |       d {   }	t        j                  |	      r|	 d {   }
|
S |	}
|
S 7 )7 # t        $ r}t        || |i |      d }~ww xY ww)NTasync_create_assistantsr$   r   r#   r%   )r)   r*   rc   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(*=uOO &&(#CGGT2'7-@(
$1
 #2249JKK}-**H  %H L*  
 3  
 	

sY   ,C&A(C CC 6C7C <C&=C  C&C C 	C#CC##C&r$   namedescriptioninstructionstoolstool_resourcesmetadatatemperaturetop_presponse_formatc                    |j                  dd       }|t        |t              st        d      t	        d#|||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}|||||||||	|
d
}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*                  ||||      }nr| 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        j0                  xs t-        d      xs t-        d      }|j                  di       }d }||j                  dd       }nt-        d      }t        |t2              rd }t4        j)                  ||||||j*                  |||	      }n]t        j6                  j9                  dj;                  |       d| t        j<                  ddt        j>                  dd                   |"t        j6                  jA                  d!|| "      |S )$Nr{   zNInvalid value passed in for async_create_assistants. Only bool or None allowedrA   rB   rC   FrD   )
r$   r~   r   r   r   r   r   r   r   r   r   rE   rF   rG   rH   )r>   r=   rI   rJ   rK   create_assistant_datar   r{   r   rL   rM   rN   rO   rP   rQ   rR   )	r>   r=   rQ   r?   rI   rJ   r   r{   r   zOLiteLLM doesn't support {} for 'create_assistants'. Only 'openai' is supported.rS   rT   rU   rV   rW   rX   r[   r_   z-No response returned from 'create_assistants'r`   r$   ra   rb   )!rc   rd   re   
ValueErrorr   rI   rf   rg   rh   r   ri   rj   r>   rk   rl   rm   rK   r=   rn   ro   r|   rJ   r   r?   rp   r   rq   rr   rs   rt   ru   rv   InternalServerError)r   r$   r~   r   r   r   r   r   r   r   r   r   r=   r>   r?   r3   r{   rw   rI   rx   r   r:   rK   rP   rQ   s                            r<   r|   r|      s   $ /5jj!4/ *:4 \
 	
 + (GMO
 %%R4Es)KRsG 	w."#675@||*s		Z%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 
 	

 Ory   c                   K   t        j                         }d|d<   	 ||d<   t        t        | fi |}t	        j
                         }t        |j                  |      }t        d|       \  }} }}|j                  d |       d {   }t        j                  |      r| d {   }	|	S |}	|	S 7 )7 # t        $ r}
t        d| |
i |      d }
~
ww xY ww)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'B2 B.B2 #B0$B2 )C*B2 -C.B2 0B2 2	C;CCCassistant_idc                    t        d"|||d|}|j                  dd       }|t        |t              st	        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}	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*                  ||||      }nr| 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        j0                  xs t-        d      xs t-        d      }|j                  di       }d }||j                  dd       }nt-        d      }t        |t2              rd }t4        j)                  ||||||	|j*                  ||	      }n]t        j6                  j9                  dj;                  |       d| t        j<                  ddt        j>                  dd                  |"t        j6                  jA                  d d| !      |S )#NrA   r   zNInvalid value passed in for async_delete_assistants. Only bool or None allowedrB   rC   FrD   r   rE   rF   rG   rH   )r>   r=   rI   rJ   rK   r   r   r   r   rL   rM   rN   rO   rP   rQ   rR   )	r   r>   r=   rQ   r?   rI   rJ   r   r   zNLiteLLM doesn't support {} for 'delete_assistant'. Only 'openai' is supported.rS   rT   rU   r   rW   rX   r[   r_   z,No response returned from 'delete_assistant'r   rb   )!r   rc   rd   re   r   rI   rf   rg   rh   r   ri   rj   r>   rk   rl   rm   rK   r=   rn   ro   r   rJ   r   r?   rp   r   rq   rr   rs   rt   ru   rv   r   )r   r   r   r=   r>   r?   r3   rw   r   rI   rx   r:   rK   rP   rQ   s                  r<   r   r     s    + (GMO /5jj!4/ *:4 \
 	

 %%R4Es)KRsG 	w."#675@||*s		Z%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 
 	

 Ory   c                   K   t        j                         }d|d<   	 t        t        | fi |}t	        j
                         }t        |j                  |      }t        d|       \  }} }}|j                  d |       d {   }t        j                  |      r| d {   }|S |}|S 7 )7 # t        $ r}	t        d| |	i |      d }	~	ww xY ww)NTacreate_threadr"   r#   r%   )r)   r*   r   rV   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  
 	

sY   CA"B- ?B) B- B+B- $C%B- (C)B- +B- -	C6CCCmessagesc                    |j                  dd      }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}d}
d}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        j(                  xs t'        d      xs t'        d      }|j*                  xs t        j*                  xs t'        d      }|j                  di       }d}||j-                  dd      }nt'        d      }t        |t.              rd}t0        j#                  |||
|||||j$                  ||
      }|S t        j2                  j5                  dj7                  |       d| t	        j8                  ddt	        j:                  dd                  ) 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   NrB   rC   FrD   r   rE   rF   rG   rH   )	r   r   r>   r=   rI   rJ   rK   r   r   r   rL   rN   rO   rM   rP   rQ   rR   )
r   r   r>   r=   rQ   r?   rI   rJ   r   r   KLiteLLM doesn't support {} for 'create_thread'. Only 'openai' is supported.rS   rT   rU   rV   rW   rX   r[   r_   rb   )rf   r   rI   rd   rg   rh   r   ri   rj   r>   rk   rl   rm   rK   r=   rn   ro   rV   rJ   r   rp   r?   rc   r   rq   rr   rs   rt   ru   rv   )r   r   r   r   r   r3   r   rw   rI   rx   r>   r=   r:   rK   r?   rP   rQ   s                    r<   rV   rV   b  s3   < ZZ 0$7N*4V4O %%R4Es)KRsG 	w."#675@||*s		Z%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 
 	
ry   	thread_idc                   K   t        j                         }d|d<   	 t        t        | ||fi |}t	        j
                         }t        |j                  |      }t        d|       \  }} }}|j                  d |       d {   }	t        j                  |	      r|	 d {   }
|
S |	}
|
S 7 )7 # t        $ r}t        d| |i |      d }~ww xY ww)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#6	6TVT &&(#CGGT2'7*=(
$1
 #2249JKK}-**H  %H L*  
 3  
 	

Y   CA$B/ B+B/  B-!B/ &C'B/ *C+B/ -B/ /	C8CCCc                    |j                  dd      }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}d}d}	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       }d}||j                  dd      }nt)        d      }t	        |t.              rd}t0        j%                  |||	||||j&                  ||	      }
|
S t        j2                  j5                  dj7                  |       d| t        j8                  ddt        j:                  dd                  ) z(Get the thread object, given a thread_idr   NrB   rC   FrD   r   rE   rF   rG   rH   )r   r>   r=   rI   rJ   rK   r   r   r   rL   rM   rN   rO   rP   rQ   rR   )	r   r>   r=   rQ   r?   rI   rJ   r   r   zHLiteLLM doesn't support {} for 'get_thread'. Only 'openai' is supported.rS   rT   rU   rV   rW   rX   r[   r_   rb   )rc   r   rI   rf   rd   rg   rh   r   ri   rj   r>   rk   rl   rm   rK   r=   rn   ro   r   rJ   r   r?   rp   r   rq   rr   rs   rt   ru   rv   )r   r   r   r3   r   rw   rI   rx   r>   r=   r:   rK   r?   rP   rQ   s                  r<   r   r     s,    **]D1K*4V4O %%R4Es)KRsG 	w."#675@||*s		Z%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 
 	
ry   role)user	assistantr]   attachmentsc           
        K   t        j                         }d|d<   	 t        t        | ||||||fi |}	t	        j
                         }
t        |
j                  |	      }t        d|       \  }} }}|j                  d |       d {   }t        j                  |      r| d {   }|S |}|S 7 )7 # t        $ r}t        d| |i |      d }~ww xY ww)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(B3 B/B3 $B1%B3 *C+B3 .C/B3 1B3 3	C<CCCc                 J   |j                  dd       }t        ||||      }	t        d$i |}
t        |	d   |	d   |	d   |	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}d }d }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        j0                  xs t-        d      xs t-        d      }|
j                  di       }d }||j                  dd       }nt-        d      }t2        j)                  ||||||||
j*                  ||
      }|S t        j4                  j7                  dj9                  |       d| t        j:                  ddt        j<                  dd !      "      #      )%Nr   )r   r]   r   r   r   r]   r   r   )r   r]   r   r   r   rB   rC   FrD   r   rE   rF   rG   rH   )	r   message_datar>   r=   rI   rJ   rK   r   r   r   rL   rM   rN   rO   rP   rQ   rR   )
r   r   r>   r=   r?   rQ   rI   rJ   r   r   r   rS   rT   rU   rV   rW   rX   r[   r_   rb   )rc   MessageDatar   r   rI   rf   rd   rg   rh   r   ri   rj   r>   rk   rl   rm   rK   r=   rn   ro   r   rJ   r   r?   rp   rq   rr   rs   rt   ru   rv   )r   r   r   r]   r   r   r   r3   r   _message_datarw   r   rI   rx   r=   r>   r:   rK   r?   rP   rQ   s                        r<   r   r     se    JJ5M7hM +4V4O26"i(!-0z*/L %%R4Es)KRsG 	w."#675@||*s		Z%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 
 	
ry   c                   K   t        j                         }d|d<   	 t        t        | ||fi |}t	        j
                         }t        |j                  |      }t        d|       \  }} }}|j                  d |       d {   }	t        j                  |	      r|	 d {   }
|
S |	}
|
S 7 )7 # t        $ r}t        d| |i |      d }~ww xY ww)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  
 	

r   c                    |j                  dd       }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}d }d }	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       }d }||j                  dd       }nt)        d      }t.        j%                  ||
|	||||j&                  ||	      }|S t        j0                  j3                  dj5                  |       d| t        j6                  ddt        j8                  dd                  )Nr   rB   rC   FrD   r   rE   rF   rG   rH   )r   r>   r=   rI   rJ   rK   r   r   r   rL   rM   rN   rO   rP   rQ   rR   )	r   r>   r=   r?   rQ   rI   rJ   r   r   zJLiteLLM doesn't support {} for 'get_messages'. Only 'openai' is supported.rS   rT   rU   rV   rW   rX   r[   r_   rb   )rc   r   rI   rf   rd   rg   rh   r   ri   rj   r>   rk   rl   rm   rK   r=   rn   ro   r   rJ   r   r?   rp   rq   rr   rs   rt   ru   rv   )r   r   r   r3   r   rw   rI   rx   r:   r=   r>   rK   r?   rP   rQ   s                  r<   r   r   n  s    JJ5M*4V4O %%R4Es)KRsG 	w."#675@||*s		Z%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 
 	
ry   )event_handlerr   c                 (    d|d<   t        dd| d|S )NTarun_threadstreamr   rb   
run_threadr   r3   s     r<   arun_thread_streamr     s#    
 !F=ITI&IIry   additional_instructionsr   c
                   K   t        j                         }d|
d<   	 t        t        | |||||||||	fi |
}t	        j
                         }t        |j                  |      }t        d|       \  }} }}|j                  d |       d {   }t        j                  |      r| d {   }|S |}|S 7 )7 # t        $ r}t        d| |i |
      d }~ww xY ww)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+B6 B2	B6 'B4(B6 -C.B6 1C2B6 4B6 6	C?CCCc                     t        dd| d|S )NTr   rb   r   r   s     r<   run_thread_streamr   #  s    
 ITI&IIry   c                 p   |j                  dd      }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}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(  r9|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       }d}||j                  dd      }nt)        d      }t.        j%                  |||||||||t1        |      nd|t1        |      nd|t1        |      nd|t1        |      nd||j&                  |	|      }|S t        j2                  j5                  dj7                  |       d| t        j8                  ddt        j:                  dd                  ) zRun a given thread + assistant.r   NrB   rC   FrD   r   rE   rF   rG   rH   )r   r   r   r   r   r$   r   r   r>   r=   rI   rJ   rK   r   r   r   r   rL   rM   rN   rO   rP   rQ   rR   )r   r   r   r   r   r$   r   r   r>   r=   r?   rQ   rI   rJ   r   r   zHLiteLLM doesn't support {} for 'run_thread'. Only 'openai' is supported.rS   rT   rU   rV   rW   rX   r[   r_   rb   )rc   r   rI   rf   rd   rg   rh   r   ri   rj   r>   rk   rl   rm   rK   r=   rn   ro   r   rJ   r   r?   rp   rq   strrr   rs   rt   ru   rv   )r   r   r   r   r   r   r$   r   r   r   r   r3   r   rw   rI   rx   r:   r>   rK   r=   r?   rP   rQ   s                          r<   r   r   +  so    **]D1K*4V4O %%R4Es)KRsG 	w."#675@||*s		Z%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 
 	
ry   )N)NNNN)NNNNNNNNNNNNN)NNN)NNNNNNN)NNNNNNNN)Kr)   r,   rl   	functoolsr   typingr   r   r   r   r   r	   r
   r   rg   r   r   r   openai.types.beta.assistantr   #openai.types.beta.assistant_deletedr   rk   litellm.types.routerr   litellm.utilsr   r   r   r   llms.azure.assistantsr   llms.openai.openair   types.llms.openaitypes.routerutilsr   ro   rq   AsyncCursorPager!   r   SyncCursorPager+   r}   rj   r|   r   r   Threadr   OpenAICreateThreadParamsMessagedict%OpenAICreateThreadParamsToolResourcesrV   r   r   
AttachmentOpenAIMessager   r   r   r   AssistantEventHandlerAsyncAssistantStreamManagerAsyncAssistantEventHandlerr   re   AssistantToolParamRunr   AssistantStreamManagerr   r   rb   ry   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ry   