agentscope.memory¶
The memory module.
- class MemoryBase[source]¶
Bases:
StateModule
The base class for memory in agentscope.
- abstract async add(*args, **kwargs)[source]¶
Add items to the memory.
- Parameters:
args (Any)
kwargs (Any)
- Return type:
None
- abstract async delete(*args, **kwargs)[source]¶
Delete items from the memory.
- Parameters:
args (Any)
kwargs (Any)
- Return type:
None
- abstract async retrieve(*args, **kwargs)[source]¶
Retrieve items from the memory.
- Parameters:
args (Any)
kwargs (Any)
- Return type:
None
- class InMemoryMemory[source]¶
Bases:
MemoryBase
The in-memory memory class for storing messages.
- load_state_dict(state_dict, strict=True)[source]¶
Load the memory from JSON data.
- Parameters:
state_dict (dict) – The state dictionary to load, which should have a “content” field.
strict (bool, defaults to True) – If True, raises an error if any key in the module is not found in the state_dict. If False, skips missing keys.
- Return type:
None
- async retrieve(*args, **kwargs)[source]¶
Retrieve items from the memory.
- Parameters:
args (Any)
kwargs (Any)
- Return type:
None
- async delete(index)[source]¶
Delete the specified item by index(es).
- Parameters:
index (Union[Iterable, int]) – The index to delete.
- Return type:
None
- class LongTermMemoryBase[source]¶
Bases:
StateModule
The long-term memory base class, which should be a time-series memory management system.
The record_to_memory and retrieve_from_memory methods are two tool functions for agent to manage the long-term memory voluntarily. You can choose not to implement these two functions.
The record and retrieve methods are for developers to use. For example, retrieving/recording memory at the beginning of each reply, and adding the retrieved memory to the system prompt.
- async record(msgs, **kwargs)[source]¶
A developer-designed method to record information from the given input message(s) to the long-term memory.
- Parameters:
msgs (list[Msg | None])
kwargs (Any)
- Return type:
None
- async retrieve(msg, **kwargs)[source]¶
A developer-designed method to retrieve information from the long-term memory based on the given input message(s). The retrieved information will be added to the system prompt of the agent.
- async record_to_memory(thinking, content, **kwargs)[source]¶
Use this function to record important information that you may need later. The target content should be specific and concise, e.g. who, when, where, do what, why, how, etc.
- Parameters:
thinking (str) – Your thinking and reasoning about what to record
content (list[str]) – The content to remember, which is a list of strings.
kwargs (Any)
- Return type:
- async retrieve_from_memory(keywords, **kwargs)[source]¶
Retrieve the memory based on the given keywords.
- Parameters:
keywords (list[str]) – The keywords to search for in the memory, which should be specific and concise, e.g. the person’s name, the date, the location, etc.
kwargs (Any)
- Returns:
A list of messages that match the keywords.
- Return type:
list[Msg]
- class Mem0LongTermMemory[source]¶
Bases:
LongTermMemoryBase
A class that implements the LongTermMemoryBase interface using mem0.
- __init__(agent_name=None, user_name=None, run_name=None, model=None, embedding_model=None, vector_store_config=None, mem0_config=None, default_memory_type=None, **kwargs)[source]¶
Initialize the Mem0LongTermMemory instance
- Parameters:
agent_name (str | None, optional) – The name of the agent. Default is None.
user_name (str | None, optional) – The name of the user. Default is None.
run_name (str | None, optional) – The name of the run/session. Default is None.
model (ChatModelBase | None)
embedding_model (EmbeddingModelBase | None)
vector_store_config (Any | None)
mem0_config (Any | None)
default_memory_type (str | None)
kwargs (Any)
- Return type:
None
Note
At least one of agent_name, user_name, or run_name is required.
During memory recording, these parameters become metadata for the stored memories.
During memory retrieval, only memories with matching metadata values will be returned.
- model (ChatModelBase | None, optional):
The chat model to use for the long-term memory. If mem0_config is provided, this will override the LLM configuration. If mem0_config is None, this is required.
- embedding_model (EmbeddingModelBase | None, optional):
The embedding model to use for the long-term memory. If mem0_config is provided, this will override the embedder configuration. If mem0_config is None, this is required.
- vector_store_config (VectorStoreConfig | None, optional):
The vector store config to use for the long-term memory. If mem0_config is provided, this will override the vector store configuration. If mem0_config is None and this is not provided, defaults to Qdrant with on_disk=True.
- mem0_config (MemoryConfig | None, optional):
The mem0 config to use for the long-term memory. If provided, individual model/embedding_model/vector_store_config parameters will override the corresponding configurations in mem0_config. If None, a new MemoryConfig will be created using the provided parameters.
- default_memory_type (str | None, optional):
The type of memory to use. Default is None, to create a semantic memory.
- Raises:
ValueError – If mem0_config is None and either model or embedding_model is None.
- Parameters:
agent_name (str | None)
user_name (str | None)
run_name (str | None)
model (ChatModelBase | None)
embedding_model (EmbeddingModelBase | None)
vector_store_config (Any | None)
mem0_config (Any | None)
default_memory_type (str | None)
kwargs (Any)
- Return type:
None
- async record_to_memory(thinking, content, **kwargs)[source]¶
Use this function to record important information that you may need later. The target content should be specific and concise, e.g. who, when, where, do what, why, how, etc.
- Parameters:
thinking (str) – Your thinking and reasoning about what to record.
content (list[str]) – The content to remember, which is a list of strings.
kwargs (Any)
- Return type:
- async retrieve_from_memory(keywords, limit=5, **kwargs)[source]¶
Retrieve the memory based on the given keywords.
- Parameters:
keywords (list[str]) – The keywords to search for in the memory, which should be specific and concise, e.g. the person’s name, the date, the location, etc.
limit (int, optional) – The maximum number of memories to retrieve per search.
kwargs (Any)
- Returns:
A ToolResponse containing the retrieved memories as JSON text.
- Return type:
ToolResponse
- async record(msgs, memory_type=None, infer=True, **kwargs)[source]¶
Record the content to the long-term memory.
- Parameters:
msgs (list[Msg | None]) – The messages to record to memory.
memory_type (str | None, optional) – The type of memory to use. Default is None, to create a semantic memory. “procedural_memory” is explicitly used for procedural memories.
infer (bool, optional) – Whether to infer memory from the content. Default is True.
**kwargs (Any) – Additional keyword arguments for the mem0 recording.
- Return type:
None
- async retrieve(msg, limit=5, **kwargs)[source]¶
Retrieve the content from the long-term memory.
- Parameters:
msg (Msg | list[Msg] | None) – The message to search for in the memory, which should be specific and concise, e.g. the person’s name, the date, the location, etc.
limit (int, optional) – The maximum number of memories to retrieve per search.
**kwargs (Any) – Additional keyword arguments.
- Returns:
The retrieved memory
- Return type:
str