Library with a Postgres implementation of LangGraph checkpoint saver.
Project description
LangGraph Checkpoint Postgres
Implementation of LangGraph CheckpointSaver that uses Postgres.
Dependencies
By default langgraph-checkpoint-postgres
installs psycopg
(Psycopg 3) without any extras. However, you can choose a specific installation that best suits your needs here (for example, psycopg[binary]
).
Usage
[!IMPORTANT] When using Postgres checkpointers for the first time, make sure to call
.setup()
method on them to create required tables. See example below.
[!IMPORTANT] When manually creating Postgres connections and passing them to
PostgresSaver
orAsyncPostgresSaver
, make sure to includeautocommit=True
androw_factory=dict_row
(from psycopg.rows import dict_row
). See a full example in this how-to guide.
from langgraph.checkpoint.postgres import PostgresSaver
write_config = {"configurable": {"thread_id": "1", "checkpoint_ns": ""}}
read_config = {"configurable": {"thread_id": "1"}}
DB_URI = "postgres://postgres:postgres@localhost:5432/postgres?sslmode=disable"
with PostgresSaver.from_conn_string(DB_URI) as checkpointer:
# call .setup() the first time you're using the checkpointer
checkpointer.setup()
checkpoint = {
"v": 1,
"ts": "2024-07-31T20:14:19.804150+00:00",
"id": "1ef4f797-8335-6428-8001-8a1503f9b875",
"channel_values": {
"my_key": "meow",
"node": "node"
},
"channel_versions": {
"__start__": 2,
"my_key": 3,
"start:node": 3,
"node": 3
},
"versions_seen": {
"__input__": {},
"__start__": {
"__start__": 1
},
"node": {
"start:node": 2
}
},
"pending_sends": [],
}
# store checkpoint
checkpointer.put(write_config, checkpoint, {}, {})
# load checkpoint
checkpointer.get(read_config)
# list checkpoints
list(checkpointer.list(read_config))
Async
from langgraph.checkpoint.postgres.aio import AsyncPostgresSaver
async with AsyncPostgresSaver.from_conn_string(DB_URI) as checkpointer:
checkpoint = {
"v": 1,
"ts": "2024-07-31T20:14:19.804150+00:00",
"id": "1ef4f797-8335-6428-8001-8a1503f9b875",
"channel_values": {
"my_key": "meow",
"node": "node"
},
"channel_versions": {
"__start__": 2,
"my_key": 3,
"start:node": 3,
"node": 3
},
"versions_seen": {
"__input__": {},
"__start__": {
"__start__": 1
},
"node": {
"start:node": 2
}
},
"pending_sends": [],
}
# store checkpoint
await checkpointer.aput(write_config, checkpoint, {}, {})
# load checkpoint
await checkpointer.aget(read_config)
# list checkpoints
[c async for c in checkpointer.alist(read_config)]
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for gigagraph_checkpoint_postgres-1.0.6.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d54c3f00e059f8785b56074d40bdc1b9ea4d1cbc3444ca74bf7bd41aa6cd6e0b |
|
MD5 | 9381283c2c12da5229e694c1e316aff6 |
|
BLAKE2b-256 | ca0ffc43704224003541d06e3b116e8c8e01c5c5d68fca6f976b5a7dfb70d7b2 |
Hashes for gigagraph_checkpoint_postgres-1.0.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ae8dec792d80fec9275755bae6f7865675d8a643764114f3d8e48cdacee5c19e |
|
MD5 | 60d54f011cf869a2ccf584d9796386e0 |
|
BLAKE2b-256 | 1904e894d9a9a043f9b5ba3eaa89a7656157146b66cab83dcee2afd591c7fe9c |