
    }h]                         d Z ddlmZmZmZ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.    )AnyDictListOptionalSequence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    V/var/www/html/engine/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_key/   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_variables5   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-   r1   s        r    aload_memory_variablesz1VectorStoreRetrieverMemory.aload_memory_variablesH   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#   r7   r   kvfiltered_inputstextsr*   s	            r    _form_documentsz*VectorStoreRetrieverMemory._form_documentsQ   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)rA   r   add_documentsr   r#   r7   	documentss       r    save_contextz'VectorStoreRetrieverMemory.save_context`   s&    ((9	$$Y/r"   c                 z   K   | j                  ||      }| j                  j                  |       d{    y7 wrC   )rA   r   aadd_documentsrE   s       r    asave_contextz(VectorStoreRetrieverMemory.asave_contexte   s2      ((9	nn++I666s   1;9;c                      yzNothing to clear.N r   s    r    clearz VectorStoreRetrieverMemory.clearl   s    r"   c                    K   ywrL   rM   r   s    r    aclearz!VectorStoreRetrieverMemory.aclearo   s     s   )r   N)!__name__
__module____qualname____doc__r   r   r   __annotations__r   strr   r   r   booltupler   r   propertyr   r!   r   r   r%   r
   r   r-   r3   r6   rA   rG   rJ   rN   rP   rM   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)rT   typingr   r   r   r   r   r   langchain_core._apir	   langchain_core.documentsr
   langchain_core.vectorstoresr   pydanticr   langchain.memory.chat_memoryr   langchain.memory.utilsr   r   rM   r"   r    <module>ra      sO    3 = = * - <  3 7 
	G	Z  Z Z r"   