Human-in-the-loop वर्कफ़्लो
रिफंड, कॉन्ट्रैक्ट में बदलाव और प्रोडक्शन डिप्लॉयमेंट मिनटों या दिनों तक किसी व्यक्ति के अनुमोदन का इंतज़ार करते हैं, बिना कोई process खुला रखे।
LangGraph एजेंट को HotKV पर persist कीजिए। Graph की स्थिति में pause, resume और time-travel कीजिए, और long-term memory को अर्थ के आधार पर खोजने लायक रखिए।
Checkpointer और store के लिए एक ही पैकेज। Python 3.10 या नया।
असली HotKV कमांड और उदाहरण रिस्पॉन्स के साथ एक एनिमेटेड वॉकथ्रू। किसी भी कदम पर क्लिक करके वहां पहुंचें। कमांड और रिस्पॉन्स अंग्रेज़ी में ही रहते हैं, ठीक वैसे जैसे आप HotKV में टाइप करते और देखते हैं।
जो LangGraph एजेंट अपनी स्थिति process की मेमोरी में रखता है, वह रीस्टार्ट पर सब कुछ खो देता है। Human-in-the-loop अनुमोदन रात भर इंतज़ार नहीं कर सकते, फेल हुए रन दोबारा शुरू नहीं हो सकते, और एजेंट ने जो सीखा वह अगली बातचीत तक नहीं बचता।
langgraph-checkpoint-hotkv हर graph के checkpoints HotKV में रखता है। Graph को रोककर फिर चलाया जा सकता है, या किसी भी पिछले स्टेप तक वापस ले जाकर वहाँ से नई branch बनाई जा सकती है। साथी store threads के पार long-term memory रखता है, जिसे namespace से, filter से या, embedding मॉडल के साथ, अर्थ से खोजा जाता है।
Checkpointer और store के लिए एक ही पैकेज। Python 3.10 या नया।
pip install langgraph-checkpoint-hotkvGraph का हर स्टेप अब HotKV में सेव होता है।
graph = builder.compile(checkpointer=HotKVSaver(hotkv.from_url("hotkv://localhost:6379")), interrupt_before=["refund"])Graph अपने स्टेप पूरे करता है, हर स्टेप के बाद एक checkpoint सेव करता है, और रिफंड से पहले रुक जाता है।
graph.invoke({"messages": [("user", "Refund order 1182")]}, {"configurable": {"thread_id": "t-81"}})Process रात में रीस्टार्ट हो गया। स्थिति अब भी HotKV में है और उसी स्टेप पर इंतज़ार कर रही है।
graph.get_state({"configurable": {"thread_id": "t-81"}}).nextअनुमोदक हाँ कहता है और graph सेव किए गए checkpoint से आगे बढ़ता है।
graph.invoke(None, {"configurable": {"thread_id": "t-81"}})Long-term memory store में रहती है और बाद की किसी भी बातचीत में फिर मिल जाती है।
store.put(("users", "42"), "prefs", {"refunds": "prefers store credit"})रिफंड, कॉन्ट्रैक्ट में बदलाव और प्रोडक्शन डिप्लॉयमेंट मिनटों या दिनों तक किसी व्यक्ति के अनुमोदन का इंतज़ार करते हैं, बिना कोई process खुला रखे।
जो रन स्टेप 40 पर फेल होता है, वह शुरू से नहीं बल्कि स्टेप 40 से फिर चलता है।
किसी भी पिछले checkpoint पर लौटिए, इनपुट बदलिए और branch कीजिए, ताकि देख सकें कि एजेंट कैसे व्यवहार करता।
HotKVSaver और AsyncHotKVSaver रनों के बीच graph की स्थिति रखते हैं, interrupt, resume और time travel के साथ।
HotKVStore threads के पार items रखता है, जिन्हें namespace, filter या अर्थ से खोजा जा सकता है, वैकल्पिक expiry के साथ।
LangGraph की अपनी checkpointer conformance suite पास करता है, 8 क्षमताओं में 81 टेस्ट, दोनों saver के लिए।
HotKV के कोर डेटा टाइप और उसके vector index का उपयोग करता है, और 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"}})नहीं। Checkpointer और store HotKV के कोर डेटा टाइप और vector index का उपयोग करते हैं, और लाइसेंस वाले या बिना लाइसेंस वाले सर्वर पर काम करते हैं।
हाँ। AsyncHotKVSaver और AsyncHotKVStore ainvoke और astream के साथ काम करते हैं।
हाँ। सब कुछ एक key prefix के तहत रखा जाता है, जो डिफ़ॉल्ट रूप से langgraph है और जिसे आप हर ऐप या एनवायरनमेंट के लिए बदल सकते हैं।
HotKV Redis प्रोटोकॉल बोलता है, इसलिए आप किसी मौजूदा क्लाइंट को इसकी ओर इंगित करके यही कमांड चला सकते हैं।