google / google/adk-python

No way to delete memories from a MemoryService

Abierto
#6,949 3 comentarios 0 reacciones 1 asignado Reclamado por @sanketpatil06 Ver en GitHub
needs review services
Lenguaje dominante
Python
Estrellas
21.5k
Forks
4k
Merge medio
1 d 14 h
PR fusionados (30 d)
37

Descripción

### 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

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.