
    gw                         d dl 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)    )	CoroutineIterableLiteralOptionalUnionN)AsyncAzureOpenAIAzureOpenAI)overload   )	AssistantAssistantEventHandlerAssistantStreamManagerAssistantToolParamAsyncAssistantEventHandlerAsyncAssistantStreamManagerAsyncCursorPageOpenAICreateThreadParamsMessageOpenAIMessageRunSyncCursorPageThread   )BaseLLMc            &           e Zd Zd@ fdZ	 dAd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fdZ	 dAd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fdZ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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	 	 dBdee   dee   dee   dee   deeej                  f   d	ee
   fdZ	 dAd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fdZed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ddef   fd       Zed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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   fdZ	 dAd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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ddee   f   fd       Z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   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
   fdZd 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 fd"Z!ed 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dde f   fd$       Z"ed 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 fd%       Z"	 	 dBd 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      fd&Z"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 fd'Z#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dde f   fd)       Z$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 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
   fd+Z$ded,ed-ee   d.ee   d ee%   d/ee   d0ee   d1e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'f d2Z(d
eded,ed-ee   d.ee   d ee%   d/ee   d1eee&      d3ee)   de*e+   fd4Z,d
eded,ed-ee   d.ee   d ee%   d/ee   d1eee&      d3ee)   de-e)   fd5Z.eded,ed-ee   d.ee   d ee%   d/ee   d0ee   d1e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   d6ed   dedde'f   f"d7       Z/eded,ed-ee   d.ee   d ee%   d/ee   d0ee   d1e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   d6eed      de'f"d8       Z/	 	 	 dCded,ed-ee   d.ee   d ee%   d/ee   d0ee   d1eee&      dee   dee   dee   dee   deeej                  f   d	ee
   d3ee)   fd9Z/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efd;Z0	 	 dBdee   dee   dee   dee   deeej                  f   d	ee
   d:efd<Z1d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fd=Z2	 	 dBd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?Z3 xZ4S )DAzureAssistantsAPIreturnNc                 "    t         |           y N)super__init__)self	__class__s    R/var/www/openai/venv/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clientc                     t               }|Gi }	|j                         D ]%  \  }
}|
dk(  s|
dk(  r|
dk(  r|||	d<   |!||	|
<   ' t        di |	}|S |}|S Nr!   r+   r&   azure_endpoint )localsitemsr	   r!   r%   r&   r'   r(   r)   r*   r+   received_argsdatakvazure_openai_clients                r#   get_azure_clientz#AzureAssistantsAPI.get_azure_client   s     >D%++-1;!x-*_-.D)*]DG . #."5"5 #" #)""r$   c                     t               }|Gi }	|j                         D ]%  \  }
}|
dk(  s|
dk(  r|
dk(  r|||	d<   |!||	|
<   ' t        di |	}|S |}|S r-   )r0   r1   r   r2   s                r#   async_get_azure_clientz)AzureAssistantsAPI.async_get_azure_client6   s     >D%++-1;!x-*_-.D)*]DG . #3":T":
 #" #)""r$   c           	         K   | j                  |||||||      }|j                  j                  j                          d {   }	|	S 7 w)Nr%   r&   r'   r(   r)   r*   r+   )r:   beta
assistantslist)
r!   r%   r&   r'   r(   r)   r*   r+   r7   responses
             r#   async_get_assistantsz'AzureAssistantsAPI.async_get_assistantsS   s]      #99#)# : 
 -11<<AACC Ds   A AA	Aaget_assistantsTc	                      y r   r/   	r!   r%   r&   r'   r(   r)   r*   r+   rB   s	            r#   get_assistantsz!AzureAssistantsAPI.get_assistantsm        	r$   Fc	                      y r   r/   rD   s	            r#   rE   z!AzureAssistantsAPI.get_assistants{   rF   r$   c	           	          ||du r| j                  |||||||      S | j                  |||||||      }	|	j                  j                  j	                         }
|
S )NTr<   )r%   r&   r(   r)   r*   r+   r'   )rA   r8   r=   r>   r?   )r!   r%   r&   r'   r(   r)   r*   r+   rB   r7   r@   s              r#   rE   z!AzureAssistantsAPI.get_assistants   s     &?d+B,,!'-' -   #33)## 4 
 '++66;;=r$   	thread_idmessage_datac
           	      H  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	completedr/   )	r:   r=   threadsmessagescreategetattrrL   r   dict)r!   rI   rJ   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"rV   c                      y r   r/   r!   rI   rJ   r%   r&   r'   r(   r)   r*   r+   rV   s              r#   add_messagezAzureAssistantsAPI.add_message        	r$   c                      y r   r/   rX   s              r#   rY   zAzureAssistantsAPI.add_message   rZ   r$   c                 l   |
|
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)	rI   rJ   r%   r&   r'   r(   r)   r*   r+   r<   rL   rM   r/   )
rV   r8   r=   rN   rO   rP   rQ   rL   r   rR   )r!   rI   rJ   r%   r&   r'   r(   r)   r*   r+   rV   rS   rT   rU   s                 r#   rY   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<   rI   )r:   r=   rN   rO   r?   r!   rI   r%   r&   r'   r(   r)   r*   r+   rS   r@   s              r#   async_get_messagesz%AzureAssistantsAPI.async_get_messages%  sg      33#)# 4 
 '++33<<AAIAVV Ws   AAAAaget_messagesc
                      y r   r/   
r!   rI   r%   r&   r'   r(   r)   r*   r+   ra   s
             r#   get_messageszAzureAssistantsAPI.get_messages@       	r$   c
                      y r   r/   rc   s
             r#   rd   zAzureAssistantsAPI.get_messagesO  re   r$   c
           
          |	|	du r| j                  ||||||||      S | j                  |||||||      }
|
j                  j                  j                  j                  |      }|S )NTrI   r%   r&   r'   r(   r)   r*   r+   r<   r^   )r`   r8   r=   rN   rO   r?   )r!   rI   r%   r&   r'   r(   r)   r*   r+   ra   rS   r@   s               r#   rd   zAzureAssistantsAPI.get_messages`  s     $$)>**#!'-' + 	 	 --#)# . 
 !%%--66;;i;Pr$   metadatarO   c
           	         K   | j                  |||||||      }
i }|	|	|d<   |||d<    |
j                  j                  j                  di | d {   }t	        di |j                         S 7 w)Nr<   rO   ri   r/   )r:   r=   rN   rP   r   rR   )r!   ri   r%   r&   r'   r(   r)   r*   r+   rO   rS   r4   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A4A2A4acreate_threadc                      y r   r/   r!   ri   r%   r&   r'   r(   r)   r*   rO   r+   rm   s              r#   create_threadz AzureAssistantsAPI.create_thread  rZ   r$   c                      y r   r/   ro   s              r#   rp   z AzureAssistantsAPI.create_thread  rZ   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)	ri   r%   r&   r'   r(   r)   r*   r+   rO   r<   rO   ri   r/   )rl   r8   r=   rN   rP   r   rR   )r!   ri   r%   r&   r'   r(   r)   r*   rO   r+   rm   r7   r4   rk   s                 r#   rp   z AzureAssistantsAPI.create_thread  s    . %.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^   r/   )r:   r=   rN   retriever   rR   r_   s              r#   async_get_threadz#AzureAssistantsAPI.async_get_thread  sp      33#)# 4 
 '++33<<y<QQ((( Rs   AA$A"A$aget_threadc
                      y r   r/   
r!   rI   r%   r&   r'   r(   r)   r*   r+   rv   s
             r#   
get_threadzAzureAssistantsAPI.get_thread  re   r$   c
                      y r   r/   rx   s
             r#   ry   zAzureAssistantsAPI.get_thread,  re   r$   c
           
          |	|	du r| j                  ||||||||      S | j                  |||||||      }
|
j                  j                  j	                  |      }t        di |j                         S )NTrh   r<   r^   r/   )ru   r8   r=   rN   rt   r   rR   )r!   rI   r%   r&   r'   r(   r)   r*   r+   rv   rS   r@   s               r#   ry   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+   rI   r|   r}   r~   ri   r   r   )r:   r=   rN   runscreate_and_poll)r!   rI   r|   r}   r~   ri   r   r   r   r%   r&   r'   r(   r)   r*   r+   rS   r@   s                     r#   arun_threadzAzureAssistantsAPI.arun_threadg  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   r/   r=   rN   r   r   r!   r+   rI   r|   r}   r~   ri   r   r   r   r4   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   r/   r!   rI   r|   r}   r~   ri   r   r   r   r%   r&   r'   r(   r)   r*   r+   r   s                    r#   
run_threadzAzureAssistantsAPI.run_thread      ( 	r$   c                      y r   r/   r   s                    r#   r   zAzureAssistantsAPI.run_thread  r   r$   c                    |\|du rX|6|du r2| j                  |	|
|||||      }| j                  |||||||||	      S | j                  |||||||||	|
|||||      S | j                  |	|
|||||      }||du r| j	                  |||||||||	      S |j
                  j                  j                  j                  |||||||      }|S )NTr<   )	r+   rI   r|   r}   r~   ri   r   r   r   )rI   r|   r}   r~   ri   r   r   r   r%   r&   r'   r(   r)   r*   r+   r   )	r:   r   r   r8   r   r=   rN   r   r   )r!   rI   r|   r}   r~   ri   r   r   r   r%   r&   r'   r(   r)   r*   r+   r   r   azure_clientrS   r@   s                        r#   r   zAzureAssistantsAPI.run_thread  sv   ( "{d':!fn#::#% +#1# +!  ;   33''!-,C!-%"/ 4 
 
 ###)(?)!!'-' $  " --#)# . 
 &D.))$#)(?)!+ * 
 
 !%%--22BB%$;% C 
 r$   create_assistant_datac	           	         K   | j                  |||||||      }	 |	j                  j                  j                  di | d {   }
|
S 7 w)Nr<   r/   )r:   r=   r>   rP   )r!   r%   r&   r'   r(   r)   r*   r+   r   r7   r@   s              r#   async_create_assistantsz*AzureAssistantsAPI.async_create_assistantsP  sn      #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/   )r   r8   r=   r>   rP   )r!   r%   r&   r'   r(   r)   r*   r   r+   r   r7   r@   s               r#   create_assistantsz$AzureAssistantsAPI.create_assistantsj  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|   r7   r@   s              r#   async_delete_assistantz)AzureAssistantsAPI.async_delete_assistant  sk      #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   r8   r=   r>   r   )r!   r%   r&   r'   r(   r)   r*   r|   r   r+   r7   r@   s               r#   delete_assistantz#AzureAssistantsAPI.delete_assistant  s     #.3Jd3R..!'-') / 	 	 #33#)# 4 
 '++66==<=Xr$   )r   Nr   )NN)NNN)5__name__
__module____qualname__r    r   strr   floathttpxTimeoutintr	   r8   r   r:   r   r   rA   r
   r   r   rE   r   rR   r   rV   rY   boolr`   rd   r   r   r   rl   rp   ru   ry   objectr   r   r   r   r   r   r   r   r   r   r   r   r   r   __classcell__)r"   s   @r#   r   r      sC    )-### 3-# c]	#
 !# uemm+,# c]# %# 
#D .2### 3-# c]	#
 !# uemm+,# c]# )*# 
#:# 3- c]	
 ! uemm+, c] )* 
	#4 # 3- c]	
 ! uemm+, c] )* ! 
4y99	:  # 3- c]	
 ! uemm+, c] % "'%.1 
		" . !#! 3-! c]	!
 !! uemm+,! c]!^ .2     #	 
 3-  c]  !  uemm+,  c]  )*  
 H   #	
 3- c] ! uemm+, c] )* t} 
4},	-    #	
 3- c] ! uemm+, c] %  / 
 6 (,-- - #	-
 3-- c]- !- uemm+,- c]-  ~-p .2 # 3-	
 c] ! uemm+, c] )* 
	'6  # 3-	
 c] ! uemm+, c] )* t} 
4}==	>   # 3-	
 c] ! uemm+, c] %  / 
	& 2 ## ## 3-	#
 c]# !# uemm+,# c]#N/4./ #/ 3-	/
 c]/ !/ uemm+,/ c]/ )*/ 8$CDE/ 
/D 4. # 3-	
 c] ! uemm+, c] 8$CDE )*   
4v%	&  4. # 3-	
 c] ! uemm+, c] 8$CDE % !0 
 6 5/4.5/ #5/ 3-	5/
 c]5/ !5/ uemm+,5/ c]5/ 8$CDE5/n)) #) 3-	)
 c]) !) uemm+,) c]) )*) 
)6  # 3-	
 c] ! uemm+, c] )* T] 
4v%	&   # 3-	
 c] ! uemm+, c] % gen- 
 2 #)#) ##) 3-	#)
 c]#) !#) uemm+,#) c]#)T&& & "*#	&
 sm& 6"& }& & !345& #& 3-& c]& !& uemm+,& c]&  )*!&" 
#&P7 7 7 	7
 "*#7 sm7 6"7 }7 !3457   567 
%%?	@7277 7 	7
 "*#7 sm7 6"7 }7 !3457   567 
  5	676   "*#	
 sm 6" }  !345 # 3- c] ! uemm+, c]  )*!" T]#$ 
4s?	#% *   "*#	
 sm 6" }  !345 # 3- c] ! uemm+, c]  %!" gen-#$ 
% N 9=%\\ \ "*#	\
 sm\ 6"\ }\ \ !345\ #\ 3-\ c]\ !\ uemm+,\ c]\$   56%\~# 3- c]	
 ! uemm+, c] )*  $ 
F  $"#" 3-" c]	"
 !" uemm+," c]"  $"J# 3- c]	
 ! uemm+, c] )* F 37"#" 3-" c]	"
 !" uemm+," c]" " "*$"r$   r   )typingr   r   r   r   r   r   openair   r	   typing_extensionsr
   types.llms.openair   r   r   r   r   r   r   r   r   r   r   r   baser   r   r/   r$   r#   <module>r      s;    @ @  0 &    s sr$   