
    A'hl                         d Z ddlmZ ddlmZmZ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 dd	lmZ  ed
dd       G d de             Zy)z-Class for a VectorStore-backed memory object.    )Sequence)AnyOptionalUnion)
deprecated)Document)VectorStoreRetriever)Field)
BaseMemory)get_prompt_input_keyz0.3.1z1.0.0z_Please see the migration guide at: https://python.langchain.com/docs/versions/migrating_memory/)sinceremovalmessagec                      e Zd ZU dZ ed      Zeed<   	 dZe	ed<   	 dZ
ee	   ed<   	 d	Zeed
<   	  ee      Zee	   ed<   	 edee	   fd       Zdee	ef   de	fdZdee   dee	eee   e	f   f   fdZdee	ef   dee	eee   e	f   f   fdZdee	ef   dee	eee   e	f   f   fdZdee	ef   dee	e	f   dee   fdZdee	ef   dee	e	f   ddfdZdee	ef   dee	e	f   ddfdZddZddZ y)VectorStoreRetrieverMemoryzStore the conversation history in a vector store and retrieves the relevant
    parts of past conversation based on the input.
    T)exclude	retrieverhistory
memory_keyN	input_keyFreturn_docs)default_factoryexclude_input_keysreturnc                     | j                   gS )z?The list of keys emitted from the load_memory_variables method.)r   selfs    c/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/langchain/memory/vectorstore.pymemory_variablesz+VectorStoreRetrieverMemory.memory_variables+   s           inputsc                 ^    | j                   t        || j                        S | j                   S )z!Get the input key for the prompt.)r   r   r   )r   r!   s     r   _get_prompt_input_keyz0VectorStoreRetrieverMemory._get_prompt_input_key0   s)    >>!'0E0EFF~~r    docsc                     | j                   s*dj                  |D cg c]  }|j                   c}      }n|}| j                  |iS c c}w )N
)r   joinpage_contentr   )r   r$   docresults       r   _documents_to_memory_variablesz9VectorStoreRetrieverMemory._documents_to_memory_variables6   sF     YYDAS 0 0ABFF((  Bs   Ac                     | j                  |      }||   }| j                  j                  |      }| j                  |      S )Return history buffer.)r#   r   invoker+   r   r!   r   queryr$   s        r   load_memory_variablesz0VectorStoreRetrieverMemory.load_memory_variables@   sC     ..v6	y!~~$$U+22488r    c                    K   | j                  |      }||   }| j                  j                  |       d{   }| j                  |      S 7 w)r-   N)r#   r   ainvoker+   r/   s        r   aload_memory_variablesz1VectorStoreRetrieverMemory.aload_memory_variablesI   sO      ..v6	y!^^++E2222488 3s   5AAAoutputsc                    t        | j                        }|j                  | j                         |j	                         D ci c]  \  }}||vs|| }}}t        |j	                               t        |j	                               z   D cg c]  \  }}| d|  }}}dj                  |      }t        |      gS c c}}w c c}}w )z0Format context from this conversation to buffer.z: r&   )r(   )setr   addr   itemslistr'   r   )	r   r!   r5   r   kvfiltered_inputstextsr(   s	            r   _form_documentsz*VectorStoreRetrieverMemory._form_documentsR   s    
 d--.DOO$,2LLNODAqaw>N1a4OO _2245W]]_8MM
1 cA3K
 
 yy'l344 P
s   CCCc                 ^    | j                  ||      }| j                  j                  |       yz.Save context from this conversation to buffer.N)r?   r   add_documentsr   r!   r5   	documentss       r   save_contextz'VectorStoreRetrieverMemory.save_contexta   s&    ((9	$$Y/r    c                 z   K   | j                  ||      }| j                  j                  |       d{    y7 wrA   )r?   r   aadd_documentsrC   s       r   asave_contextz(VectorStoreRetrieverMemory.asave_contextf   s2      ((9	nn++I666s   1;9;c                      yzNothing to clear.N r   s    r   clearz VectorStoreRetrieverMemory.clearm   s    r    c                    K   ywrJ   rK   r   s    r   aclearz!VectorStoreRetrieverMemory.aclearp   s     s   )r   N)!__name__
__module____qualname____doc__r
   r   r	   __annotations__r   strr   r   r   booltupler   r   propertyr:   r   dictr   r#   r   r   r+   r1   r4   r?   rE   rH   rL   rN   rK   r    r   r   r      s    ',D&9I#94JQ#Ix}#@KP(-e(DDX!$s) ! !DcN s )N)	c5h,--	.)938n9	c5h,--	.9938n9	c5h,--	.9538n5/3CH~5	h504S> 0DcN 0t 0
738n7/3CH~7	7  r    r   N)rR   collections.abcr   typingr   r   r   langchain_core._apir   langchain_core.documentsr   langchain_core.vectorstoresr	   pydanticr
   langchain.memory.chat_memoryr   langchain.memory.utilsr   r   rK   r    r   <module>ra      sR    3 $ ' ' * - <  3 7 
	G	Z  Z Z r    