
    h                         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)
BaseMemory)VectorStoreRetriever)Field)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    Z/var/www/html/eduruby.in/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_variablesA   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_variablesK   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_documentsU   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_contextf   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_contextk   s2      ((9	nn++I666s   1;9;c                      yzNothing to clear.N r   s    r   clearz VectorStoreRetrieverMemory.cleart   s    r    c                    K   ywrJ   rK   r   s    r   aclearz!VectorStoreRetrieverMemory.aclearw   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 	)8n	) 
c5h,--	.	)9S#X9 
c5h,--	.99S#X9 
c5h,--	.95S#X5 c3h5 
h	5"04S> 0DcN 0t 0
7S#X7 c3h7 
	7  r    r   N)rR   collections.abcr   typingr   r   r   langchain_core._apir   langchain_core.documentsr   langchain_core.memoryr	   langchain_core.vectorstoresr
   pydanticr   langchain.memory.utilsr   r   rK   r    r   <module>ra      sR    3 $ ' ' * - , <  7 
	G	a  a a r    