
    i                     
   d Z 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 ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z&  e       Z'	 d2dee
e!      fdZ(	 d2dee   fdZ)e$	 	 	 	 	 	 	 	 	 	 d3dee*   dee
e*      dee	   dee	   dee	e*e*f      dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   defd       Z-e$	 	 	 	 	 	 	 	 	 	 d3dee*   dee
e*      dee	   dee	   dee	e*e*f      dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   deeeeeef   f   fd       Z.e$	 	 	 	 	 	 	 	 	 d4de*dee*e
e*   f   d ee	   d!ee/   d"ee	   d#ee0   dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   de fd$       Z1e$	 	 	 	 	 	 	 	 	 d4de*dee*e
e*   f   d ee	   d!ee/   d"ee	   d#ee0   dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   dee eeee f   f   fd%       Z2e$	 	 	 	 	 d5de*dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   defd&       Z3e$	 	 	 	 	 d5de*dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   deeeeeef   f   fd'       Z4e$	 	 	 	 	 	 	 	 	 d6d(ee*   d)ee*   d*ee/   d+ee*   dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   fd,       Z5e$	 	 	 	 	 	 	 	 	 d6d(ee*   d)ee*   d*ee/   d+ee*   dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   fd-       Z6e$	 	 	 	 	 	 	 	 d7de*dee*   dee	   dee	e*e*f      dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   defd.       Z7e$	 	 	 	 	 	 	 	 d7de*dee*   dee	   dee	e*e*f      dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   deeeeeef   f   fd/       Z8e$	 	 	 	 	 d5de*dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   fd0       Z9e$	 	 	 	 	 d5de*dee	e*ef      dee	e*ef      dee	e*ef      deee+ejX                  f      dee*   fd1       Z:y)8z@
LiteLLM SDK Functions for Creating and Searching Vector Stores
    N)partial)Any	CoroutineDictListOptionalUnion)request_timeout)get_llm_provider)Logging)BaseLLMHTTPHandler)GenericLiteLLMParams)&VectorStoreCreateOptionalRequestParamsVectorStoreCreateResponseVectorStoreFileCountsVectorStoreResultContent&VectorStoreSearchOptionalRequestParamsVectorStoreSearchResponseVectorStoreSearchResult)ProviderConfigManagerclient)VectorStoreRequestUtilsmock_resultsc                 V    | t        dt        dd      g      g} t        dd|       S )	z%Mock response for vector store searchgffffff?z5This is a sample search result from the vector store.text)r   type)scorecontentz vector_store.search_results.pagezsample query)objectsearch_querydata)r   r   r   r   s    k/Users/manta/Documents/Projects/TheRoad-I1/.venv/lib/python3.12/site-packages/litellm/vector_stores/main.py!mock_vector_store_search_responser$   %   sG     #,T#

 %1#     mock_responsec                 R    | $t        dddddt        ddddd      ddddd	      } | S )
z%Mock response for vector store createN
vs_mock123vector_storeiEezMock Vector Storer   )in_progress	completedfailed	cancelledtotalr+   )idr   
created_atnamebytesfile_countsstatusexpires_after
expires_atlast_active_atmetadata)r   r   r&   s    r#   !mock_vector_store_create_responser:   =   sS     1!!$- #
( r%   r1   file_idsr5   chunking_strategyr8   extra_headersextra_query
extra_bodytimeoutcustom_llm_providerreturnc
                   K   t               }	 t        j                         }d|
d<   |	d}	t        t        f| |||||||||	d
|
}t        j                         }t        |j                  |      }|j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d|	|||
      d}~ww xY ww)z'
    Async: Create a vector store.
    TacreateNopenai)
r1   r;   r5   r<   r8   r=   r>   r?   r@   rA   modelrA   original_exceptioncompletion_kwargsextra_kwargs)localsasyncioget_event_loopr   createcontextvarscopy_contextrunrun_in_executoriscoroutine	Exceptionlitellmexception_type)r1   r;   r5   r<   r8   r=   r>   r?   r@   rA   kwargs
local_varsloopfuncctxfunc_with_contextinit_responseresponsees                      r#   rD   rD   Y   s    ( J(
%%' y &"*
'/'#! 3
 
 &&(#CGGT2"2249JKK}-**H  %H L +
  
$$ 3 (
 	

sY   CA7B3 B/B3 $B1%B3 *C+B3 .C/B3 1B3 3	C<CCCc
                 $   t               }	 |
j                  d      }|
j                  dd      }|
j                  dd      du }t        di |
}|j                  r9t        |j                  t              rt        t        di |j                        S |	d}	d	|	v rt        |	dd
      \  }}	}}nd}|	}	t        j                  t        j                  |	      |      }|t        d|	       |j                  |
       t!        j"                  |      }|j%                  |
dd| i|d|i|	       t&        j)                  |||	|||||xs t*        ||
j                  d      
      }|S # t,        $ r}t        j.                  d|	|||
      d}~ww xY w)a  
    Create a vector store.

    Args:
        name: The name of the vector store.
        file_ids: A list of File IDs that the vector store should use.
        expires_after: The expiration policy for the vector store.
        chunking_strategy: The chunking strategy used to chunk the file(s).
        metadata: Set of 16 key-value pairs that can be attached to an object.

    Returns:
        VectorStoreCreateResponse containing the created vector store details.
    litellm_logging_objlitellm_call_idNrD   FTr9   rE   /rG   rA   litellm_paramsproviderapi_typez)Vector store create is not supported for r1   rW   rG   optional_paramsre   rA   r   )
#vector_store_create_optional_paramsvector_store_provider_configrA   re   logging_objr=   r?   r@   	_is_asyncr   rF    )rK   getpopr   r&   
isinstancedictr:   r   r   r   !get_provider_vector_stores_configrU   LlmProviders
ValueErrorupdater   0get_requested_vector_store_create_optional_paramupdate_from_kwargsbase_llm_http_handlervector_store_create_handlerr
   rT   rV   )r1   r;   r5   r<   r8   r=   r>   r?   r@   rA   rW   rX   ra   rb   rn   re   rh   _rl   rk   r^   r_   s                         r#   rN   rN      s   < JW
17<Q1R)/4Et)LJJy%0D8	 .77 ''J(($-
 57W.:V:VW 
 &"*%%2B)$(#3/H)1a H"5 "CC --.AB! 	% (/;<O;PQ  	&! $TT 	, 	..5
 "? !4 	/ 	
 )DD0S)E 3)+'!.::h' E 
  
$$ 3 (
 	

s   BE' CE' '	F0F

Fvector_store_idqueryfiltersmax_num_resultsranking_optionsrewrite_queryc                   K   t               }	 t        j                         }d|d<   |
d}
t        t        f| |||||||||	|
d|}t        j                         }t        |j                  |      }|j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d|
|||      d}~ww xY ww)zg
    Async: Search a vector store for relevant chunks based on a query and file attributes filter.
    TasearchNrE   )r}   r~   r   r   r   r   r=   r>   r?   r@   rA   rF   )rK   rL   rM   r   searchrO   rP   rQ   rR   rS   rT   rU   rV   )r}   r~   r   r   r   r   r=   r>   r?   r@   rA   rW   rX   rY   rZ   r[   r\   r]   r^   r_   s                       r#   r   r     s    * J)
%%' y &"*
+++''#! 3
 
  &&(#CGGT2"2249JKK}-**H  %H L +
  
$$ 3 (
 	

sY   CA8B4 B0B4 %B2&B4 +C,B4 /C0B4 2B4 4	C=CCCc                    t               }	 |j                  d      }|j                  dd      }|j                  dd      du }|j                  d|       }t        j                  3|1	 t        j                  j                  |      }|j                  |       t        dd| i|}|j                  rht        |j                  t        t        j                  f      r>d}t        |j                  t        j                        r|j                  }t        |      S |
d	}
d
|
v rt        |
dd      \  }}
}}nd}|
}
t!        j"                  t        j$                  |
      |      }|t'        d|
       |j                  |       t)        j*                  ||      }|j-                  ||| |d||| d|j/                  d      |
       t0        j3                  | ||||
|||||	xs t4        ||j                  d            }|S # t        $ r Y yw xY w# t        $ r}t        j6                  d|
|||      d}~ww xY w)a[  
    Search a vector store for relevant chunks based on a query and file attributes filter.

    Args:
        vector_store_id: The ID of the vector store to search.
        query: A query string or array for the search.
        filters: Optional filter to apply based on file attributes.
        max_num_results: Maximum number of results to return (1-50, default 10).
        ranking_options: Optional ranking options for search.
        rewrite_query: Whether to rewrite the natural language query for vector search.

    Returns:
        VectorStoreSearchResponse containing the search results.
    ra   rb   Nr   FTr}   r"   rE   rc   rd   rf   z)Vector store search is not supported for )rl   )r}   r~   )rb   r}   )exclude_noneri   r   )r}   r~   #vector_store_search_optional_paramsrl   rA   re   rm   r=   r?   r@   rn   r   rF   ro   )rK   rp   rq   rU   vector_store_registry get_credentials_for_vector_storerw   rT   r   r&   rr   strbuiltinslistr$   r   r   rt   ru   rv   r   0get_requested_vector_store_search_optional_paramry   
model_dumprz   vector_store_search_handlerr
   rV   )r}   r~   r   r   r   r   r=   r>   r?   r@   rA   rW   rX   ra   rb   rn   vector_store_id_for_credentialsregistry_credentialsre   r   rh   r|   rl   r   r^   r_   s                             r#   r   r   U  s   @ Jn
17<Q1R)/4Et)LJJy%0D8	 +1**5F*X'))5/;11RR7 %
 23
 .XoXQWX ''J((3*>-
  L.66F-;;4,OO &"*%%2B)$(#3/H)1a H"5 "CC --.AB! 	% (/;<O;PQ  	&! $TT-I 	, 	..#2 6 $3#2 !+++>
 !4 	/ 	
  )DD+0S)E 3)+'!.::h' E 
 i  j  
$$ 3 (
 	

sD   AH (0H B H C+H 	HH HH 	H=H88H=c           
        K   t               }	 t        j                         }d|d<   |d}t        t        f| |||||d|}	t        j                         }
t        |
j                  |	      }|j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d||||      d}~ww xY ww)z)
    Async: Retrieve a vector store.
    T	aretrieveNrE   r}   r=   r>   r?   r@   rA   rF   )rK   rL   rM   r   retrieverO   rP   rQ   rR   rS   rT   rU   rV   r}   r=   r>   r?   r@   rA   rW   rX   rY   rZ   r[   r\   r]   r^   r_   s                  r#   r   r     s     J#
%%'"{&"*	
+'#! 3	
 	
 &&(#CGGT2"2249JKK}-**H  %H L +
  
$$ 3 (
 	

Y   CA3B/ B+B/  B-!B/ &C'B/ *C+B/ -B/ /	C8CCCc                 J   t               }	 |j                  d      }|j                  dd      }	|j                  dd      du }
t        di |}|d}d|v rt	        |dd	      \  }}}}nd}|}t        j                  t        j                  |      |
      }|t        d|       |j                  |dd| id|	i|       t        j                  | |||||||xs t        |
|j                  d      
      }|S # t        $ r}t        j                  d||||      d}~ww xY w)z
    Retrieve a vector store.

    Args:
        vector_store_id: The ID of the vector store to retrieve.

    Returns:
        VectorStoreCreateResponse containing the vector store details.
    ra   rb   Nr   FTrE   rc   rd   rf   z+Vector store retrieve is not supported for r}   ri   r   
r}   rl   rA   re   rm   r=   r?   r@   rn   r   rF   ro   )rK   rp   rq   r   r   r   rt   rU   ru   rv   ry   rz   vector_store_retrieve_handlerr
   rT   rV   r}   r=   r>   r?   r@   rA   rW   rX   ra   rb   rn   re   rh   r|   rl   r^   r_   s                    r#   r   r     s   & J=
17<Q1R)/4Et)LJJ{E2d:	-77&"*%%2B)$(#3/H)1a H"5 "CC --.AB! 	% (/=>Q=RS  	...@-? 3 	/ 	
 )FF+)E 3)+'!.::h' G 
  
$$ 3 (
 	

   C-C: :	D"DD"afterbeforelimitorderc	                   K   t               }
	 t        j                         }d|	d<   |d}t        t        f| ||||||||d	|	}t        j                         }t        |j                  |      }|j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d|||
|	      d}~ww xY ww)z$
    Async: List vector stores.
    TalistNrE   )	r   r   r   r   r=   r>   r?   r@   rA   rF   )rK   rL   rM   r   r   rO   rP   rQ   rR   rS   rT   rU   rV   )r   r   r   r   r=   r>   r?   r@   rA   rW   rX   rY   rZ   r[   r\   r]   r^   r_   s                     r#   r   r   o  s      J&
%%'w&"*
'#! 3
 
 &&(#CGGT2"2249JKK}-**H  %H L +
  
$$ 3 (
 	

Y   CA6B2 B.B2 #B0$B2 )C*B2 -C.B2 0B2 2	C;CCCc	                 V   t               }
	 |	j                  d      }|	j                  dd      }|	j                  dd      du }t        di |	}|d}d|v rt	        |dd	      \  }}}}nd}|}t        j                  t        j                  |      |
      }|t        d|       |j                  |	d| |||dd|i|       t        j                  | ||||||||||xs t        ||	j                  d            }|S # t        $ r}t        j                  d|||
|	      d}~ww xY w)a+  
    List vector stores.

    Args:
        after: A cursor for use in pagination.
        before: A cursor for use in pagination.
        limit: A limit on the number of objects to be returned.
        order: Sort order by the created_at timestamp.

    Returns:
        List of vector stores.
    ra   rb   Nr   FTrE   rc   rd   rf   z'Vector store list is not supported for )r   r   r   r   ri   r   )r   r   r   r   rl   rA   re   rm   r=   r?   r@   rn   r   rF   ro   )rK   rp   rq   r   r   r   rt   rU   ru   rv   ry   rz   vector_store_list_handlerr
   rT   rV   )r   r   r   r   r=   r>   r?   r@   rA   rW   rX   ra   rb   rn   re   rh   r|   rl   r^   r_   s                       r#   r   r     s   2 JE
17<Q1R)/4Et)LJJw.$6	-77&"*%%2B)$(#3/H)1a H"5 "CC --.AB! 	% (/9:M9NO  	.. 	 .? 3 	/ 	
 )BB)E 3)+'!.::h' C 
   
$$ 3 (
 	

s   C3D   	D(	D##D(c	                   K   t               }
	 t        j                         }d|	d<   |d}t        t        f| ||||||||d	|	}t        j                         }t        |j                  |      }|j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d|||
|	      d}~ww xY ww)z'
    Async: Update a vector store.
    TaupdateNrE   )	r}   r1   r5   r8   r=   r>   r?   r@   rA   rF   )rK   rL   rM   r   rw   rO   rP   rQ   rR   rS   rT   rU   rV   )r}   r1   r5   r8   r=   r>   r?   r@   rA   rW   rX   rY   rZ   r[   r\   r]   r^   r_   s                     r#   r   r     s      J&
%%' y&"*
+''#! 3
 
 &&(#CGGT2"2249JKK}-**H  %H L +
  
$$ 3 (
 	

r   c	                    t               }
	 |	j                  d      }|	j                  dd      }|	j                  dd      du }t        di |	}|d}d|v rt	        |dd	      \  }}}}nd}|}t        j                  t        j                  |      |
      }|t        d|       |
j                  |	       t        j                  |
      }|j                  |	d| |d|d|i|       t        j                  | ||||||||xs t         ||	j                  d            }|S # t"        $ r}t        j$                  d|||
|	      d}~ww xY w)a  
    Update a vector store.

    Args:
        vector_store_id: The ID of the vector store to update.
        name: The name of the vector store.
        expires_after: The expiration policy for the vector store.
        metadata: Set of 16 key-value pairs that can be attached to an object.

    Returns:
        VectorStoreCreateResponse containing the updated vector store details.
    ra   rb   Nr   FTrE   rc   rd   rf   z)Vector store update is not supported for )r}   r1   ri   r   )r}   #vector_store_update_optional_paramsrl   rA   re   rm   r=   r?   r@   rn   r   rF   ro   )rK   rp   rq   r   r   r   rt   rU   ru   rv   rw   r   rx   ry   rz   vector_store_update_handlerr
   rT   rV   )r}   r1   r5   r8   r=   r>   r?   r@   rA   rW   rX   ra   rb   rn   re   rh   r|   rl   r   r^   r_   s                        r#   rw   rw   E  s   2 JJ
17<Q1R)/4Et)LJJy%0D8	-77&"*%%2B)$(#3/H)1a H"5 "CC --.AB! 	% (/;<O;PQ  	&! $TT 	, 	..#2 6
 .? 3 	/ 
	
 )DD+0S)E 3)+'!.::h' E 
  
$$ 3 (
 	

s   DD$ $	E-EEc           
        K   t               }	 t        j                         }d|d<   |d}t        t        f| |||||d|}	t        j                         }
t        |
j                  |	      }|j                  d|       d{   }t        j                  |      r| d{   }|S |}|S 7 )7 # t        $ r}t        j                  d||||      d}~ww xY ww)z'
    Async: Delete a vector store.
    TadeleteNrE   r   rF   )rK   rL   rM   r   deleterO   rP   rQ   rR   rS   rT   rU   rV   r   s                  r#   r   r     s     J#
%%' y&"*	
+'#! 3	
 	
 &&(#CGGT2"2249JKK}-**H  %H L +
  
$$ 3 (
 	

r   c                 J   t               }	 |j                  d      }|j                  dd      }	|j                  dd      du }
t        di |}|d}d|v rt	        |dd	      \  }}}}nd}|}t        j                  t        j                  |      |
      }|t        d|       |j                  |dd| id|	i|       t        j                  | |||||||xs t        |
|j                  d      
      }|S # t        $ r}t        j                  d||||      d}~ww xY w)z
    Delete a vector store.

    Args:
        vector_store_id: The ID of the vector store to delete.

    Returns:
        Deletion confirmation response.
    ra   rb   Nr   FTrE   rc   rd   rf   z)Vector store delete is not supported for r}   ri   r   r   rF   ro   )rK   rp   rq   r   r   r   rt   rU   ru   rv   ry   rz   vector_store_delete_handlerr
   rT   rV   r   s                    r#   r   r     s   & J=
17<Q1R)/4Et)LJJy%0D8	-77&"*%%2B)$(#3/H)1a H"5 "CC --.AB! 	% (/;<O;PQ  	...@-? 3 	/ 	
 )DD+)E 3)+'!.::h' E 
  
$$ 3 (
 	

r   )N)
NNNNNNNNNN)	NNNNNNNNN)NNNNN)	NN   descNNNNN)NNNNNNNN);__doc__rL   r   rO   	functoolsr   typingr   r   r   r   r   r	   httpxrU   litellm.constantsr
   1litellm.litellm_core_utils.get_llm_provider_logicr   *litellm.litellm_core_utils.litellm_loggingr   LiteLLMLoggingObj*litellm.llms.custom_httpx.llm_http_handlerr   litellm.types.routerr   litellm.types.vector_storesr   r   r   r   r   r   r   litellm.utilsr   r   litellm.vector_stores.utilsr   rz   r$   r:   r   floatTimeoutrD   rN   intboolr   r   r   r   r   r   r   rw   r   r   ro   r%   r#   <module>r      s!       > >   - N S I 5   8 ? +, 
 =A4 7892 :>568 $($((,)- /3,0+/59)-<

3-<
tCy!<
 D><
  ~	<

 tCH~&<
 DcN+<
 $sCx.)<
 c3h(<
 eE5==012<
 "#<
 <
 <
~ $($((,)- /3,0+/59)-u

3-u
tCy!u
 D>u
  ~	u

 tCH~&u
 DcN+u
 $sCx.)u
 c3h(u
 eE5==012u
 "#u
 $iS:S0S&TTUu
 u
p  #%)&*$( /3,0+/59)-?
?
d3i ?
 d^?
 c]	?

 d^?
 D>?
 DcN+?
 $sCx.)?
 c3h(?
 eE5==012?
 "#?
  !?
 ?
D  #%)&*$( /3,0+/59)-N
N
d3i N
 d^N
 c]	N

 d^N
 D>N
 DcN+N
 $sCx.)N
 c3h(N
 eE5==012N
 "#N
  $iS:S0S&TTU!N
 N
b  /3,0+/59)-0
0
DcN+0
 $sCx.)0
 c3h(	0

 eE5==0120
 "#0
 0
 0
f  /3,0+/59)-P
P
DcN+P
 $sCx.)P
 c3h(	P

 eE5==012P
 "#P
 $iS:S0S&TTUP
 P
f  !.2,0+/59)-6
C=6
SM6
 C=6
 C=	6

 DcN+6
 $sCx.)6
 c3h(6
 eE5==0126
 "#6
 6
r  !.2,0+/59)-^
C=^
SM^
 C=^
 C=	^

 DcN+^
 $sCx.)^
 c3h(^
 eE5==012^
 "#^
 ^
B  $()-.2,0+/59)-6
6

3-6
 D>6
 tCH~&	6

 DcN+6
 $sCx.)6
 c3h(6
 eE5==0126
 "#6
 6
 6
r  $()-.2,0+/59)-c
c

3-c
 D>c
 tCH~&	c

 DcN+c
 $sCx.)c
 c3h(c
 eE5==012c
 "#c
 $iS:S0S&TTUc
 c
L  /3,0+/59)-0
0
DcN+0
 $sCx.)0
 c3h(	0

 eE5==0120
 "#0
 0
f  /3,0+/59)-P
P
DcN+P
 $sCx.)P
 c3h(	P

 eE5==012P
 "#P
 P
r%   