Workflows avec validation humaine
Les remboursements, les modifications de contrat et les déploiements en production attendent la validation d'une personne, pendant des minutes ou des jours, sans garder de processus ouvert.
Persistez vos agents LangGraph sur HotKV. Mettez en pause, reprenez et remontez le temps dans l'état du graphe, et gardez une mémoire à long terme interrogeable par le sens.
Un seul paquet pour le checkpointer et le store. Python 3.10 ou plus récent.
Une démonstration animée avec de vraies commandes HotKV et des exemples de réponses. Cliquez sur une étape pour y accéder directement. Les commandes et les réponses restent en anglais, exactement comme vous les saisissez et les voyez dans HotKV.
Un agent LangGraph qui garde son état en mémoire du processus perd tout au redémarrage. Les validations humaines ne peuvent pas attendre jusqu'au lendemain, les exécutions échouées ne peuvent pas reprendre et rien de ce que l'agent a appris ne survit jusqu'à la conversation suivante.
langgraph-checkpoint-hotkv stocke les checkpoints de chaque graphe dans HotKV. Un graphe peut être interrompu puis repris, ou ramené à n'importe quelle étape antérieure pour en partir dans une autre direction. Le store associé conserve une mémoire à long terme entre les threads, retrouvée par namespace, par filtre ou, avec un modèle d'embedding, par le sens.
Un seul paquet pour le checkpointer et le store. Python 3.10 ou plus récent.
pip install langgraph-checkpoint-hotkvChaque étape du graphe est désormais enregistrée dans HotKV.
graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])Le graphe parcourt ses étapes en enregistrant un checkpoint après chacune, et s'arrête avant le remboursement.
graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})Le processus a redémarré pendant la nuit. L'état est toujours dans HotKV, à la même étape.
graph.get_state({"configurable": {"thread_id": "t-81"}}).nextLe validateur dit oui et le graphe reprend depuis le checkpoint enregistré.
graph.invoke(None, {"configurable": {"thread_id": "t-81"}})La mémoire à long terme vit dans le store et se retrouve dans n'importe quelle conversation ultérieure.
store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})Les remboursements, les modifications de contrat et les déploiements en production attendent la validation d'une personne, pendant des minutes ou des jours, sans garder de processus ouvert.
Une exécution qui échoue à l'étape 40 reprend à l'étape 40 au lieu de tout recommencer.
Revenez à n'importe quel checkpoint antérieur, modifiez l'entrée et créez une branche pour voir comment l'agent se serait comporté.
HotKVSaver et AsyncHotKVSaver conservent l'état du graphe entre les exécutions, avec interruption, reprise et retour dans le temps.
HotKVStore conserve des éléments entre les threads, interrogeables par namespace, par filtre ou par le sens, avec expiration en option.
Passe la suite de conformité officielle des checkpointers LangGraph, 81 tests sur 8 capacités, pour les deux savers.
Utilise les types de données de base de HotKV et son index vectoriel, et fonctionne avec ou sans licence enterprise.
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"}})Non. Le checkpointer et le store utilisent les types de données de base de HotKV et son index vectoriel, et fonctionnent sur un serveur avec ou sans licence.
Oui. AsyncHotKVSaver et AsyncHotKVStore fonctionnent avec ainvoke et astream.
Oui. Tout est stocké sous un préfixe de clé, langgraph par défaut, que vous pouvez changer par application ou par environnement.
HotKV parle le protocole Redis. Vous pouvez donc y connecter un client existant et exécuter ces mêmes commandes.