Skip to content

Commit

Permalink
Add sensory memory
Browse files Browse the repository at this point in the history
  • Loading branch information
dandansamax committed Sep 7, 2023
1 parent 4ed8c1d commit a3e0d57
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 4 deletions.
27 changes: 27 additions & 0 deletions camel/memory/cognitive_memory/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# =========== Copyright 2023 @ CAMEL-AI.org. All Rights Reserved. ===========
# Licensed under the Apache License, Version 2.0 (the “License”);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an “AS IS” BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# =========== Copyright 2023 @ CAMEL-AI.org. All Rights Reserved. ===========

from .episodic_memory import EpisodicMemory
from .procedural_memory import ProceduralMemory
from .semantic_memory import SemanticMemory
from .sensory_memory import SensoryMemory
from .working_memory import WorkingMemory

__all__ = [
"EpisodicMemory",
"ProceduralMemory",
"SemanticMemory",
"SensoryMemory",
"WorkingMemory",
]
4 changes: 2 additions & 2 deletions camel/memory/cognitive_memory/episodic_memory.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from typing import List, Optional

from camel.memory.base_memory import BaseMemory
from camel.memory.vector_storage import BaseVectorStorage
from camel.memory.vector_storage import BaseVectorStorage, Qdrant
from camel.messages import BaseMessage


Expand All @@ -25,7 +25,7 @@ class EpisodicMemory(BaseMemory):
"""

def __init__(self, storage: Optional[BaseVectorStorage] = None) -> None:
self.storage = storage
self.storage = storage or Qdrant()

def read(self,
current_state: Optional[BaseMessage] = None) -> List[BaseMessage]:
Expand Down
39 changes: 39 additions & 0 deletions camel/memory/cognitive_memory/sensory_memory.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# =========== Copyright 2023 @ CAMEL-AI.org. All Rights Reserved. ===========
# Licensed under the Apache License, Version 2.0 (the “License”);
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an “AS IS” BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# =========== Copyright 2023 @ CAMEL-AI.org. All Rights Reserved. ===========
from typing import List, Optional

from camel.memory.base_memory import BaseMemory
from camel.memory.dict_storage.base import BaseDictStorage
from camel.memory.dict_storage.in_memory import InMemoryDictStorage
from camel.messages import BaseMessage


class SensoryMemory(BaseMemory):
"""
A memory storing information collected from outer sensors, such as camera,
microphone, and more.
"""

def __init__(self, storage: Optional[BaseDictStorage] = None) -> None:
self.storage = storage or InMemoryDictStorage()

def read(self,
current_state: Optional[BaseMessage] = None) -> List[BaseMessage]:
...

def write(self, msgs: List[BaseMessage]) -> None:
...

def clear(self) -> None:
...
5 changes: 3 additions & 2 deletions camel/memory/cognitive_memory/working_memory.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@
from typing import List, Optional

from camel.memory.base_memory import BaseMemory
from camel.memory.graph_storage.base import BaseGraphStorage
from camel.messages import BaseMessage

from .episodic_memory import EpisodicMemory
from .procedural_memory import ProceduralMemory
from .semantic_memory import SemanticMemory
from .sensory_memory import SensoryMemory


class WorkingMemory(BaseMemory):
Expand All @@ -30,15 +30,16 @@ class WorkingMemory(BaseMemory):

def __init__(
self,
storage: Optional[BaseGraphStorage],
procedural_memory: Optional[ProceduralMemory] = None,
episodic_memory: Optional[EpisodicMemory] = None,
semantic_memory: Optional[SemanticMemory] = None,
sensory_memory: Optional[SensoryMemory] = None,
) -> None:
super().__init__()
self.procedural_memory = procedural_memory or ProceduralMemory()
self.episodic_memory = episodic_memory or EpisodicMemory()
self.semantic_memory = semantic_memory or SemanticMemory()
self.sensory_memory = sensory_memory or SensoryMemory()

def read(self,
current_state: Optional[BaseMessage] = None) -> List[BaseMessage]:
Expand Down

0 comments on commit a3e0d57

Please sign in to comment.