google / google/adk-python

No way to delete memories from a MemoryService

Ouverte
#6,949 3 commentaires 0 réactions 1 personne assignée Réclamée par @sanketpatil06 Voir sur GitHub
needs review services
Langage dominant
Python
Étoiles
21.5k
Forks
4k
Merge moyen
1 j 14 h
PR mergées (30 j)
37

Description

### Is your feature request related to a specific problem?

`BaseSessionService` has `delete_session` and `BaseArtifactService` has `delete_artifact`, but `BaseMemoryService` only has `add_session_to_memory`, `add_events_to_memory`, `add_memory` and `search_memory`. Once something is written to memory there is no way to remove it through ADK.

This comes up when a user asks for their data to be deleted. Sessions and artifacts I can handle. Whatever was extracted into long-term memory I cannot, so I end up going around ADK and deleting straight from the backing store.

Most of the pieces are already there. `MemoryEntry` has an `id` field, and the Vertex API has `projects.locations.reasoningEngines.memories.delete`. `VertexAiMemoryBankService` just doesn't wrap it. It only uses `memories.create`, `memories.generate` and `memories.ingest_events`.

### Describe the Solution You'd Like

Two methods on `BaseMemoryService`:

```python
async def delete_memory(self, *, app_name: str, user_id: str, memory_id: str) -> None
async def delete_memories(self, *, app_name: str, user_id: str) -> None
```

First one deletes a single entry, second one everything stored for a user.

For `VertexAiMemoryBankService` both map onto `memories.delete`. `InMemoryMemoryService` keeps a dict so it's easy. Implementations that can't support it could raise `NotImplementedError`.

### Impact on your work

I'm building agents for users in the EU, where a deletion request has to be answered within a month. Right now the memory part of that is a manual step outside ADK, and it's the part I can't show was actually done.

### Willingness to contribute

Yes, happy to open a PR if you're OK with the method names and signatures.

### Describe Alternatives You've Considered

Deleting from the backing store directly. It works but it's different for every implementation and bypasses ADK completely. The other option is not using MemoryService at all.

### Version

google-adk 2.8.0

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.