LangChain Reference home pageLangChain ReferenceLangChain Reference
  • GitHub
  • Main Docs
Deep Agents
LangChain
LangGraph
Integrations
LangSmith
  • Overview
  • LangGraph Checkpoint
    LangGraph Store
    Checkpoint Postgres
    Store Postgres
    Checkpoint SQLite
    LangGraph Prebuilt
    LangGraph CLI
    LangGraph SDK
    LangGraph Supervisor
    LangGraph Swarm
    ⌘I

    LangChain Assistant

    Ask a question to get started

    Enter to send•Shift+Enter new line

    Menu

    LangGraph Checkpoint
    LangGraph Store
    Checkpoint Postgres
    Store Postgres
    Checkpoint SQLite
    LangGraph Prebuilt
    LangGraph CLI
    LangGraph SDK
    LangGraph Supervisor
    LangGraph Swarm
    Language
    Theme
    Pythonlanggraph.store

    langgraph.store

    Description

    Classes

    Class

    NotProvided

    Sentinel singleton.

    Class

    Item

    Represents a stored item with metadata.

    Class

    SearchItem

    Represents an item returned from a search operation with additional metadata.

    Class

    GetOp

    Operation to retrieve a specific item by its namespace and key.

    Class

    SearchOp

    Operation to search for items within a specified namespace hierarchy.

    Class

    MatchCondition

    Represents a pattern for matching namespaces in the store.

    Class

    ListNamespacesOp

    Operation to list and filter namespaces in the store.

    Class

    PutOp

    Operation to store, update, or delete an item in the store.

    Class

    InvalidNamespaceError

    Provided namespace is invalid.

    Class

    TTLConfig

    Configuration for TTL (time-to-live) behavior in the store.

    Class

    IndexConfig

    Configuration for indexing documents for semantic search in the store.

    Class

    BaseStore

    Abstract base class for persistent key-value stores.

    Class

    AsyncBatchedBaseStore

    Efficiently batch operations in a background task.

    Class

    EmbeddingsLambda

    Wrapper to convert embedding functions into LangChain's Embeddings interface.

    Class

    InMemoryStore

    In-memory dictionary-backed store with optional vector search.

    Functions

    Function

    ensure_embeddings

    Ensure that an embedding function conforms to LangChain's Embeddings interface.

    Function

    get_text_at_path

    Extract text from an object using a path expression or pre-tokenized path.

    Function

    tokenize_path

    Tokenize a path into components.

    Modules

    Module

    store

    Module

    base

    Base classes and types for persistent key-value stores.

    Types

    Module

    batch

    Utilities for batching operations in a background task.

    Module

    embed

    Utilities for working with embedding functions and LangChain's Embeddings interface.

    Module

    memory

    In-memory dictionary-backed store with optional vector search.

    Type

    Op

    Type

    Result

    LangGraph Checkpoint

    This library defines the base interface for LangGraph checkpointers. Checkpointers provide a persistence layer for LangGraph. They allow you to interact with and manage the graph's state. When you use a graph with a checkpointer, the checkpointer saves a checkpoint of the graph state at every superstep, enabling several powerful capabilities like human-in-the-loop, "memory" between interactions and more.

    Key concepts

    Checkpoint

    Checkpoint is a snapshot of the graph state at a given point in time. Checkpoint tuple refers to an object containing checkpoint and the associated config, metadata and pending writes.

    Thread

    Threads enable the checkpointing of multiple different runs, making them essential for multi-tenant chat applications and other scenarios where maintaining separate states is necessary. A thread is a unique ID assigned to a series of checkpoints saved by a checkpointer. When using a checkpointer, you must specify a thread_id and optionally checkpoint_id when running the graph.

    • thread_id is simply the ID of a thread. This is always required.
    • checkpoint_id can optionally be passed. This identifier refers to a specific checkpoint within a thread. This can be used to kick off a run of a graph from some point halfway through a thread.

    You must pass these when invoking the graph as part of the configurable part of the config, e.g.

    {"configurable": {"thread_id": "1"}}  # valid config
    {"configurable": {"thread_id": "1", "checkpoint_id": "0c62ca34-ac19-445d-bbb0-5b4984975b2a"}}  # also valid config

    Serde

    langgraph_checkpoint also defines protocol for serialization/deserialization (serde) and provides an default implementation (langgraph.checkpoint.serde.jsonplus.JsonPlusSerializer) that handles a wide variety of types, including LangChain and LangGraph primitives, datetimes, enums and more.

    [!IMPORTANT] Checkpoint deserialization security: By default the serializer allows any Python type found in checkpoint data. New applications should set the environment variable LANGGRAPH_STRICT_MSGPACK=true or pass an explicit allowed_msgpack_modules list to JsonPlusSerializer to restrict deserialization to known-safe types.

    Pending writes

    When a graph node fails mid-execution at a given superstep, LangGraph stores pending checkpoint writes from any other nodes that completed successfully at that superstep, so that whenever we resume graph execution from that superstep we don't re-run the successful nodes.

    Interface

    Each checkpointer should conform to langgraph.checkpoint.base.BaseCheckpointSaver interface and must implement the following methods:

    • .put - Store a checkpoint with its configuration and metadata.
    • .put_writes - Store intermediate writes linked to a checkpoint (i.e. pending writes).
    • .get_tuple - Fetch a checkpoint tuple using for a given configuration (thread_id and checkpoint_id).
    • .list - List checkpoints that match a given configuration and filter criteria.
    • .delete_thread() - Delete all checkpoints and writes associated with a thread.
    • .get_next_version() - Generate the next version ID for a channel.

    If the checkpointer will be used with asynchronous graph execution (i.e. executing the graph via .ainvoke, .astream, .abatch), checkpointer must implement asynchronous versions of the above methods (.aput, .aput_writes, .aget_tuple, .alist). Similarly, the checkpointer must implement .adelete_thread() if asynchronous thread cleanup is desired. The base class provides a default implementation of .get_next_version() that generates an integer sequence starting from 1, but this method should be overridden for custom versioning schemes.

    Usage

    from langgraph.checkpoint.memory import InMemorySaver
    
    write_config = {"configurable": {"thread_id": "1", "checkpoint_ns": ""}}
    read_config = {"configurable": {"thread_id": "1"}}
    
    checkpointer = InMemorySaver()
    checkpoint = {
        "v": 4,
        "ts": "2024-07-31T2019.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
          }
        },
    }
    
    # store checkpoint
    checkpointer.put(write_config, checkpoint, {}, {})
    
    # load checkpoint
    checkpointer.get(read_config)
    
    # list checkpoints
    list(checkpointer.list(read_config))