o
    ưieD                     @   s  d 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&	d,de
e	e   fddZ'	d,de
e fddZ(e#										d-d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j+f  de
e) defddZ,e#										d-d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j+f  de
e) deeeeeef f fd d!Z-e#									d.d"e)d#ee)e	e) f d$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j+f  de
e) defd(d)Z0e#									d.d"e)d#ee)e	e) f d$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j+f  de
e) deeeeeef f fd*d+Z1dS )/z@
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                 C   s.   | du rt dtdddgdg} tdd| d	S )
z%Mock response for vector store searchNgffffff?z5This is a sample search result from the vector store.text)r   type)Zscorecontentz vector_store.search_results.pagezsample query)objectZsearch_querydata)r   r   r   r    r   Q/home/app/Keep/.python/lib/python3.10/site-packages/litellm/vector_stores/main.py!mock_vector_store_search_response$   s   r!   mock_responsec                 C   s8   | du rt dddddtdddddddddddd	} | S )
z%Mock response for vector store createNZ
vs_mock123Zvector_storeiEezMock Vector Storer   )Zin_progress	completedfailed	cancelledtotalr#   )idr   Z
created_atnamebytesZfile_countsstatusexpires_afterZ
expires_atZlast_active_atmetadata)r   r   r"   r   r   r    !mock_vector_store_create_response<   s*   r.   r(   file_idsr+   chunking_strategyr,   extra_headersextra_query
extra_bodytimeoutcustom_llm_providerreturnc
                    s   t  }zFt }d|
d< |	du rd}	ttf| |||||||||	d
|
}t }t|j|}|d|I dH }t	|rF|I dH }|W S |}|W S  t
y` } z
tjd|	|||
dd}~ww )z'
    Async: Create a vector store.
    TacreateNopenai)
r(   r/   r+   r0   r,   r1   r2   r3   r4   r5   modelr5   Zoriginal_exceptionZcompletion_kwargsextra_kwargs)localsasyncioget_event_loopr   createcontextvarscopy_contextrunrun_in_executoriscoroutine	Exceptionlitellmexception_type)r(   r/   r+   r0   r,   r1   r2   r3   r4   r5   kwargs
local_varsloopfuncctxfunc_with_contextinit_responseresponseer   r   r    r7   X   sR   

r7   c
                 K   sP  t  }z|
d}|
dd}|
dddu }tdi |
}|jr3t|jtr3ttdi |jdW S |	du r9d}	d	|	v rIt	|	ddd
\}}	}}nd}|	}	t
jt|	|d}|du rbtd|	 ||
 t|}|jdd| i|d|i|	d tj|||	|||||pt||
dd
}|W S  ty } z
tjd|	|||
dd}~w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_idNr7   FTr-   r8   /r:   r5   litellm_paramsproviderapi_typez)Vector store create is not supported for r(   r:   Zoptional_paramsrU   r5   r   )
#vector_store_create_optional_paramsvector_store_provider_configr5   rU   logging_objr1   r3   r4   	_is_asyncr   r9   r   )r<   getpopr   r"   
isinstancedictr.   r   r
   r   !get_provider_vector_stores_configrF   LlmProviders
ValueErrorupdater   Z0get_requested_vector_store_create_optional_paramupdate_environment_variablesbase_llm_http_handlerZvector_store_create_handlerr	   rE   rG   )r(   r/   r+   r0   r,   r1   r2   r3   r4   r5   rH   rI   rQ   rR   r]   rU   rX   _r[   rZ   rO   rP   r   r   r    r?      s   

r?   vector_store_idqueryfiltersmax_num_resultsranking_optionsrewrite_queryc                    s   t  }zGt }d|d< |
du rd}
ttf| |||||||||	|
d|}t }t|j|}|d|I dH }t	|rG|I dH }|W S |}|W S  t
ya } z
tjd|
|||dd}~ww )zg
    Async: Search a vector store for relevant chunks based on a query and file attributes filter.
    TasearchNr8   )ri   rj   rk   rl   rm   rn   r1   r2   r3   r4   r5   r9   )r<   r=   r>   r   searchr@   rA   rB   rC   rD   rE   rF   rG   )ri   rj   rk   rl   rm   rn   r1   r2   r3   r4   r5   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r   r   r    ro     sT   

ro   c                 K   s  t  }z|d}|dd}|dddu }|d| }tjdur=|dur=ztj|}|| W n	 ty<   Y nw tdd| i|}|j	rbt
|j	ttfrbd}t
|j	tr\|j	}t|dW S |
du rhd	}
d
|
v rxt|
ddd\}}
}}nd}|
}
tjt|
|d}|du rtd|
 || tj||d}|j|| |d||| d|jdd|
d tj| ||||
|||||	pt||dd}|W S  ty } z
tjd|
|||dd}~w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.
    rQ   rR   Nro   FTri   r   r8   rS   rT   rV   z)Vector store search is not supported for )r[   )ri   rj   )rR   ri   )Zexclude_nonerY   r   )ri   rj   #vector_store_search_optional_paramsr[   r5   rU   r\   r1   r3   r4   r]   r   r9   r   )r<   r^   r_   rF   Zvector_store_registryZ get_credentials_for_vector_storere   rE   r   r"   r`   strlistr!   r
   r   rb   rc   rd   r   Z0get_requested_vector_store_search_optional_paramrf   Z
model_dumprg   Zvector_store_search_handlerr	   rG   )ri   rj   rk   rl   rm   rn   r1   r2   r3   r4   r5   rH   rI   rQ   rR   r]   Zvector_store_id_for_credentialsZregistry_credentialsrU   r   rX   rh   r[   rq   rO   rP   r   r   r    rp   S  s    




rp   )N)
NNNNNNNNNN)	NNNNNNNNN)2__doc__r=   r@   	functoolsr   typingr   r   r   r   r   r   ZhttpxrF   Zlitellm.constantsr	   Z1litellm.litellm_core_utils.get_llm_provider_logicr
   Z*litellm.litellm_core_utils.litellm_loggingr   ZLiteLLMLoggingObjZ*litellm.llms.custom_httpx.llm_http_handlerr   Zlitellm.types.routerr   Zlitellm.types.vector_storesr   r   r   r   r   r   r   Zlitellm.utilsr   r   Zlitellm.vector_stores.utilsr   rg   r!   r.   rr   floatTimeoutr7   r?   intboolro   rp   r   r   r   r    <module>   sD    $	



	
?
	
w	
B	
