Workflow human-in-the-loop
Rimborsi, modifiche ai contratti e deploy in produzione attendono l'approvazione di una persona, per minuti o giorni, senza tenere aperto un processo.
Rendi persistenti gli agenti LangGraph su HotKV. Metti in pausa, riprendi e viaggia nel tempo attraverso lo stato del grafo, con una memoria a lungo termine ricercabile per significato.
Un solo pacchetto per il checkpointer e lo store. Python 3.10 o successivo.
Una dimostrazione animata con comandi HotKV reali e risposte di esempio. Clicca su un passo qualsiasi per andarci. Comandi e risposte restano in inglese, esattamente come li digiti e li vedi in HotKV.
Un agente LangGraph che tiene il suo stato nella memoria del processo perde tutto a un riavvio. Le approvazioni human-in-the-loop non possono aspettare fino al mattino, le esecuzioni fallite non si possono riprendere e nulla di ciò che l'agente ha imparato arriva alla conversazione successiva.
langgraph-checkpoint-hotkv salva i checkpoint di ogni grafo in HotKV. Un grafo può essere interrotto e ripreso, oppure riavvolto a qualsiasi passo precedente e diramato da lì. Lo store abbinato conserva la memoria a lungo termine tra i thread, ritrovata per namespace, per filtro o, con un modello di embedding, per significato.
Un solo pacchetto per il checkpointer e lo store. Python 3.10 o successivo.
pip install langgraph-checkpoint-hotkvOgni passo del grafo ora viene salvato in HotKV.
graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])Il grafo procede nei suoi passi, salvando un checkpoint dopo ognuno, e si ferma prima del rimborso.
graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})Il processo è ripartito durante la notte. Lo stato è ancora in HotKV, in attesa allo stesso passo.
graph.get_state({"configurable": {"thread_id": "t-81"}}).nextL'approvatore dice sì e il grafo continua dal checkpoint salvato.
graph.invoke(None, {"configurable": {"thread_id": "t-81"}})La memoria a lungo termine vive nello store e si ritrova in qualsiasi conversazione successiva.
store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})Rimborsi, modifiche ai contratti e deploy in produzione attendono l'approvazione di una persona, per minuti o giorni, senza tenere aperto un processo.
Un'esecuzione che fallisce al passo 40 riprende dal passo 40 invece di ricominciare da capo.
Torna a qualsiasi checkpoint precedente, cambia l'input e crea un ramo, per vedere come si sarebbe comportato l'agente.
HotKVSaver e AsyncHotKVSaver conservano lo stato del grafo tra le esecuzioni, con interruzione, ripresa e viaggio nel tempo.
HotKVStore conserva elementi tra i thread, ricercabili per namespace, filtro o significato, con scadenza opzionale.
Supera la suite di conformità per checkpointer di LangGraph, 81 test in 8 capacità, per entrambi i saver.
Usa i tipi di dati core di HotKV e il suo indice vettoriale, e funziona con o senza una licenza 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"}})No. Il checkpointer e lo store usano i tipi di dati core di HotKV e l'indice vettoriale, e funzionano su un server con o senza licenza.
Sì. AsyncHotKVSaver e AsyncHotKVStore funzionano con ainvoke e astream.
Sì. Tutto viene salvato sotto un prefisso di chiave, langgraph di default, che puoi cambiare per applicazione o ambiente.
HotKV parla il protocollo Redis, quindi puoi puntarci un client esistente ed eseguire questi stessi comandi.