Merge pull request #1032 from merwanehamadi/feature/ability-have-no-memory

Feature/ability have no memory
This commit is contained in:
Pi
2023-04-13 15:27:19 +01:00
committed by GitHub
2 changed files with 69 additions and 0 deletions

View File

@@ -1,4 +1,5 @@
from memory.local import LocalCache from memory.local import LocalCache
from memory.no_memory import NoMemory
# List of supported memory backends # List of supported memory backends
# Add a backend to this list if the import attempt is successful # Add a backend to this list if the import attempt is successful
@@ -34,6 +35,8 @@ def get_memory(cfg, init=False):
" use Redis as a memory backend.") " use Redis as a memory backend.")
else: else:
memory = RedisMemory(cfg) memory = RedisMemory(cfg)
elif cfg.memory_backend == "no_memory":
memory = NoMemory(cfg)
if memory is None: if memory is None:
memory = LocalCache(cfg) memory = LocalCache(cfg)
@@ -50,4 +53,5 @@ __all__ = [
"LocalCache", "LocalCache",
"RedisMemory", "RedisMemory",
"PineconeMemory", "PineconeMemory",
"NoMemory"
] ]

View File

@@ -0,0 +1,65 @@
from typing import Optional, List, Any
from memory.base import MemoryProviderSingleton
class NoMemory(MemoryProviderSingleton):
def __init__(self, cfg):
"""
Initializes the NoMemory provider.
Args:
cfg: The config object.
Returns: None
"""
pass
def add(self, data: str) -> str:
"""
Adds a data point to the memory. No action is taken in NoMemory.
Args:
data: The data to add.
Returns: An empty string.
"""
return ""
def get(self, data: str) -> Optional[List[Any]]:
"""
Gets the data from the memory that is most relevant to the given data.
NoMemory always returns None.
Args:
data: The data to compare to.
Returns: None
"""
return None
def clear(self) -> str:
"""
Clears the memory. No action is taken in NoMemory.
Returns: An empty string.
"""
return ""
def get_relevant(self, data: str, num_relevant: int = 5) -> Optional[List[Any]]:
"""
Returns all the data in the memory that is relevant to the given data.
NoMemory always returns None.
Args:
data: The data to compare to.
num_relevant: The number of relevant data to return.
Returns: None
"""
return None
def get_stats(self):
"""
Returns: An empty dictionary as there are no stats in NoMemory.
"""
return {}