
    h݁                         d dl 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mZmZmZmZmZmZmZmZmZmZmZ ddlmZ  G d	 d
e      Zy)    )Any	CoroutineDictIterableLiteralOptionalUnionN)AsyncAzureOpenAIAzureOpenAI)overload   )	AssistantAssistantEventHandlerAssistantStreamManagerAssistantToolParamAsyncAssistantEventHandlerAsyncAssistantStreamManagerAsyncCursorPageOpenAICreateThreadParamsMessageOpenAIMessageRunSyncCursorPageThread   )BaseAzureLLMc            &           e Zd ZdA fdZ	 	 dBdee   dee   dee   dee   deeej                  f   d	ee
   d
ee   dee   defdZ	 	 dBdee   dee   dee   dee   deeej                  f   d	ee
   d
ee   dee   defdZ	 dCdee   dee   dee   dee   deeej                  f   d	ee
   d
ee   dee   dee   fdZedee   dee   dee   dee   deeej                  f   d	ee
   d
ee   ded   deddee   f   fd       Zedee   dee   dee   dee   deeej                  f   d	ee
   d
ee   deed      dee   fd       Z	 	 	 dDdee   dee   dee   dee   deeej                  f   d	ee
   dee   fdZ	 	 dBdededee   dee   dee   dee   deeej                  f   d	ee
   d
ee   dee   defdZe	 dCdededee   dee   dee   dee   deeej                  f   d	ee
   d
ee   ded   dee   deddef   fd       Ze	 dCdededee   dee   dee   dee   deeej                  f   d	ee
   d
ee   deed      dee   defd       Z	 	 	 dDdededee   dee   dee   dee   deeej                  f   d	ee
   dee   dee   fdZ	 	 dBdedee   dee   dee   dee   deeej                  f   d	ee
   d
ee   dee   dee   fdZe	 dCdedee   dee   dee   dee   deeej                  f   d	ee
   d
ee   ded   dee   deddee   f   fd       Ze	 dCdedee   dee   dee   dee   deeej                  f   d	ee
   d
ee   deed      dee   dee   fd       Z	 	 	 dDdedee   dee   dee   dee   deeej                  f   d	ee
   dee   fd Z	 dCd!ee   dee   dee   dee   dee   deeej                  f   d	ee
   d
ee   d"eee      dee   de fd#Z!e	 dCd!ee   dee   dee   dee   dee   deeej                  f   d	ee
   d"eee      d
ee   d$ed   dee   dedde f   fd%       Z"e	 dCd!ee   dee   dee   dee   dee   deeej                  f   d	ee
   d"eee      d
ee   d$eed      dee   de fd&       Z"	 	 	 dDd!ee   dee   dee   dee   dee   deeej                  f   d	ee
   d"eee      dee   fd'Z"	 dCdedee   dee   dee   dee   deeej                  f   d	ee
   d
ee   dee   de fd(Z#e	 dCdedee   dee   dee   dee   deeej                  f   d	ee
   d
ee   d)ed   dee   dedde f   fd*       Z$e	 dCdedee   dee   dee   dee   deeej                  f   d	ee
   d
ee   d)eed      dee   de fd+       Z$	 	 	 dDdedee   dee   dee   dee   deeej                  f   d	ee
   dee   fd,Z$	 dCded-ed.ee   d/ee   d!ee%   d0ee   d1ee   d2eee&      dee   dee   dee   dee   deeej                  f   d	ee
   d
ee   dee   de'f"d3Z(	 dCd
eded-ed.ee   d/ee   d!ee%   d0ee   d2eee&      d4ee)   dee   de*e+   fd5Z,	 dCd
eded-ed.ee   d/ee   d!ee%   d0ee   d2eee&      d4ee)   dee   de-e)   fd6Z.eded-ed.ee   d/ee   d!ee%   d0ee   d1ee   d2eee&      dee   dee   dee   dee   deeej                  f   d	ee
   d
ee   d7ed   dedde'f   f"d8       Z/eded-ed.ee   d/ee   d!ee%   d0ee   d1ee   d2eee&      dee   dee   dee   dee   deeej                  f   d	ee
   d
ee   d7eed      de'f"d9       Z/	 	 	 	 dEded-ed.ee   d/ee   d!ee%   d0ee   d1ee   d2eee&      dee   dee   dee   dee   deeej                  f   d	ee
   d4ee)   dee   f d:Z/	 dCdee   dee   dee   dee   deeej                  f   d	ee
   d
ee   d;edee   defd<Z0	 	 	 dDdee   dee   dee   dee   deeej                  f   d	ee
   d;edee   fd=Z1	 dCdee   dee   dee   dee   deeej                  f   d	ee
   d
ee   d-edee   fd>Z2	 	 	 dDdee   dee   dee   dee   deeej                  f   d	ee
   d-ed?ee   dee   fd@Z3 xZ4S )FAzureAssistantsAPIreturnNc                 "    t         |           y N)super__init__)self	__class__s    Y/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/azure/assistants.pyr"   zAzureAssistantsAPI.__init__   s        api_keyapi_baseapi_versionazure_ad_tokentimeoutmax_retriesclientlitellm_paramsc	                 ^    |(| j                  |xs i ||d|d      }	t        di |	}
|
S |}
|
S )N Fr.   r'   r(   
model_namer)   is_async )initialize_azure_sdk_clientr   r#   r'   r(   r)   r*   r+   r,   r-   r.   azure_client_paramsazure_openai_clients              r%   get_azure_clientz#AzureAssistantsAPI.get_azure_client   s^     >"&"B"B-3!' #C # #."D0C"D #" #)""r&   c	                 ^    |(| j                  |xs i ||d|d      }	t        di |	}
|
S |}
|
S )Nr0   Tr1   r4   )r5   r
   r6   s              r%   async_get_azure_clientz)AzureAssistantsAPI.async_get_azure_client6   s^     >"&"B"B-3!' #C # #3"I5H"I
 #" #)""r&   c	           
         K   | j                  ||||||||      }	|	j                  j                  j                          d {   }
|
S 7 w)Nr'   r(   r)   r*   r+   r,   r-   r.   )r;   beta
assistantslist)r#   r'   r(   r)   r*   r+   r,   r-   r.   r8   responses              r%   async_get_assistantsz'AzureAssistantsAPI.async_get_assistantsT   s`      #99#)#) : 	
 -11<<AACC Ds   AAA
Aaget_assistantsTc	                      y r    r4   	r#   r'   r(   r)   r*   r+   r,   r-   rC   s	            r%   get_assistantsz!AzureAssistantsAPI.get_assistantsp        	r&   Fc	                      y r    r4   rE   s	            r%   rF   z!AzureAssistantsAPI.get_assistants~   rG   r&   c
           
          ||du r| j                  ||||||||	      S | j                  ||||||||	      }
|
j                  j                  j	                         }|S )NTr=   )r'   r(   r*   r+   r,   r-   r)   r.   )rB   r9   r>   r?   r@   )r#   r'   r(   r)   r*   r+   r,   r-   rC   r.   r8   rA   s               r%   rF   z!AzureAssistantsAPI.get_assistants   s     &?d+B,,!'-'- - 	 	 #33)##) 4 	
 '++66;;=r&   	thread_idmessage_datac           
      J  K   | j                  |||||||	|
      } |j                  j                  j                  j                  |fi | d {   }d }t        |dd       "d|_        t        di |j                         }|S t        di |j                         }|S 7 Pw)Nr=   status	completedr4   )	r;   r>   threadsmessagescreategetattrrM   r   dict)r#   rJ   rK   r'   r(   r)   r*   r+   r,   r-   r.   openai_clientthread_messageresponse_objs                 r%   a_add_messagez AzureAssistantsAPI.a_add_message   s      33#)#) 4 	
 /Ym.@.@.H.H.Q.Q.X.X/
%/
 )
 15>8T2:$/N!(A>+>+>+@AL  )A>+>+>+@AL)
s   AB#B!AB#rW   c                      y r    r4   r#   rJ   rK   r'   r(   r)   r*   r+   r,   r-   rW   r.   s               r%   add_messagezAzureAssistantsAPI.add_message        	r&   c                      y r    r4   rY   s               r%   rZ   zAzureAssistantsAPI.add_message   r[   r&   c                 p   |
|
du r| j                  |||||||||	|
      S | j                  |||||||	|      } |j                  j                  j                  j
                  |fi |}d }t        |dd       "d|_        t        di |j                         }|S t        di |j                         }|S )NT)
rJ   rK   r'   r(   r)   r*   r+   r,   r-   r.   r=   rM   rN   r4   )
rW   r9   r>   rO   rP   rQ   rR   rM   r   rS   )r#   rJ   rK   r'   r(   r)   r*   r+   r,   r-   rW   r.   rT   rU   rV   s                  r%   rZ   zAzureAssistantsAPI.add_message   s    $$)>%%#)!'-'- &   --#)#) . 	
 )S(:(:(B(B(K(K(R(R)
%)
 15>8T2:$/N!(A>+>+>+@AL  )A>+>+>+@ALr&   c
           
         K   | j                  ||||||||	      }
|
j                  j                  j                  j	                  |       d {   }|S 7 w)Nr=   rJ   )r;   r>   rO   rP   r@   r#   rJ   r'   r(   r)   r*   r+   r,   r-   r.   rT   rA   s               r%   async_get_messagesz%AzureAssistantsAPI.async_get_messages2  sj      33#)#) 4 	
 '++33<<AAIAVV Ws   AAAAaget_messagesc                      y r    r4   r#   rJ   r'   r(   r)   r*   r+   r,   r-   rb   r.   s              r%   get_messageszAzureAssistantsAPI.get_messagesO       	r&   c                      y r    r4   rd   s              r%   re   zAzureAssistantsAPI.get_messages_  rf   r&   c                     |	|	du r| j                  |||||||||
	      S | j                  ||||||||
      }|j                  j                  j                  j                  |      }|S )NT	rJ   r'   r(   r)   r*   r+   r,   r-   r.   r=   r_   )ra   r9   r>   rO   rP   r@   )r#   rJ   r'   r(   r)   r*   r+   r,   r-   rb   r.   rT   rA   s                r%   re   zAzureAssistantsAPI.get_messagesq  s     $$)>**#!'-'- + 
 
 --#)#) . 	
 !%%--66;;i;Pr&   metadatarP   c           
         K   | j                  ||||||||
      }i }|	|	|d<   |||d<    |j                  j                  j                  di | d {   }t	        di |j                         S 7 w)Nr=   rP   rj   r4   )r;   r>   rO   rQ   r   rS   )r#   rj   r'   r(   r)   r*   r+   r,   r-   rP   r.   rT   datamessage_threads                 r%   async_create_threadz&AzureAssistantsAPI.async_create_thread  s      33#)#) 4 	
 'D'D@}1199@@H4HH.++-.. Is   AA5A3A5acreate_threadc                      y r    r4   r#   rj   r'   r(   r)   r*   r+   r,   rP   r-   ro   r.   s               r%   create_threadz AzureAssistantsAPI.create_thread  r[   r&   c                      y r    r4   rq   s               r%   rr   z AzureAssistantsAPI.create_thread  r[   r&   c                    |
|
du r| j                  ||||||||	||
      S | j                  |||||||	|      }i }|||d<   |||d<    |j                  j                  j                  di |}t        di |j                         S )a-  
        Here's an example:
        ```
        from litellm.llms.openai.openai import OpenAIAssistantsAPI, MessageData

        # create thread
        message: MessageData = {"role": "user", "content": "Hey, how's it going?"}
        openai_api.create_thread(messages=[message])
        ```
        T)
rj   r'   r(   r)   r*   r+   r,   r-   rP   r.   r=   rP   rj   r4   )rn   r9   r>   rO   rQ   r   rS   )r#   rj   r'   r(   r)   r*   r+   r,   rP   r-   ro   r.   r8   rl   rm   s                  r%   rr   z AzureAssistantsAPI.create_thread  s    0 %.D*@++!!'-'!- ,   #33#)#) 4 	
 'D'D@,1199@@H4H.++-..r&   c
           
         K   | j                  ||||||||	      }
|
j                  j                  j                  |       d {   }t	        di |j                         S 7 w)Nr=   r_   r4   )r;   r>   rO   retriever   rS   r`   s               r%   async_get_threadz#AzureAssistantsAPI.async_get_thread  ss      33#)#) 4 	
 '++33<<y<QQ((( Rs   AA%A#A%aget_threadc                      y r    r4   r#   rJ   r'   r(   r)   r*   r+   r,   r-   rx   r.   s              r%   
get_threadzAzureAssistantsAPI.get_thread:  rf   r&   c                      y r    r4   rz   s              r%   r{   zAzureAssistantsAPI.get_threadJ  rf   r&   c                     |	|	du r| j                  |||||||||
	      S | j                  ||||||||
      }|j                  j                  j	                  |      }t        di |j                         S )NTri   r=   r_   r4   )rw   r9   r>   rO   rv   r   rS   )r#   rJ   r'   r(   r)   r*   r+   r,   r-   rx   r.   rT   rA   s                r%   r{   zAzureAssistantsAPI.get_thread\  s     "{d':((#!'-'- ) 
 
 --#)#) . 	
 !%%--666K(((r&   assistant_idadditional_instructionsinstructionsmodelstreamtoolsc           
         K   | j                  |	|
||||||      }|j                  j                  j                  j	                  |||||||       d {   }|S 7 w)N)r'   r(   r+   r,   r)   r*   r-   r.   rJ   r~   r   r   rj   r   r   )r;   r>   rO   runscreate_and_poll)r#   rJ   r~   r   r   rj   r   r   r   r'   r(   r)   r*   r+   r,   r-   r.   rT   rA   s                      r%   arun_threadzAzureAssistantsAPI.arun_thread  s     & 33##)) 4 	
 '++3388HH%$;% I 
 
 
s   AAAAevent_handlerc                     |||||||d}|	|	|d<    |j                   j                  j                  j                  di |S Nr   r   r4   r>   rO   r   r   r#   r-   rJ   r~   r   r   rj   r   r   r   r.   rl   s               r%   async_run_thread_streamz*AzureAssistantsAPI.async_run_thread_stream  X     #('>(  
 $$1D!.v{{""''..666r&   c                     |||||||d}|	|	|d<    |j                   j                  j                  j                  di |S r   r   r   s               r%   run_thread_streamz$AzureAssistantsAPI.run_thread_stream  r   r&   r   c                      y r    r4   r#   rJ   r~   r   r   rj   r   r   r   r'   r(   r)   r*   r+   r,   r-   r   s                    r%   
run_threadzAzureAssistantsAPI.run_thread      ( 	r&   c                      y r    r4   r   s                    r%   r   zAzureAssistantsAPI.run_thread  r   r&   c                    |_|du r[|8|du r4| j                  |	|
||||||      }| j                  ||||||||||
      S | j                  |||||||||	|
||||||      S | j                  |	|
||||||      }||du r| j	                  ||||||||||
      S |j
                  j                  j                  j                  |||||||      }|S )NTr=   )
r-   rJ   r~   r   r   rj   r   r   r   r.   )rJ   r~   r   r   rj   r   r   r   r'   r(   r)   r*   r+   r,   r-   r.   r   )	r;   r   r   r9   r   r>   rO   r   r   )r#   rJ   r~   r   r   rj   r   r   r   r'   r(   r)   r*   r+   r,   r-   r   r   r.   azure_clientrT   rA   s                         r%   r   zAzureAssistantsAPI.run_thread  s   * "{d':!fn#::#% +#1# +!#1  ; 	  33''!-,C!-%"/#1 4   ###)(?)!!'-'-! $  $ --#)#) . 	
 &D.))$#)(?)!+- *   !%%--22BB%$;% C 
 r&   create_assistant_datac
           
         K   | j                  ||||||||	      }
 |
j                  j                  j                  di | d {   }|S 7 w)Nr=   r4   )r;   r>   r?   rQ   )r#   r'   r(   r)   r*   r+   r,   r-   r   r.   r8   rA   s               r%   async_create_assistantsz*AzureAssistantsAPI.async_create_assistants|  sq      #99#)#) : 	
 D,11<<CC 
#
 
 
   AAAAc                     |	|	du r| j                  |||||||||
	      S | j                  ||||||||
      } |j                  j                  j                  di |}|S )NT)	r'   r(   r)   r*   r+   r,   r-   r   r.   r=   r4   )r   r9   r>   r?   rQ   )r#   r'   r(   r)   r*   r+   r,   r   r-   r   r.   r8   rA   s                r%   create_assistantsz$AzureAssistantsAPI.create_assistants  s     #.3Jd3R//!'-'&;- 0 
 
 #33#)#) 4 	
 >&++66==V@UVr&   c
           
         K   | j                  ||||||||	      }
|
j                  j                  j                  |       d {   }|S 7 w)Nr=   r~   )r;   r>   r?   delete)r#   r'   r(   r)   r*   r+   r,   r-   r~   r.   r8   rA   s               r%   async_delete_assistantz)AzureAssistantsAPI.async_delete_assistant  sn      #99#)#) : 	
 -11<<CC% D 
 
 
r   async_delete_assistantsc                     ||du r| j                  |||||||	||
	      S | j                  |||||||	|
      }|j                  j                  j	                  |      }|S )NT)	r'   r(   r)   r*   r+   r,   r-   r~   r.   r=   r   )r   r9   r>   r?   r   )r#   r'   r(   r)   r*   r+   r,   r~   r   r-   r.   r8   rA   s                r%   delete_assistantz#AzureAssistantsAPI.delete_assistant  s     #.3Jd3R..!'-')- / 
 
 #33#)#) 4 	
 '++66==<=Xr&   )r   N)NNr    )NNN)NNNN)5__name__
__module____qualname__r"   r   strr	   floathttpxTimeoutintr   rS   r9   r
   r;   r   r   rB   r   r   r   rF   r   r   rW   rZ   boolra   re   r   r   r   rn   rr   rw   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r$   s   @r%   r   r      s<    )-)-### 3-# c]	#
 !# uemm+,# c]# %# !# 
#D .2)-### 3-# c]	#
 !# uemm+,# c]# )*# !# 
#N *.# 3- c]	
 ! uemm+, c] )* ! 
	#8 # 3- c]	
 ! uemm+, c] )* ! 
4y99	:  # 3- c]	
 ! uemm+, c] % "'%.1 
		" . )-$#$ 3-$ c]	$
 !$ uemm+,$ c]$ !$d .2)-"" " #	"
 3-" c]" !" uemm+," c]" )*" !" 
"L  *.  #	
 3- c] ! uemm+, c] )* t} ! 
4},	-    *.  #	
 3- c] ! uemm+, c] %  / ! 
 8 (,)-00 0 #	0
 3-0 c]0 !0 uemm+,0 c]0  ~0 !0v .2)- # 3-	
 c] ! uemm+, c] )* ! 
	':  *. # 3-	
 c] ! uemm+, c] )* t} ! 
4}==	>   *. # 3-	
 c] ! uemm+, c] %  / ! 
	& 4 )-&& #& 3-	&
 c]& !& uemm+,& c]& !&j *. /4. / # / 3-	 /
 c] / ! / uemm+, / c] / )* / 8$CDE / ! / 
 /H  *.4. # 3-	
 c] ! uemm+, c] 8$CDE )*   ! 
4v%	&    *.4. # 3-	
 c] ! uemm+, c] 8$CDE % !0 ! 
 8 )-8/4.8/ #8/ 3-	8/
 c]8/ !8/ uemm+,8/ c]8/ 8$CDE8/ !8/H *.)) #) 3-	)
 c]) !) uemm+,) c]) )*) !) 
):  *. # 3-	
 c] ! uemm+, c] )* T] ! 
4v%	&   *. # 3-	
 c] ! uemm+, c] % gen- ! 
 4 )-&)&) #&) 3-	&)
 c]&) !&) uemm+,&) c]&) !&)| *.#(( ( "*#	(
 sm( 4.( }( ( !345( #( 3-( c]( !( uemm+,( c](  )*!(" !#($ 
%(j *.7 7 7 	7
 "*#7 sm7 4.7 }7 !3457   567 !7 
%%?	@7J *.77 7 	7
 "*#7 sm7 4.7 }7 !3457   567 !7 
  5	678   "*#	
 sm 4. }  !345 # 3- c] ! uemm+, c]  )*!" T]#$ 
4s?	#% *   "*#	
 sm 4. }  !345 # 3- c] ! uemm+, c]  %!" gen-#$ 
% N 9=)-'bb b "*#	b
 smb 4.b }b b !345b #b 3-b c]b !b uemm+,b c]b$   56%b& !'b^ *.# 3- c]	
 ! uemm+, c] )*  $ ! 
J  $)-%#% 3-% c]	%
 !% uemm+,% c]%  $% !%d *.# 3- c]	
 ! uemm+, c] )*  !J 37)-%#% 3-% c]	%
 !% uemm+,% c]% % "*$% !%r&   r   )typingr   r   r   r   r   r   r	   r   openair
   r   typing_extensionsr   types.llms.openair   r   r   r   r   r   r   r   r   r   r   r   common_utilsr   r   r4   r&   r%   <module>r      s>    K K K  0 &    'i ir&   