
    Ng]                         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dS )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 dS )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    X/var/www/html/ai-engine/env/lib/python3.11/site-packages/langchain/memory/vectorstore.pymemory_variablesz+VectorStoreRetrieverMemory.memory_variables*   s           inputsc                 H    | 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%    >!'0EFFF~r"   docsc                 f    | j         s d                    d |D                       }n|}| j        |iS )N
c                     g | ]	}|j         
S  page_content).0docs     r    
<listcomp>zMVectorStoreRetrieverMemory._documents_to_memory_variables.<locals>.<listcomp>:   s    AAAS 0AAAr"   )r   joinr   )r   r&   results      r    _documents_to_memory_variablesz9VectorStoreRetrieverMemory._documents_to_memory_variables5   sC      	YYAADAAABBFFF((r"   c                     |                      |          }||         }| j                            |          }|                     |          S )Return history buffer.)r%   r   invoker2   r   r#   r   queryr&   s        r    load_memory_variablesz0VectorStoreRetrieverMemory.load_memory_variables?   sJ     ..v66	y!~$$U++224888r"   c                    K   |                      |          }||         }| j                            |           d{V }|                     |          S )r4   N)r%   r   ainvoker2   r6   s        r    aload_memory_variablesz1VectorStoreRetrieverMemory.aload_memory_variablesH   s`       ..v66	y!^++E22222222224888r"   outputsc                    t          | j                                      | j                   fd|                                D             }d t          |                                          t          |                                          z   D             }d                    |          }t          |          gS )z0Format context from this conversation to buffer.c                 $    i | ]\  }}|v	||S r*   r*   )r-   kvr   s      r    
<dictcomp>z>VectorStoreRetrieverMemory._form_documents.<locals>.<dictcomp>X   s)    OOODAqaw>N>N1a>N>N>Nr"   c                 "    g | ]\  }}| d | S )z: r*   )r-   r?   r@   s      r    r/   z>VectorStoreRetrieverMemory._form_documents.<locals>.<listcomp>Y   s6     
 
 
1 KKAKK
 
 
r"   r(   r+   )setr   addr   itemslistr0   r
   )r   r#   r<   filtered_inputstextsr,   r   s         @r    _form_documentsz*VectorStoreRetrieverMemory._form_documentsQ   s    
 d-..DO$$$OOOOFLLNNOOO
 
_224455W]]__8M8MM
 
 
 yy''l33344r"   c                 f    |                      ||          }| j                            |           dS z.Save context from this conversation to buffer.N)rI   r   add_documentsr   r#   r<   	documentss       r    save_contextz'VectorStoreRetrieverMemory.save_context`   s3    ((99	$$Y/////r"   c                 v   K   |                      ||          }| j                            |           d{V  dS rK   )rI   r   aadd_documentsrM   s       r    asave_contextz(VectorStoreRetrieverMemory.asave_contexte   sK       ((99	n++I66666666666r"   c                     dS zNothing to clear.Nr*   r   s    r    clearz VectorStoreRetrieverMemory.clearl   s      r"   c                 
   K   dS rT   r*   r   s    r    aclearz!VectorStoreRetrieverMemory.aclearo   s
        r"   )r   N)!__name__
__module____qualname____doc__r   r   r   __annotations__r   strr   r   r   booltupler   r   propertyr   r!   r   r   r%   r
   r   r2   r8   r;   rI   rO   rR   rU   rW   r*   r"   r    r   r      s          ',eD&9&9&9I#9994JQ#Ix}###@KP(-e(D(D(DDDDX!$s) ! ! ! X!DcN s    )N)	c5h,--	.) ) ) )938n9	c5h,--	.9 9 9 9938n9	c5h,--	.9 9 9 9538n5/3CH~5	h5 5 5 504S> 0DcN 0t 0 0 0 0
738n7/3CH~7	7 7 7 7                  r"   r   N)r[   typingr   r   r   r   r   r   langchain_core._apir	   langchain_core.documentsr
   langchain_core.vectorstoresr   pydanticr   langchain.memory.chat_memoryr   langchain.memory.utilsr   r   r*   r"   r    <module>rh      s   3 3 = = = = = = = = = = = = = = = = * * * * * * - - - - - - < < < < < <       3 3 3 3 3 3 7 7 7 7 7 7 
	G	  Z  Z  Z  Z  Z  Z  Z  Z  Z  Z r"   