ИИ и LLMАгенты

Чекпоинты LangGraph и долговременная память

Сохраняйте агентов LangGraph в HotKV. Приостанавливайте, возобновляйте и перемещайтесь по состоянию графа во времени, а долговременную память держите доступной для поиска по смыслу.

тест соответствия пройден
81
сейверы
Синхронные и асинхронные
не требуется
Без лицензии
Шаг 1 из 6
Установка

Один пакет для чекпоинтера и хранилища. Python 3.10 или новее.

Пример сеансаplaying
# Установка
$ pip install langgraph-checkpoint-hotkv
Successfully installed langgraph-checkpoint-hotkv

Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.

Проблема

Агент LangGraph, который хранит состояние в памяти процесса, теряет всё при перезапуске. Утверждения с участием человека не могут ждать до утра, неудачные запуски нельзя возобновить, и ничто из выученного агентом не доживёт до следующего разговора.

Как с этим справляется HotKV

langgraph-checkpoint-hotkv хранит чекпоинты каждого графа в HotKV. Граф можно прервать и возобновить или перемотать к любому более раннему шагу и ответвиться от него. Парное хранилище держит долговременную память между потоками, и её можно находить по пространству имён, по фильтру или, с моделью эмбеддингов, по смыслу.

Шаг за шагом

Что происходит, команда за командой

  1. 01

    Установка

    Один пакет для чекпоинтера и хранилища. Python 3.10 или новее.

    pip install langgraph-checkpoint-hotkv
  2. 02

    Компилируем с чекпоинтером HotKV

    Теперь каждый шаг графа сохраняется в HotKV.

    graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])
  3. 03

    Работаем, пока не потребуется одобрение

    Граф проходит свои шаги, сохраняя чекпоинт после каждого, и останавливается перед возвратом денег.

    graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})
  4. 04

    Через несколько часов, после перезапуска

    Процесс перезапустился за ночь. Состояние по-прежнему в HotKV и ждёт на том же шаге.

    graph.get_state({"configurable": {"thread_id": "t-81"}}).next
  5. 05

    Одобряем и возобновляем

    Утверждающий говорит «да», и граф продолжает с сохранённого чекпоинта.

    graph.invoke(None, {"configurable": {"thread_id": "t-81"}})
  6. 06

    Помним между потоками

    Долговременная память хранится в хранилище и находится снова в любом последующем разговоре.

    store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})
Где это уместно

Реальные сценарии

Процессы с участием человека

Возвраты, изменения договоров и развёртывания в продакшене ждут одобрения человека минуты или дни, не удерживая открытым процесс.

Долго работающие исследовательские агенты

Запуск, упавший на шаге 40, возобновляется с шага 40, а не начинается заново.

Отладка и оценка

Вернитесь к любому более раннему чекпоинту, измените входные данные и ответвитесь, чтобы увидеть, как повёл бы себя агент.

Встроено

Что вы получаете

Чекпоинтер

HotKVSaver и AsyncHotKVSaver хранят состояние графа между запусками, с прерыванием, возобновлением и перемещением во времени.

Долговременное хранилище

HotKVStore хранит элементы между потоками, с поиском по пространству имён, фильтру или смыслу и необязательным сроком жизни.

Проверено на соответствие

Проходит собственный набор тестов соответствия чекпоинтеров LangGraph, 81 тест по 8 возможностям, для обоих сейверов.

Без модулей, без лицензии

Использует основные типы данных HotKV и его векторный индекс и работает как с корпоративной лицензией, так и без неё.

Чекпоинтер и хранилище

python
from langgraph.checkpoint.hotkv import HotKVSaver

with HotKVSaver.from_conn_string("hotkv://localhost:6379") as checkpointer:
    graph = builder.compile(checkpointer=checkpointer)
    graph.invoke({"messages": [("user", "hi")]}, {"configurable": {"thread_id": "1"}})
Справочник:hotkv-langgraph on GitHub

Частые вопросы

Нужна ли корпоративная лицензия?

Нет. Чекпоинтер и хранилище используют основные типы данных HotKV и векторный индекс и работают на сервере как с лицензией, так и без неё.

Поддерживается ли async?

Да. AsyncHotKVSaver и AsyncHotKVStore работают с ainvoke и astream.

Могут ли несколько приложений делить один сервер?

Да. Всё хранится под префиксом ключей, по умолчанию langgraph, который можно менять для каждого приложения или среды.

Связанные сценарии

Попробуйте на своей нагрузке

HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.