mirror of
https://github.com/agentscope-ai/ReMe.git
synced 2026-08-28 05:25:04 +00:00
refactor(memory): integrate procedural memory into extension module
This commit is contained in:
parent
99c12535ca
commit
1d2cc36957
35 changed files with 58 additions and 20 deletions
|
|
@ -4,7 +4,6 @@ from . import config
|
|||
from . import core
|
||||
from . import extension
|
||||
from . import memory
|
||||
from . import workflow
|
||||
from .reme import ReMe
|
||||
from .reme_cli import ReMeCli
|
||||
from .reme_fb import ReMeFb
|
||||
|
|
@ -16,7 +15,6 @@ __all__ = [
|
|||
"core",
|
||||
"extension",
|
||||
"memory",
|
||||
"workflow",
|
||||
"ReMe",
|
||||
"ReMeCli",
|
||||
"ReMeFb",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
"""Extension operations and tools."""
|
||||
|
||||
from . import procedural_memory
|
||||
from .simple_chat import SimpleChat
|
||||
from .stream_chat import StreamChat
|
||||
from .test_op import TestOp
|
||||
|
|
@ -7,6 +8,7 @@ from .translate_ts import TranslateTs
|
|||
from ..core.registry_factory import R
|
||||
|
||||
__all__ = [
|
||||
"procedural_memory",
|
||||
"SimpleChat",
|
||||
"StreamChat",
|
||||
"TestOp",
|
||||
|
|
|
|||
|
|
@ -5,11 +5,12 @@ from ....core.enumeration import Role, MemoryType
|
|||
from ....core.schema import Message
|
||||
from ....core.utils import format_messages
|
||||
|
||||
|
||||
class ProceduralRetriever(BaseMemoryAgent):
|
||||
"""Agent responsible for retrieving procedural memories."""
|
||||
|
||||
memory_type: MemoryType = MemoryType.PROCEDURAL
|
||||
|
||||
|
||||
async def build_messages(self) -> list[Message]:
|
||||
"""Build messages with system prompt and user message."""
|
||||
if self.context.get("query"):
|
||||
|
|
@ -21,15 +22,15 @@ class ProceduralRetriever(BaseMemoryAgent):
|
|||
|
||||
return [
|
||||
Message(
|
||||
role=Role.SYSTEM,
|
||||
role=Role.SYSTEM,
|
||||
content=self.prompt_format(
|
||||
prompt_name="system_prompt",
|
||||
meta_memory_info=await self._read_meta_memories(),
|
||||
context=context,
|
||||
)
|
||||
),
|
||||
),
|
||||
Message(
|
||||
role=Role.USER,
|
||||
content=self.get_prompt("user_message")
|
||||
role=Role.USER,
|
||||
content=self.get_prompt("user_message"),
|
||||
),
|
||||
]
|
||||
]
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ from ....core.enumeration import Role, MemoryType
|
|||
from ....core.schema import Message
|
||||
from ....core.utils import format_messages
|
||||
|
||||
|
||||
class ProceduralSummarizer(BaseMemoryAgent):
|
||||
"""Agent responsible for summarizing procedural memories."""
|
||||
|
||||
|
|
@ -13,18 +14,18 @@ class ProceduralSummarizer(BaseMemoryAgent):
|
|||
async def build_messages(self) -> list[Message]:
|
||||
return [
|
||||
Message(
|
||||
role=Role.SYSTEM,
|
||||
role=Role.SYSTEM,
|
||||
content=self.prompt_format(
|
||||
prompt_name="system_prompt",
|
||||
context=self.description + "\n" + format_messages(self.get_messages()),
|
||||
outcome="successful task completion" if self.success else "task failure",
|
||||
memory_type=self.memory_type.value,
|
||||
memory_target=self.memory_target,
|
||||
)
|
||||
),
|
||||
),
|
||||
Message(
|
||||
role=Role.USER,
|
||||
content=self.get_prompt("user_message")
|
||||
role=Role.USER,
|
||||
content=self.get_prompt("user_message"),
|
||||
),
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -20,13 +20,48 @@ from reme.core.schema.memory_chunk import MemoryChunk
|
|||
def generate_random_text(length: int = 200) -> str:
|
||||
"""Generate random text content."""
|
||||
words = [
|
||||
"python", "function", "class", "memory", "search", "algorithm",
|
||||
"database", "vector", "embedding", "chunk", "file", "store",
|
||||
"query", "result", "performance", "test", "data", "index",
|
||||
"keyword", "text", "content", "process", "system", "module",
|
||||
"import", "return", "value", "parameter", "method", "object",
|
||||
"instance", "variable", "constant", "string", "integer", "float",
|
||||
"list", "dictionary", "tuple", "set", "array", "matrix",
|
||||
"python",
|
||||
"function",
|
||||
"class",
|
||||
"memory",
|
||||
"search",
|
||||
"algorithm",
|
||||
"database",
|
||||
"vector",
|
||||
"embedding",
|
||||
"chunk",
|
||||
"file",
|
||||
"store",
|
||||
"query",
|
||||
"result",
|
||||
"performance",
|
||||
"test",
|
||||
"data",
|
||||
"index",
|
||||
"keyword",
|
||||
"text",
|
||||
"content",
|
||||
"process",
|
||||
"system",
|
||||
"module",
|
||||
"import",
|
||||
"return",
|
||||
"value",
|
||||
"parameter",
|
||||
"method",
|
||||
"object",
|
||||
"instance",
|
||||
"variable",
|
||||
"constant",
|
||||
"string",
|
||||
"integer",
|
||||
"float",
|
||||
"list",
|
||||
"dictionary",
|
||||
"tuple",
|
||||
"set",
|
||||
"array",
|
||||
"matrix",
|
||||
]
|
||||
text_words = []
|
||||
current_length = 0
|
||||
|
|
@ -59,6 +94,7 @@ def create_test_chunks(count: int = 1000, text_length: int = 10000) -> list[Memo
|
|||
|
||||
async def run_performance_test():
|
||||
"""Run keyword_search performance test."""
|
||||
# pylint: disable=protected-access
|
||||
# Setup
|
||||
test_db_path = Path("./test_keyword_perf")
|
||||
test_db_path.mkdir(exist_ok=True)
|
||||
|
|
@ -96,7 +132,7 @@ async def run_performance_test():
|
|||
|
||||
for _ in range(num_runs):
|
||||
start = time.perf_counter()
|
||||
results = await store.keyword_search(query, limit=10)
|
||||
_ = await store.keyword_search(query, limit=10)
|
||||
elapsed = time.perf_counter() - start
|
||||
times.append(elapsed)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue