
    dh                        S SK Jr  S SKJr  S SKJrJrJrJrJ	r	  S SK
JrJr  S SKJr  S SKJr  S SKJr  \(       a  S SKJr   " S	 S
\\5      r " S S\\5      r " S S\5      rg)    )annotations)Enum)TYPE_CHECKINGAnyDictListOptional)#AsyncCallbackManagerForRetrieverRunCallbackManagerForRetrieverRun)Document)BaseRetriever)model_validator)MemorySearchResultc                  "    \ rS rSrSrSr SrSrg)SearchScope   z1Which documents to search. Messages or Summaries?messagessummary N)__name__
__module____qualname____firstlineno____doc__r   r   __static_attributes__r       Z/var/www/html/shao/venv/lib/python3.13/site-packages/langchain_community/retrievers/zep.pyr   r      s    ;H'G(r   r   c                  "    \ rS rSrSrSr SrSrg)
SearchType   z-Enumerator of the types of search to perform.
similaritymmrr   N)r   r   r   r   r   r!   r"   r   r   r   r   r   r      s    7J
CDr   r   c                  @   \ rS rSr% SrSrS\S'    S\S'    SrS\S	'    S\S
'    S\S'    \R                  r
S\S'    \R                  rS\S'    SrS\S'    \" SS9\SS j5       5       r    SS jr    SS jrSS.       SS jjrSS.       SS jjrSrg) ZepRetriever$   a  `Zep` MemoryStore Retriever.

Search your user's long-term chat history with Zep.

Zep offers both simple semantic search and Maximal Marginal Relevance (MMR)
reranking of search results.

Note: You will need to provide the user's `session_id` to use this retriever.

Args:
    url: URL of your Zep server (required)
    api_key: Your Zep API key (optional)
    session_id: Identifies your user or a user's session (required)
    top_k: Number of documents to return (default: 3, optional)
    search_type: Type of search to perform (similarity / mmr) (default: similarity,
                                                                optional)
    mmr_lambda: Lambda value for MMR search. Defaults to 0.5 (optional)

Zep - Fast, scalable building blocks for LLM Apps
=========
Zep is an open source platform for productionizing LLM apps. Go from a prototype
built in LangChain or LlamaIndex, or a custom app, to production in minutes without
rewriting code.

For server installation instructions, see:
https://docs.getzep.com/deployment/quickstart/
NzOptional[Any]
zep_clientstrurlzOptional[str]api_key
session_idzOptional[int]top_kr   search_scoper   search_typezOptional[float]
mmr_lambdabefore)modec           	          SSK Jn  UR                  SU" US   UR                  S5      S95      US'   U$ ! [         a    [        S5      ef = f)Nr   )	ZepClientzUCould not import zep-python package. Please install it with `pip install zep-python`.r&   r(   r)   )base_urlr)   )
zep_pythonr2   ImportErrorget)clsvaluesr2   s      r   create_clientZepRetriever.create_clientR   sd    	,  &zzve}fjj6KL 
|   	C 	s	   6 Ac                    U Vs/ sHQ  nUR                   (       d  M  [        UR                   R                  S5      SUR                  0UR                   ES9PMS     sn$ s  snf )Ncontentscorepage_contentmetadata)messager   popdistselfresultsrs      r   _messages_search_result_to_doc+ZepRetriever._messages_search_result_to_docb   s`     

 yyHYY]]95!1667QYY7 
 	
 
s
   A?Ac                $   U Vs/ sH  nUR                   (       d  M  [        UR                   R                  UR                  UR                   R                  UR                   R
                  UR                   R                  S.S9PM     sn$ s  snf )N)r=   uuid
created_attoken_countr>   )r   r   r<   rC   rK   rL   rM   rD   s      r   _summary_search_result_to_doc*ZepRetriever._summary_search_result_to_docn   sy     
 yyHYY..VVIINN"#))"6"6#$99#8#8	 
 	
 
s   BA-B)r@   c                  SSK Jn  U R                  (       d  [        S5      eU" UUU R                  U R
                  U R                  S9nU R                  R                  R                  U R                  XPR                  S9nU R                  [        R                  :X  a  U R                  U5      $ U R                  U5      $ Nr   )MemorySearchPayloadzZep client not initialized.)textr@   r,   r-   r.   )limit)zep_python.memoryrR   r&   RuntimeErrorr,   r-   r.   memorysearch_memoryr*   r+   r   r   rN   rH   rE   queryrun_managerr@   rR   payloadrF   s          r   _get_relevant_documents$ZepRetriever._get_relevant_documents   s     	:<==%**((
 -1OO,B,B,P,POOWJJ -Q -
  3 3355g>>227;;r   c                 #    SSK Jn  U R                  (       d  [        S5      eU" UUU R                  U R
                  U R                  S9nU R                  R                  R                  U R                  XPR                  S9I S h  vN nU R                  [        R                  :X  a  U R                  U5      $ U R                  U5      $  ND7frQ   )rU   rR   r&   rV   r,   r-   r.   rW   asearch_memoryr*   r+   r   r   rN   rH   rY   s          r   _aget_relevant_documents%ZepRetriever._aget_relevant_documents   s      	:<==%**((
 37//2H2H2W2WOOWJJ 3X 3
 -
  3 3355g>>227;;-
s   BCC	ACr   )r8   dictreturnr   )rF   zList[MemorySearchResult]rd   List[Document])rZ   r'   r[   r   r@   Optional[Dict[str, Any]]rd   re   )rZ   r'   r[   r
   r@   rf   rd   re   )r   r   r   r   r   r&   __annotations__r)   r   r   r,   r   r!   r-   r.   r   classmethodr9   rH   rN   r]   ra   r   r   r   r   r$   r$   $   s   8 !%J$	H!!G]!O$ + 4 4L+4;(33K36"&J&&(#  $

/

	


/
	
, .2<< 4	<
 +< 
<D .2<< 9	<
 +< 
< <r   r$   N)
__future__r   enumr   typingr   r   r   r   r	   langchain_core.callbacksr
   r   langchain_core.documentsr   langchain_core.retrieversr   pydanticr   rU   r   r'   r   r   r$   r   r   r   <module>rp      sS    "  ; ; . 3 $4)#t )Ed ES<= S<r   