Co-authored-by: ly-wang19 <ly-wang19@users.noreply.github.com>
This commit is contained in:
+21
-4
@@ -726,6 +726,7 @@ class Memory(MemoryBase):
|
||||
infer: bool = True,
|
||||
memory_type: Optional[str] = None,
|
||||
prompt: Optional[str] = None,
|
||||
llm=None,
|
||||
):
|
||||
"""
|
||||
Create a new memory.
|
||||
@@ -802,7 +803,7 @@ class Memory(MemoryBase):
|
||||
)
|
||||
|
||||
if agent_id is not None and memory_type == MemoryType.PROCEDURAL.value:
|
||||
results = self._create_procedural_memory(messages, metadata=processed_metadata, prompt=prompt)
|
||||
results = self._create_procedural_memory(messages, metadata=processed_metadata, prompt=prompt, llm=llm)
|
||||
scale_threshold_notice = detect_scale_threshold_from_add_result(self, results)
|
||||
if temporal_usage_notice:
|
||||
display_temporal_usage_notice(self, "sync", "add", *temporal_usage_notice)
|
||||
@@ -1910,15 +1911,27 @@ class Memory(MemoryBase):
|
||||
)
|
||||
return memory_id
|
||||
|
||||
def _create_procedural_memory(self, messages, metadata=None, prompt=None):
|
||||
def _create_procedural_memory(self, messages, metadata=None, llm=None, prompt=None):
|
||||
"""
|
||||
Create a procedural memory
|
||||
|
||||
Args:
|
||||
messages (list): List of messages to create a procedural memory from.
|
||||
metadata (dict): Metadata to create a procedural memory from.
|
||||
llm (llm, optional): LLM to use for the procedural memory creation. Defaults to None.
|
||||
prompt (str, optional): Prompt to use for the procedural memory creation. Defaults to None.
|
||||
"""
|
||||
if llm is not None:
|
||||
try:
|
||||
from langchain_core.messages.utils import (
|
||||
convert_to_messages, # type: ignore
|
||||
)
|
||||
except Exception:
|
||||
logger.error(
|
||||
"Import error while loading langchain-core. Please install 'langchain-core' to use procedural memory."
|
||||
)
|
||||
raise
|
||||
|
||||
logger.info("Creating procedural memory")
|
||||
|
||||
parsed_messages = [
|
||||
@@ -1931,8 +1944,12 @@ class Memory(MemoryBase):
|
||||
]
|
||||
|
||||
try:
|
||||
procedural_memory = self.llm.generate_response(messages=parsed_messages)
|
||||
procedural_memory = remove_code_blocks(procedural_memory)
|
||||
if llm is not None:
|
||||
response = llm.invoke(input=convert_to_messages(parsed_messages))
|
||||
procedural_memory = remove_code_blocks(response.content)
|
||||
else:
|
||||
procedural_memory = self.llm.generate_response(messages=parsed_messages)
|
||||
procedural_memory = remove_code_blocks(procedural_memory)
|
||||
except Exception as e:
|
||||
logger.error(f"Error generating procedural memory summary: {e}")
|
||||
raise
|
||||
|
||||
Reference in New Issue
Block a user