Skip to content

Commit d40eab0

Browse files
author
summerx96
committed
feat(memory): add SQLite memory service
1 parent 94d48fc commit d40eab0

File tree

6 files changed

+757
-0
lines changed

6 files changed

+757
-0
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Memory Sample
2+
3+
This sample demonstrates memory usage with ADK. The included `main.py` uses
4+
in-memory services for simplicity. For persistent local memory, use SQLite.
5+
6+
## Persistent Local Memory (SQLite)
7+
8+
Programmatic usage:
9+
10+
```python
11+
from google.adk.memory.sqlite_memory_service import SqliteMemoryService
12+
from google.adk.runners import Runner
13+
from google.adk.sessions.in_memory_session_service import InMemorySessionService
14+
15+
memory_service = SqliteMemoryService(db_path="memory.db")
16+
runner = Runner(
17+
app_name="my_app",
18+
agent=agent.root_agent,
19+
session_service=InMemorySessionService(),
20+
memory_service=memory_service,
21+
)
22+
```
23+
24+
CLI usage (supported for `adk web` and `adk api_server`):
25+
26+
```bash
27+
adk web path/to/agents_dir --memory_service_uri=sqlite:///memory.db
28+
```
29+
30+
Notes:
31+
- `sqlite:///memory.db` uses a relative path.
32+
- `sqlite:////abs/path/memory.db` uses an absolute path.
33+
- `adk run` currently ignores `--memory_service_uri`.

src/google/adk/cli/service_registry.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,22 @@ def agentengine_memory_factory(uri: str, **kwargs):
317317
)
318318
return VertexAiMemoryBankService(**params)
319319

320+
def sqlite_memory_factory(uri: str, **kwargs):
321+
from ..memory.sqlite_memory_service import SqliteMemoryService
322+
323+
parsed = urlparse(uri)
324+
db_path = parsed.path
325+
if not db_path:
326+
db_path = ":memory:"
327+
elif db_path.startswith("/"):
328+
db_path = db_path[1:]
329+
kwargs_copy = kwargs.copy()
330+
kwargs_copy.pop("agents_dir", None)
331+
return SqliteMemoryService(db_path=db_path, **kwargs_copy)
332+
320333
registry.register_memory_service("rag", rag_memory_factory)
321334
registry.register_memory_service("agentengine", agentengine_memory_factory)
335+
registry.register_memory_service("sqlite", sqlite_memory_factory)
322336

323337

324338
def _load_gcp_config(

src/google/adk/memory/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@
1515

1616
from .base_memory_service import BaseMemoryService
1717
from .in_memory_memory_service import InMemoryMemoryService
18+
from .sqlite_memory_service import SqliteMemoryService
1819
from .vertex_ai_memory_bank_service import VertexAiMemoryBankService
1920

2021
logger = logging.getLogger('google_adk.' + __name__)
2122

2223
__all__ = [
2324
'BaseMemoryService',
2425
'InMemoryMemoryService',
26+
'SqliteMemoryService',
2527
'VertexAiMemoryBankService',
2628
]
2729

0 commit comments

Comments
 (0)