mirror of
https://github.com/FoundationAgents/MetaGPT.git
synced 2026-04-30 19:36:24 +02:00
Merge branch 'feat-memory-opt' into 'mgx_ops'
make memory_k configurable See merge request pub/MetaGPT!392
This commit is contained in:
commit
31e0a46e6a
4 changed files with 19 additions and 4 deletions
|
|
@ -86,6 +86,9 @@ exp_pool:
|
|||
role_zero:
|
||||
enable_longterm_memory: false # Whether to use long-term memory. Default is `false`.
|
||||
longterm_memory_persist_path: .role_memory_data # The directory to save data.
|
||||
memory_k: 200 # The capacity of short-term memory.
|
||||
similarity_top_k: 5 # The number of long-term memories to retrieve.
|
||||
use_llm_ranker: false # Whether to use LLM Reranker to get better result. Default is `false`.
|
||||
|
||||
azure_tts_subscription_key: "YOUR_SUBSCRIPTION_KEY"
|
||||
azure_tts_region: "eastus"
|
||||
|
|
|
|||
|
|
@ -6,3 +6,6 @@ from metagpt.utils.yaml_model import YamlModel
|
|||
class RoleZeroConfig(YamlModel):
|
||||
enable_longterm_memory: bool = Field(default=False, description="Whether to use long-term memory.")
|
||||
longterm_memory_persist_path: str = Field(default=".role_memory_data", description="The directory to save data.")
|
||||
memory_k: int = Field(default=200, description="The capacity of short-term memory.")
|
||||
similarity_top_k: int = Field(default=5, description="The number of long-term memories to retrieve.")
|
||||
use_llm_ranker: bool = Field(default=False, description="Whether to use LLM Reranker to get better result.")
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ class RoleZeroLongTermMemory(Memory):
|
|||
persist_path: str = Field(default=".role_memory_data", description="The directory to save data.")
|
||||
collection_name: str = Field(default="role_zero", description="The name of the collection, such as the role name.")
|
||||
memory_k: int = Field(default=200, description="The capacity of short-term memory.")
|
||||
similarity_top_k: int = Field(default=5, description="The number of long-term memories to retrieve.")
|
||||
use_llm_ranker: bool = Field(default=False, description="Whether to use LLM Reranker to get better result.")
|
||||
|
||||
_rag_engine: Any = None
|
||||
|
||||
|
|
@ -49,14 +51,18 @@ class RoleZeroLongTermMemory(Memory):
|
|||
|
||||
try:
|
||||
from metagpt.rag.engines import SimpleEngine
|
||||
from metagpt.rag.schema import ChromaRetrieverConfig
|
||||
from metagpt.rag.schema import ChromaRetrieverConfig, LLMRankerConfig
|
||||
except ImportError:
|
||||
raise ImportError("To use the RoleZeroMemory, you need to install the rag module.")
|
||||
|
||||
retriever_configs = [
|
||||
ChromaRetrieverConfig(persist_path=self.persist_path, collection_name=self.collection_name)
|
||||
ChromaRetrieverConfig(
|
||||
persist_path=self.persist_path,
|
||||
collection_name=self.collection_name,
|
||||
similarity_top_k=self.similarity_top_k,
|
||||
)
|
||||
]
|
||||
ranker_configs = []
|
||||
ranker_configs = [LLMRankerConfig()] if self.use_llm_ranker else []
|
||||
|
||||
rag_engine = SimpleEngine.from_objs(retriever_configs=retriever_configs, ranker_configs=ranker_configs)
|
||||
|
||||
|
|
|
|||
|
|
@ -181,11 +181,14 @@ class RoleZero(Role):
|
|||
"""
|
||||
|
||||
if self.config.role_zero.enable_longterm_memory:
|
||||
# Use config.role_zero to initialize long-term memory
|
||||
self.rc.memory = RoleZeroLongTermMemory(
|
||||
**self.rc.memory.model_dump(),
|
||||
persist_path=self.config.role_zero.longterm_memory_persist_path,
|
||||
collection_name=self.name.replace(" ", ""),
|
||||
memory_k=self.memory_k,
|
||||
memory_k=self.config.role_zero.memory_k,
|
||||
similarity_top_k=self.config.role_zero.similarity_top_k,
|
||||
use_llm_ranker=self.config.role_zero.use_llm_ranker,
|
||||
)
|
||||
logger.info(f"Long-term memory set for role '{self.name}'")
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue