fix: address reviewer bugs — metadata mutation, test args, embedding dict, output_format
1. Fix _create_procedural_memory metadata mutation: use spread operator
instead of in-place dict assignment (sync + async)
2. Fix test_add assertion: remove trailing None arg that doesn't match
_add_to_vector_store(messages, metadata, filters, infer) signature
3. Restore output_format: "v1.1" in TS client search payload as fallback
4. Fix infer=False path: pass {text: embedding} dict to _create_memory
instead of raw embedding list to avoid redundant embed() calls (sync + async)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
163444e33b
commit
66446bd118
@@ -286,6 +286,7 @@ export default class MemoryClient {
|
|||||||
this._captureEvent("search", [payloadKeys]);
|
this._captureEvent("search", [payloadKeys]);
|
||||||
const payload: Record<string, any> = {
|
const payload: Record<string, any> = {
|
||||||
query,
|
query,
|
||||||
|
output_format: "v1.1",
|
||||||
...camelToSnakeKeys(options ?? {}),
|
...camelToSnakeKeys(options ?? {}),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -517,7 +517,7 @@ class Memory(MemoryBase):
|
|||||||
|
|
||||||
msg_content = message_dict["content"]
|
msg_content = message_dict["content"]
|
||||||
msg_embeddings = self.embedding_model.embed(msg_content, "add")
|
msg_embeddings = self.embedding_model.embed(msg_content, "add")
|
||||||
mem_id = self._create_memory(msg_content, msg_embeddings, per_msg_meta)
|
mem_id = self._create_memory(msg_content, {msg_content: msg_embeddings}, per_msg_meta)
|
||||||
|
|
||||||
returned_memories.append(
|
returned_memories.append(
|
||||||
{
|
{
|
||||||
@@ -1434,7 +1434,7 @@ class Memory(MemoryBase):
|
|||||||
if metadata is None:
|
if metadata is None:
|
||||||
raise ValueError("Metadata cannot be done for procedural memory.")
|
raise ValueError("Metadata cannot be done for procedural memory.")
|
||||||
|
|
||||||
metadata["memory_type"] = MemoryType.PROCEDURAL.value
|
metadata = {**metadata, "memory_type": MemoryType.PROCEDURAL.value}
|
||||||
embeddings = self.embedding_model.embed(procedural_memory, memory_action="add")
|
embeddings = self.embedding_model.embed(procedural_memory, memory_action="add")
|
||||||
memory_id = self._create_memory(procedural_memory, {procedural_memory: embeddings}, metadata=metadata)
|
memory_id = self._create_memory(procedural_memory, {procedural_memory: embeddings}, metadata=metadata)
|
||||||
capture_event("mem0._create_procedural_memory", self, {"memory_id": memory_id, "sync_type": "sync"})
|
capture_event("mem0._create_procedural_memory", self, {"memory_id": memory_id, "sync_type": "sync"})
|
||||||
@@ -1756,7 +1756,7 @@ class AsyncMemory(MemoryBase):
|
|||||||
|
|
||||||
msg_content = message_dict["content"]
|
msg_content = message_dict["content"]
|
||||||
msg_embeddings = await asyncio.to_thread(self.embedding_model.embed, msg_content, "add")
|
msg_embeddings = await asyncio.to_thread(self.embedding_model.embed, msg_content, "add")
|
||||||
mem_id = await self._create_memory(msg_content, msg_embeddings, per_msg_meta)
|
mem_id = await self._create_memory(msg_content, {msg_content: msg_embeddings}, per_msg_meta)
|
||||||
|
|
||||||
returned_memories.append(
|
returned_memories.append(
|
||||||
{
|
{
|
||||||
@@ -2688,7 +2688,7 @@ class AsyncMemory(MemoryBase):
|
|||||||
if metadata is None:
|
if metadata is None:
|
||||||
raise ValueError("Metadata cannot be done for procedural memory.")
|
raise ValueError("Metadata cannot be done for procedural memory.")
|
||||||
|
|
||||||
metadata["memory_type"] = MemoryType.PROCEDURAL.value
|
metadata = {**metadata, "memory_type": MemoryType.PROCEDURAL.value}
|
||||||
embeddings = await asyncio.to_thread(self.embedding_model.embed, procedural_memory, memory_action="add")
|
embeddings = await asyncio.to_thread(self.embedding_model.embed, procedural_memory, memory_action="add")
|
||||||
memory_id = await self._create_memory(procedural_memory, {procedural_memory: embeddings}, metadata=metadata)
|
memory_id = await self._create_memory(procedural_memory, {procedural_memory: embeddings}, metadata=metadata)
|
||||||
capture_event("mem0._create_procedural_memory", self, {"memory_id": memory_id, "sync_type": "async"})
|
capture_event("mem0._create_procedural_memory", self, {"memory_id": memory_id, "sync_type": "async"})
|
||||||
|
|||||||
+1
-1
@@ -86,7 +86,7 @@ def test_add(memory_instance, version, enable_graph):
|
|||||||
assert result["results"] == [{"memory": "Test memory", "event": "ADD"}]
|
assert result["results"] == [{"memory": "Test memory", "event": "ADD"}]
|
||||||
|
|
||||||
memory_instance._add_to_vector_store.assert_called_once_with(
|
memory_instance._add_to_vector_store.assert_called_once_with(
|
||||||
[{"role": "user", "content": "Test message"}], {"user_id": "test_user"}, {"user_id": "test_user"}, True, None
|
[{"role": "user", "content": "Test message"}], {"user_id": "test_user"}, {"user_id": "test_user"}, True
|
||||||
)
|
)
|
||||||
|
|
||||||
# Remove the conditional assertion for _add_to_graph
|
# Remove the conditional assertion for _add_to_graph
|
||||||
|
|||||||
Reference in New Issue
Block a user