Spaces:
Sleeping
Sleeping
File size: 1,077 Bytes
b092c58 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
from typing import Any, List, Dict
from langchain.memory import VectorStoreRetrieverMemory
from langchain.schema import Document
class ConversationVectorStoreRetrieverMemory(VectorStoreRetrieverMemory):
input_prefix = "Human"
output_prefix = "AI"
blacklist = [] # keys to ignore
def _form_documents(
self, inputs: Dict[str, Any], outputs: Dict[str, str]
) -> List[Document]:
"""Format context from this conversation to buffer."""
# Each document should only include the current turn, not the chat history
filtered_inputs = {
k: v
for k, v in inputs.items()
if k != self.memory_key and k not in self.blacklist
}
texts = []
for k, v in list(filtered_inputs.items()) + list(outputs.items()):
if k == "input":
k = self.input_prefix
elif k == "response":
k = self.output_prefix
texts.append(f"{k}: {v}")
page_content = "\n".join(texts)
return [Document(page_content=page_content)]
|