Fluxuri de lucru cu om în buclă
Rambursările, modificările de contract și deploy-urile în producție așteaptă aprobarea unei persoane, minute sau zile, fără să țină un proces deschis.
Persistați agenții LangGraph pe HotKV. Puneți pe pauză, reluați și călătoriți în timp prin starea grafului, și păstrați memoria pe termen lung căutabilă după sens.
Un singur pachet pentru checkpointer și store. Python 3.10 sau mai nou.
O demonstrație animată cu comenzi HotKV reale și răspunsuri de exemplu. Faceți clic pe orice pas pentru a sări la el. Comenzile și răspunsurile rămân în engleză, exact așa cum le tastați și le vedeți în HotKV.
Un agent LangGraph care își ține starea în memoria procesului pierde tot la o repornire. Aprobările cu om în buclă nu pot aștepta peste noapte, rulările eșuate nu pot fi reluate și nimic din ce a învățat agentul nu supraviețuiește până la conversația următoare.
langgraph-checkpoint-hotkv stochează în HotKV checkpoint-urile fiecărui graf. Un graf poate fi întrerupt și reluat sau derulat înapoi la orice pas anterior și ramificat de acolo. Store-ul însoțitor păstrează memoria pe termen lung între thread-uri, găsită după spațiu de nume, după filtru sau, cu un model de embedding, după sens.
Un singur pachet pentru checkpointer și store. Python 3.10 sau mai nou.
pip install langgraph-checkpoint-hotkvFiecare pas al grafului este acum salvat în HotKV.
graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])Graful parcurge pașii, salvând un checkpoint după fiecare, și se oprește înainte de rambursare.
graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})Procesul a repornit peste noapte. Starea este încă în HotKV și așteaptă la același pas.
graph.get_state({"configurable": {"thread_id": "t-81"}}).nextAprobatorul spune da, iar graful continuă de la checkpoint-ul salvat.
graph.invoke(None, {"configurable": {"thread_id": "t-81"}})Memoria pe termen lung stă în store și este regăsită în orice conversație ulterioară.
store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})Rambursările, modificările de contract și deploy-urile în producție așteaptă aprobarea unei persoane, minute sau zile, fără să țină un proces deschis.
O rulare care eșuează la pasul 40 se reia de la pasul 40, în loc să înceapă de la zero.
Reveniți la orice checkpoint anterior, schimbați intrarea și ramificați, ca să vedeți cum s-ar fi comportat agentul.
HotKVSaver și AsyncHotKVSaver păstrează starea grafului între rulări, cu întrerupere, reluare și călătorie în timp.
HotKVStore păstrează elemente între thread-uri, căutabile după spațiu de nume, filtru sau sens, cu expirare opțională.
Trece suita de conformitate a checkpointerelor din LangGraph, 81 de teste în 8 capabilități, pentru ambele savere.
Folosește tipurile de date de bază ale HotKV și indexul lui vectorial și funcționează cu sau fără o licență 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"}})Nu. Checkpointerul și store-ul folosesc tipurile de date de bază ale HotKV și indexul vectorial și funcționează pe un server cu sau fără licență.
Da. AsyncHotKVSaver și AsyncHotKVStore funcționează cu ainvoke și astream.
Da. Totul este stocat sub un prefix de chei, langgraph implicit, pe care îl puteți schimba pe aplicație sau pe mediu.
HotKV vorbește protocolul Redis, așa că puteți îndrepta spre el un client existent și rula aceleași comenzi.