
    3fi                         d 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 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)
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	dz  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	z  f   fdZdee	ef   dee	ee   e	z  f   fdZdee	ef   dee	ee   e	z  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)VectorStoreRetrieverMemoryzVector Store Retriever Memory.

    Store 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    b/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_classic/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_key2   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_variables8   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_variablesC   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_variablesM   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   r3   r   kvfiltered_inputstextsr&   s	            r   _form_documentsz*VectorStoreRetrieverMemory._form_documentsW   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   r3   	documentss       r   save_contextz'VectorStoreRetrieverMemory.save_contexth   s&    ((9	$$Y/r   c                 z   K   | j                  ||      }| j                  j                  |       d{    y7 wr?   )r=   r   aadd_documentsrA   s       r   asave_contextz(VectorStoreRetrieverMemory.asave_contextm   s2      ((9	nn++I666s   1;9;c                      yzNothing to clear.N r   s    r   clearz VectorStoreRetrieverMemory.clearv   s    r   c                    K   ywrH   rI   r   s    r   aclearz!VectorStoreRetrieverMemory.acleary   s     s   )r   N)__name__
__module____qualname____doc__r   r   r   __annotations__r   strr   r   booltupler   r   propertyr8   r   dictr   r!   r   r)   r/   r2   r=   rC   rF   rJ   rL   rI   r   r   r   r      s    ',D&9I#94JQ IsTz @KP(-e(DDX!$s) ! !DcN s 	)8n	) 
c4>C''	(	)9S#X9 
c4>C''	(99S#X9 
c4>C''	(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)rP   collections.abcr   typingr   langchain_core._apir   langchain_core.documentsr   langchain_core.vectorstoresr   pydanticr   langchain_classic.base_memoryr	   langchain_classic.memory.utilsr
   r   rI   r   r   <module>r_      sO    3 $  * - <  4 ? 
	G	c  c c r   