Процессы с участием человека
Возвраты, изменения договоров и развёртывания в продакшене ждут одобрения человека минуты или дни, не удерживая открытым процесс.
Сохраняйте агентов LangGraph в HotKV. Приостанавливайте, возобновляйте и перемещайтесь по состоянию графа во времени, а долговременную память держите доступной для поиска по смыслу.
Один пакет для чекпоинтера и хранилища. Python 3.10 или новее.
Анимированная демонстрация с настоящими командами HotKV и примерами ответов. Нажмите на любой шаг, чтобы перейти к нему. Команды и ответы остаются на английском, ровно так, как вы вводите и видите их в HotKV.
Агент LangGraph, который хранит состояние в памяти процесса, теряет всё при перезапуске. Утверждения с участием человека не могут ждать до утра, неудачные запуски нельзя возобновить, и ничто из выученного агентом не доживёт до следующего разговора.
langgraph-checkpoint-hotkv хранит чекпоинты каждого графа в HotKV. Граф можно прервать и возобновить или перемотать к любому более раннему шагу и ответвиться от него. Парное хранилище держит долговременную память между потоками, и её можно находить по пространству имён, по фильтру или, с моделью эмбеддингов, по смыслу.
Один пакет для чекпоинтера и хранилища. Python 3.10 или новее.
pip install langgraph-checkpoint-hotkvТеперь каждый шаг графа сохраняется в HotKV.
graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])Граф проходит свои шаги, сохраняя чекпоинт после каждого, и останавливается перед возвратом денег.
graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})Процесс перезапустился за ночь. Состояние по-прежнему в HotKV и ждёт на том же шаге.
graph.get_state({"configurable": {"thread_id": "t-81"}}).nextУтверждающий говорит «да», и граф продолжает с сохранённого чекпоинта.
graph.invoke(None, {"configurable": {"thread_id": "t-81"}})Долговременная память хранится в хранилище и находится снова в любом последующем разговоре.
store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})Возвраты, изменения договоров и развёртывания в продакшене ждут одобрения человека минуты или дни, не удерживая открытым процесс.
Запуск, упавший на шаге 40, возобновляется с шага 40, а не начинается заново.
Вернитесь к любому более раннему чекпоинту, измените входные данные и ответвитесь, чтобы увидеть, как повёл бы себя агент.
HotKVSaver и AsyncHotKVSaver хранят состояние графа между запусками, с прерыванием, возобновлением и перемещением во времени.
HotKVStore хранит элементы между потоками, с поиском по пространству имён, фильтру или смыслу и необязательным сроком жизни.
Проходит собственный набор тестов соответствия чекпоинтеров LangGraph, 81 тест по 8 возможностям, для обоих сейверов.
Использует основные типы данных HotKV и его векторный индекс и работает как с корпоративной лицензией, так и без неё.
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 и векторный индекс и работают на сервере как с лицензией, так и без неё.
Да. AsyncHotKVSaver и AsyncHotKVStore работают с ainvoke и astream.
Да. Всё хранится под префиксом ключей, по умолчанию langgraph, который можно менять для каждого приложения или среды.
HotKV понимает протокол Redis, поэтому вы можете подключить к нему существующий клиент и выполнить те же команды.