
    h&              &       
   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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#Z0	 d=ded   dee   defd$Z1	 	 	 	 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&Z2ded   de3fd'Z4	 	 	 	 d>ded   d(ee	e5      dee6   dee7   dee   de3fd)Z8	 d=ded   d*e+dee   de3fd+Z9	 d=ded   d*e+de3fd,Z:	 	 	 d@ded   d*e+d-ed.   d/e+d0ee
e;      dee6   de<fd1Z=	 	 	 d@ded   d*e+d-ed.   d/e+d0ee
e;      dee6   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eA   deBeC   fd7ZD	 	 	 	 	 	 	 dAded   d*e+d%e+d8ee+   dee+   dee6   dee+   d9eeE   dee	eF      dee   deGfd:ZHdd5d6eeA   deIeA   fd;ZJ	 	 	 	 	 	 	 	 dBded   d*e+d%e+d8ee+   dee+   dee6   dee+   d9eeE   dee	eF      dee   d6eeA   deGfd<ZKy)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                   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              S/var/www/Befach/backend/env/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|}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sB t        j                  xs0 t        j                   d	      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      }|j0                  xs t        j0                  xs t/        d      }|j$                  xs< t        j$                  xs* t        j2                  xs t/        d      xs t/        d      }|j                  di       }d }||j                  dd       }nt/        d      }t4        j+                  |||||	|j,                  |||	      }n]t        j6                  j9                  dj;                  |       d| t        j<                  ddt        j>                  dd                   |]t        j6                  j9                  dj;                  |       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_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>   r@   rS   rK   rL   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   rK   gethttpxTimeoutr   readfloatr?   litellmosgetenvrM   r>   
openai_keyopenai_assistants_apir,   rL   r   r@   	azure_keyazure_assistants_api
exceptionsBadRequestErrorformatResponseRequest)r   r   r>   r?   r@   r4   r"   optional_paramslitellm_params_dictrK   read_timeoutr;   rM   rR   rS   s                  r=   r,   r,   J   s    '-jj1BD&IO":ot+LT
 	
 + (GMO -6v6 %%R4Es)KRsG 	w."#675@||*s		Z%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                   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+   rf   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(*=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                 R   |j                  dd       }|t        |t              st        d      t	        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
}|j                         D ci c]  \  }}|	|| }}}d }| d	k(  r|j                  xsB t        j                  xs0 t!        j"                  d
      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.                  ||||      }ns| dk(  r|j                  xs t        j                  xs t1        d      }|j2                  xs t        j2                  xs t1        d      }|j&                  xs< t        j&                  xs* t        j4                  xs t1        d      xs t1        d      }|j                  di       }d }||j                  dd       }nt1        d      }t        |t6              rd }t8        j-                  ||||||j.                  ||||
      }n]t        j:                  j=                  dj?                  |       d| t        j@                  ddt        jB                  dd             !      |"t        j:                  jE                  d"|| #      |S c c}}w )%Nr   zNInvalid value passed in for async_create_assistants. Only bool or None allowedrB   rC   rD   FrE   )
r%   r   r   r   r   r   r   r   r   r   r   rF   rG   rH   rI   rJ   )r?   r>   rK   rL   rM   create_assistant_datar   r   r   rN   rO   rP   rQ   rR   rS   rT   )
r?   r>   rS   r@   rK   rL   r   r   r   rU   zOLiteLLM doesn't support {} for 'create_assistants'. Only 'openai' is supported.rV   rW   rX   rY   rZ   r[   r^   rb   z-No response returned from 'create_assistants'rc   r%   rd   re   )#rf   rg   rh   
ValueErrorr   r   rK   ri   rj   rk   r   rl   rm   itemsr?   rn   ro   rp   rM   r>   rq   rr   r   rL   r   r@   rs   r   rt   ru   rv   rw   rx   ry   InternalServerError)r   r%   r   r   r   r   r   r   r   r   r   r   r>   r?   r@   r4   r   rz   r{   rK   r|   r   kvr;   rM   rR   rS   s                               r=   r   r      s   $ /5jj!4/ *:4 \
 	
 + (GMO -6v6 %%R4Es)KRsG 	w."#675@||*s		Z%G.	 "$("* /446A!-1  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   6
N#N#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   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'B2 B.B2 #B0$B2 )C*B2 -C.B2 0B2 2	C;CCCassistant_idc                    t        d#|||d|}t        d#i |}|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sB t        j                  xs0 t        j                   d	      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,                  ||||	      }ns| dk(  r|j                  xs t        j                  xs t/        d      }|j0                  xs t        j0                  xs t/        d      }|j$                  xs< t        j$                  xs* t        j2                  xs t/        d      xs t/        d      }|j                  di       }d }||j                  dd       }nt/        d      }t        |t4              rd }t6        j+                  ||||||
|j,                  ||	|
      }n]t        j8                  j;                  dj=                  |       d| t        j>                  ddt        j@                  dd                   |"t        j8                  jC                  d!d| "      |S )$NrB   r   zNInvalid value passed in for async_delete_assistants. Only bool or None allowedrC   rD   FrE   r   rF   rG   rH   rI   rJ   )r?   r>   rK   rL   rM   r   r   r   r   rN   rO   rP   rQ   rR   rS   rT   )
r   r?   r>   rS   r@   rK   rL   r   r   rU   zNLiteLLM doesn't support {} for 'delete_assistant'. Only 'openai' is supported.rV   rW   rX   r   rZ   r[   r^   rb   z,No response returned from 'delete_assistant'r   re   )"r   r   rf   rg   rh   r   rK   ri   rj   rk   r   rl   rm   r?   rn   ro   rp   rM   r>   rq   rr   r   rL   r   r@   rs   r   rt   ru   rv   rw   rx   ry   r   )r   r   r   r>   r?   r@   r4   rz   r{   r   rK   r|   r;   rM   rR   rS   s                   r=   r   r     s    + (GMO -6v6.4jj!4/ *:4 \
 	

 %%R4Es)KRsG 	w."#675@||*s		Z%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                   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   rY   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  
 	

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 |}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sB t        j                  xs0 t        j                  d      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	        |t0              rd}t2        j%                  |||||||	|j&                  |||      }|S t        j4                  j7                  dj9                  |       d| t        j:                  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   NrC   rD   FrE   r   rF   rG   rH   rI   rJ   )	r   r   r?   r>   rK   rL   rM   r   r   r   rN   rP   rQ   rO   rR   rS   rT   )r   r   r?   r>   rS   r@   rK   rL   r   r   rU   KLiteLLM doesn't support {} for 'create_thread'. Only 'openai' is supported.rV   rW   rX   rY   rZ   r[   r^   rb   re   )ri   r   r   rK   rg   rj   rk   r   rl   rm   r?   rn   ro   rp   rM   r>   rq   rr   rY   rL   r   rs   r@   rf   r   rt   ru   rv   rw   rx   ry   )r   r   r   r   r   r4   r   rz   r{   rK   r|   r?   r>   r;   rM   r@   rR   rS   s                     r=   rY   rY   r  sX   < ZZ 0$7N*4V4O,6v6 %%R4Es)KRsG 	w."#675@||*s		Z%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                   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   r0   r1   r2   r   r   r   r   r4   r5   r6   r7   r8   r9   r:   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 |}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sB t        j                  xs0 t        j                  d      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        |t0              rd}t2        j'                  ||	|
||||j(                  |||
      }|S t        j4                  j7                  dj9                  |       d| t        j:                  ddt        j<                  dd                  )!z(Get the thread object, given a thread_idr   NrC   rD   FrE   r   rF   rG   rH   rI   rJ   )r   r?   r>   rK   rL   rM   r   r   r   rN   rO   rP   rQ   rR   rS   rT   )
r   r?   r>   rS   r@   rK   rL   r   r   rU   zHLiteLLM doesn't support {} for 'get_thread'. Only 'openai' is supported.rV   rW   rX   rY   rZ   r[   r^   rb   re   )rf   r   r   rK   ri   rg   rj   rk   r   rl   rm   r?   rn   ro   rp   rM   r>   rq   rr   r   rL   r   r@   rs   r   rt   ru   rv   rw   rx   ry   )r   r   r   r4   r   rz   r{   rK   r|   r?   r>   r;   rM   r@   rR   rS   s                   r=   r   r   (  sO    **]D1K*4V4O,6v6%%R4Es)KRsG 	w."#675@||*s		Z%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	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   r0   r1   r2   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(B3 B/B3 $B1%B3 *C+B3 .C/B3 1B3 3	C<CCCc                    |j                  dd       }t        ||||      }	t        d%i |}
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sB t        j                  xs0 t        j                   d      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      }|j0                  xs t        j0                  xs t/        d      }|j$                  xs< t        j$                  xs* t        j2                  xs t/        d      xs t/        d      }|j                  di       }d }||j                  dd       }nt/        d      }t4        j+                  ||||||||j,                  |||
      }|S t        j6                  j9                  dj;                  |       d| t        j<                  ddt        j>                  d d!"      #      $      )&Nr   )r   r`   r   r   r   r`   r   r   )r   r`   r   r   r   rC   rD   FrE   r   rF   rG   rH   rI   rJ   )	r   message_datar?   r>   rK   rL   rM   r   r   r   rN   rO   rP   rQ   rR   rS   rT   )r   r   r?   r>   r@   rS   rK   rL   r   r   rU   r   rV   rW   rX   rY   rZ   r[   r^   rb   re   ) rf   MessageDatar   r   r   rK   ri   rg   rj   rk   r   rl   rm   r?   rn   ro   rp   rM   r>   rq   rr   r   rL   r   r@   rs   rt   ru   rv   rw   rx   ry   )r   r   r   r`   r   r   r   r4   r   _message_datar{   rz   r   rK   r|   r>   r?   r;   rM   r@   rR   rS   s                         r=   r   r     s    JJ5M7hM -6v6*4V4O26"i(!-0z*/L %%R4Es)KRsG 	w."#675@||*s		Z%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                   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   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  
 	

r   c                 6   |j                  dd       }t        di |}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sB t        j                  xs0 t        j                  d      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      }t0        j'                  |||
||||j(                  |||
      }	|	S t        j2                  j5                  dj7                  |       d| t        j8                  ddt        j:                  dd                  ) Nr   rC   rD   FrE   r   rF   rG   rH   rI   rJ   )r   r?   r>   rK   rL   rM   r   r   r   rN   rO   rP   rQ   rR   rS   rT   )
r   r?   r>   r@   rS   rK   rL   r   r   rU   zJLiteLLM doesn't support {} for 'get_messages'. Only 'openai' is supported.rV   rW   rX   rY   rZ   r[   r^   rb   re   )rf   r   r   rK   ri   rg   rj   rk   r   rl   rm   r?   rn   ro   rp   rM   r>   rq   rr   r   rL   r   r@   rs   rt   ru   rv   rw   rx   ry   )r   r   r   r4   r   rz   r{   rK   r|   r;   r>   r?   rM   r@   rR   rS   s                   r=   r   r     sB    JJ5M*4V4O,6v6 %%R4Es)KRsG 	w."#675@||*s		Z%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                 (    d|d<   t        dd| d|S )NTarun_threadstreamr   re   
run_threadr   r4   s     r=   arun_thread_streamr     s#    
 !F=ITI&IIr}   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   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+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   re   r   r   s     r=   run_thread_streamr   >  s    
 ITI&IIr}   c                    |j                  dd      }t        d i |}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sB t        j                  xs0 t        j                  d      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      }t0        j'                  |||||||||t3        |      nd|t3        |      nd|t3        |      nd|t3        |      nd||j(                  |	||      }|S t        j4                  j7                  dj9                  |       d| t        j:                  ddt        j<                  dd                  )!zRun a given thread + assistant.r   NrC   rD   FrE   r   rF   rG   rH   rI   rJ   )r   r   r   r   r   r%   r   r   r?   r>   rK   rL   rM   r   r   r   r   rN   rO   rP   rQ   rR   rS   rT   )r   r   r   r   r   r%   r   r   r?   r>   r@   rS   rK   rL   r   r   rU   zHLiteLLM doesn't support {} for 'run_thread'. Only 'openai' is supported.rV   rW   rX   rY   rZ   r[   r^   rb   re   )rf   r   r   rK   ri   rg   rj   rk   r   rl   rm   r?   rn   ro   rp   rM   r>   rq   rr   r   rL   r   r@   rs   rt   strru   rv   rw   rx   ry   )r   r   r   r   r   r   r%   r   r   r   r   r4   r   rz   r{   rK   r|   r;   r?   rM   r>   r@   rR   rS   s                           r=   r   r   F  s    **]D1K*4V4O,6v6 %%R4Es)KRsG 	w."#675@||*s		Z%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-   ro   	functoolsr   typingr   r   r   r   r   r	   r
   r   rj   r   r   r   openai.types.beta.assistantr   #openai.types.beta.assistant_deletedr   rn   litellm.types.routerr   litellm.utilsr   r   r   r   r   llms.azure.assistantsr   llms.openai.openair   types.llms.openaitypes.routerutilsr   rr   rt   AsyncCursorPager"   r   SyncCursorPager,   r   rm   r   r   r   Threadr   OpenAICreateThreadParamsMessagedict%OpenAICreateThreadParamsToolResourcesrY   r   r   
AttachmentOpenAIMessager   r   r   r   AssistantEventHandlerAsyncAssistantStreamManagerAsyncAssistantEventHandlerr   rh   AssistantToolParamRunr   AssistantStreamManagerr   r   re   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}   