mirror of
https://github.com/agentscope-ai/ReMe.git
synced 2026-08-28 05:25:04 +00:00
update: resolve JSONDecodeError in task_memory_validation
This commit is contained in:
parent
4bb260ddad
commit
5cbf9f3f14
4 changed files with 25 additions and 9 deletions
|
|
@ -42,4 +42,4 @@ __all__ = [
|
|||
|
||||
for name in __all__:
|
||||
tool_class = globals()[name]
|
||||
R.op.register()(tool_class)
|
||||
R.ops.register()(tool_class)
|
||||
|
|
|
|||
|
|
@ -19,11 +19,15 @@ class MemoryAddition(BaseOp):
|
|||
"""Execute the memory insertion operation.
|
||||
|
||||
Inserts new or updated memories into the vector store:
|
||||
1. Reads memory_list from response.metadata
|
||||
2. Converts MemoryNode objects to VectorNode objects
|
||||
3. Inserts them into the vector store
|
||||
1. Reads memory_list from context (can be dicts or MemoryNode)
|
||||
2. Converts raw items to MemoryNode objects
|
||||
3. Converts MemoryNode objects to VectorNode objects
|
||||
4. Inserts them into the vector store
|
||||
"""
|
||||
insert_memory_list: List[MemoryNode] = self.context.memory_list
|
||||
raw_memory_list = self.context.memory_list
|
||||
insert_memory_list: List[MemoryNode] = [
|
||||
MemoryNode(**x) if isinstance(x, dict) else x for x in raw_memory_list
|
||||
]
|
||||
if insert_memory_list:
|
||||
insert_nodes: List[VectorNode] = [x.to_vector_node() for x in insert_memory_list]
|
||||
await self.vector_store.insert(nodes=insert_nodes)
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ class MemoryDeduplication(BaseOp):
|
|||
|
||||
for task_memory in task_memories:
|
||||
# Generate embedding for current task memory
|
||||
current_embedding = self._get_task_memory_embedding(task_memory)
|
||||
current_embedding = await self._get_task_memory_embedding(task_memory)
|
||||
|
||||
if current_embedding is None:
|
||||
logger.warning(f"Failed to generate embedding for task memory: {str(task_memory.when_to_use)[:50]}...")
|
||||
|
|
|
|||
|
|
@ -81,10 +81,22 @@ class MemoryValidation(BaseOp):
|
|||
json_pattern = r"```json\s*([\s\S]*?)\s*```"
|
||||
json_blocks = re.findall(json_pattern, response_content)
|
||||
|
||||
parsed: Dict[str, Any] = {}
|
||||
if json_blocks:
|
||||
parsed = json.loads(json_blocks[0])
|
||||
else:
|
||||
parsed = {}
|
||||
raw_json = json_blocks[0]
|
||||
try:
|
||||
parsed = json.loads(raw_json)
|
||||
except json.JSONDecodeError as json_err:
|
||||
logger.warning(
|
||||
f"JSONDecodeError in task_memory_validation, fallback to regex parse: {json_err}"
|
||||
)
|
||||
is_valid_match = re.search(r'"is_valid"\s*:\s*(true|false)', raw_json, re.IGNORECASE)
|
||||
score_match = re.search(r'"score"\s*:\s*([0-9]+(?:\.[0-9]+)?)', raw_json)
|
||||
|
||||
if is_valid_match:
|
||||
parsed["is_valid"] = is_valid_match.group(1).lower() == "true"
|
||||
if score_match:
|
||||
parsed["score"] = float(score_match.group(1))
|
||||
|
||||
is_valid = parsed.get("is_valid", True)
|
||||
score = parsed.get("score", 0.5)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue