चेकपॉइंट और रोलबैक
Type: Learn
Languages: Python (stdlib, checkpoint and rollback state machine)
Prerequisites: Phase 15 · 12 (Durable execution), Phase 15 · 15 (Propose-then-commit)
Time: ~60 minutes
समस्या
टिकाऊ निष्पादन (पाठ 12) एक क्रैश किए गए एजेंट को फिर से शुरू करने योग्य बनाता है। प्रस्ताव-फिर-कमाइंड (पाठ 15) एक स्वीकृत कार्रवाई को ऑडिट करने योग्य बनाता है। यह सबक उन्हें जोड़ता हैः जब एक स्वीकृत कार्रवाई आंशिक रूप से निष्पादित होती है, क्रैश होती है, और फिर से शुरू होती है, तो क्या होता है? कब रूलबैक चलता है, और किस राज्य के खिलाफ?
वास्तविक प्रणालियों अलग तरीके से इसे तारः
- LangGraphपोस्टग्रेएसक्यूएल में प्रत्येक ग्राफ-स्टेट संक्रमण के लिए चेकपोइंट। कर्मचारी क्रैश पर, पट्टे की छुट्टी और एक अन्य कार्यकर्ता नवीनतम चेकपोइंट पर फिर से शुरू होता है। कार्यप्रवाह पर रुकें
interrupt(), जो स्वयं बरकरार है। - Cloudflare Durable Objectsप्रति कुंजी स्थिति को घंटों या हफ्तों तक बनाए रखें। अनुमोदित कार्रवाई के लिए भंडारण के साथ गणना को एक साथ रखें।
- Microsoft Agent Frameworkउजागर करता है
Checkpointकार्यप्रवाह एपीआई में आदिम; पुनरावृत्ति प्लस विसंगति पुनः प्रयासों को कवर करती है।
प्रत्येक मामले में, संयोजन जो वास्तव में काम करता हैः असमर्थता कुंजी (दोहरी निष्पादन को रोकता है) + पूर्व शर्त जांच (राज्य अभी भी हम क्या के खिलाफ अनुमोदित किया है) + पोस्ट-कार्य सत्यापित (साइड इफेक्ट वास्तव में हुआ) + सत्यापित-विफल पर रोलबैक।
अवधारणा
हर परिवर्तन निरंतर रहता है
एक ग्राफ-स्टेट संक्रमण किसी भी चरण है जो एक नामित राज्य से दूसरे राज्य में वर्कफ़्लो को स्थानांतरित करता है। निष्पक्ष कार्यान्वयन केवल विशिष्ट प्रतिबद्धता बिंदुओं पर ही रहता है; उत्पादन कार्यान्वयन प्रत्येक संक्रमण में रहता है। लागत (कुछ अतिरिक्त लिखता है) विश्वसनीयता लाभ के सापेक्ष छोटी है (पुनर्प्रदर्शन कहीं भी भूमि, पट्टे की वसूली सटीक है) ।
पट्टे की वसूली
एक कर्मचारी दुर्घटनाग्रस्त होने पर, कार्यप्रवाह नहीं खोता है; पट्टे का (एक अल्पकालिक दावा है कि यह कार्यकर्ता इस रन को निष्पादित कर रहा है) बस समाप्त हो जाता है। एक अन्य कार्यकर्ता नवीनतम चेकपोस्ट को उठाता है और फिर से शुरू करता है। पट्टे का तंत्र वह है जो उत्पादन प्रणालियों को उड़ान में काम खोए बिना रोलिंग तैनाती में जीवित रहने की अनुमति देता है।
अशक्तता प्लस पूर्व शर्तें
अकेले अशक्तता ही पर्याप्त नहीं है। विचार करेंः एक वर्कफ़्लो को "प्रसारण" के लिए अनुमोदित किया जाता है।$100 from A to B when balance > $1000. " वर्कफ़्लो प्रतिबद्ध है, निष्पादन के बीच दुर्घटनाग्रस्त होता है, और फिर से शुरू होता है। यदि केवल निष्पादन कुंजी की जाँच की जाती है, और निष्पादन फिर से शुरू होता है, तो स्थानांतरण एक बार चलता है (सही) । लेकिन यह विचार करें कि दुर्घटना और फिर से शुरू के बीच, ए का शेष एक अलग वर्कफ़्लो के माध्यम से $ 500 तक गिर जाता है। निष्पादन जांच अभी भी गुजरती है; पूर्व शर्त नहीं। पूर्व शर्त जांच के बिना, हम एक ओवरड्राफ्ट भेजते हैं।
प्रत्येक परिणामी कार्रवाई के लिए दोनों की आवश्यकता होती हैः
- Idempotency key: दोहरी निष्पादन से बचाता है।
- Precondition check: पुष्टि करता है कि राज्य अभी भी अनुमोदित के साथ संगत है।
कार्रवाई के बाद की जांच
"टूल लौटा 200" सत्यापन नहीं है। वास्तविक सत्यापन लक्ष्य राज्य को फिर से पढ़ता है और साइड इफेक्ट की पुष्टि वास्तव में हुआ। पैटर्नः
- डेटाबेस अद्यतन:
UPDATE ... RETURNING *फिर लौटाए गए पंक्ति मैचों को अपेक्षित स्थिति का दावा करें। - ईमेल भेजेंः संदेश भेजने के बाद संदेश आईडी के लिए भेजे गए फ़ोल्डर की जांच करें।
- फ़ाइल लिखेंः फ़ाइल को वापस पढ़ें और इसे हैश करें।
- एपीआई कॉलः अनुवर्ती
GETलक्ष्य संसाधन पर।
यदि सत्यापन विफल रहता है, तो कार्यप्रवाह एक ज्ञात-बुरा राज्य में है. रोलबैक सक्रिय होता है.
रोलबैक योजनाएं
प्रस्ताव-तब-कमाइश (पाठ 15) में प्रत्येक परिणामी कार्रवाई में एक रोल-बैक योजना होती है।
- In-band rollback: सीधे साइड इफेक्ट को उलट दें (
DELETEके बादINSERT,Send-correction-emailभेजने के बाद) । - Compensating transaction: एक नई कार्रवाई जो मूल को निष्क्रिय करती है (मानक SAGA पैटर्न) ।
- Out-of-band rollback: एक मानव को सतर्क, काम के प्रवाह को रोकें, जांच के लिए खराब स्थिति छोड़ दें।
प्रस्ताव में नो-ऑप रोलबैक ("हम इसे रद्द नहीं कर सकते") का नाम दिया जाना चाहिए। बिना रोलबैक के कार्यों के लिए प्रतिबद्धता समय पर मजबूत एचआईटीएल की आवश्यकता होती है (पाठ 15 चुनौती-और-जवाब) ।
यूरोपीय संघ के AI अधिनियम अनुच्छेद 14 परिचालन पाठ
अनुच्छेद 14 में उच्च जोखिम वाले प्रणालियों के लिए "कार्यात्मक मानव पर्यवेक्षण" की आवश्यकता है। परिचालन के संदर्भ में, कार्यान्वयनकर्ता इसे इस प्रकार पढ़ते हैंः
- चेकपॉइंट्स एक ऑडिटर द्वारा पूछताछ योग्य हैं।
- रोलबैक का अभ्यास किया जाता है (कम से कम एक बार अंत से अंत तक परीक्षण किया जाता है) ।
- ऑडिट ट्रेल एक तैनाती से बचता है (चेकपॉइंट बैकेंड अल्पकालिक नहीं है) ।
- असफल सत्यापन को अलर्ट किया जाता है, चुपचाप लॉग नहीं किया जाता है।
एक कार्यप्रवाह जो सत्यापन + रोलबैक पथ के बिना प्रतिबद्धता के बीच दुर्घटनाग्रस्त हो जाता है, दुष्प्रभाव को फिर से शुरू करता है और पूरा करता है, वह अनुच्छेद 14 परीक्षण से नहीं बचता है।
तेज विफलता मोडः डबल-इक्ज्यूटेट
इस क्षेत्र में सबसे आम उत्पादन घटनाः
- कार्रवाई अनुमोदित, असुविधा कुंजी k.
- प्रतिबद्धता शुरू, निष्पादित, 200 वापस।
- "संबद्ध" स्थिति बनी रहने से पहले कार्यप्रवाह दुर्घटनाग्रस्त हो जाता है।
- कार्यप्रवाह को फिर से शुरू किया जाता है; "अनुमोदित लेकिन प्रतिबद्ध नहीं" देखता है; फिर से निष्पादित होता है।
- साइड इफेक्ट दो बार फायर करता है।
मिट्यागः निष्पादन से पहले "फ्लाइट में" इरादे को बनाए रखें, एक idempotency कुंजी के साथ निष्पादित करें, फिर "कमाई" को केवल कार्रवाई के बाद सत्यापन सफल होने के बाद चिह्नित करें। यदि कार्रवाई फायर और स्थिति लेखन विफल हो जाता है, तो आप सत्यापित करने के लिए जानते हैं और (यदि आवश्यक हो) फिर से फायर करें। यदि स्थिति लेखन सफल होता है और कार्रवाई विफल होती है, तो आप सत्यापित करते हैं और ठीक एक बार पुनर्प्राप्ति पथ के माध्यम से फायर करते हैं।
इसका प्रयोग करें
code/main.pyड्राइवर चार परिदृश्यों का अनुकरण करता हैः साफ रन, दुर्घटना के बाद पुनः प्रयास (अपमान पकड़), पूर्व शर्त विफलता (कार्यप्रवाह को निष्क्रिय करने के बिना निष्क्रियता), विफलता सत्यापित करें (रोलबैक फायर) ।
इसे भेजें
outputs/skill-rollback-rehearsal.mdप्रस्तावित कार्यप्रवाह के लिए एक रोलबैक-प्रयोजना परीक्षण डिजाइन करता है और लेखा परीक्षा पथ की निरंतरता के लिए चेक-पॉइंट बैकेंड का ऑडिट करता है।
व्यायाम
- दौड़ें
code/main.pyचार परिदृश्यों की पुष्टि करें दुर्घटना के दौरान प्रतिबद्धता मामले के लिए, कार्रवाई की पुष्टि एक बार एक बार फिर से प्रयासों में.
- "पहले जैसा किया गया है, फिर इसे करें" पैटर्न को संशोधित करें ताकि स्थिति कार्रवाई के बाद फायर लिखें। क्रैश परिदृश्य को फिर से चलाएं। मापें कि कितनी दोहराई गई कार्रवाई फायर है।
- एक विशिष्ट उत्पादन क्रिया के लिए एक रोलबैक योजना (जैसे, "स्लैक चैनल में पोस्ट") डिजाइन करें। इन-बैंड, मुआवजे या आउट-बैंड के रूप में वर्गीकृत करें। विकल्प को सही ठहराना।
- एक ज्ञात कार्यप्रवाह लें. प्रत्येक राज्य संक्रमण की पहचान करें. प्रत्येक को स्थायित्व आवश्यकता के साथ चिह्नित करें (अस्तित्व / अस्तित्व) । उन लोगों की गिनती करें जिन्हें आप वर्तमान में अस्तित्व नहीं कर रहे हैं।
- पुनरावृत्ति-रोल-बैक परीक्षणः एक अंत-से-अंत परीक्षण डिजाइन करें जो वास्तविक वर्कफ़्लो चलाता है, उसे दुर्घटनाग्रस्त करता है, और रोल-बैक पथ फायर की पुष्टि करता है। परीक्षण क्या कहता है?
प्रमुख शर्तें
| Term | What people say | What it actually means |
|---|---|---|
| Checkpoint | "Save point" | Every graph-state transition persists to a durable store |
| Lease | "Worker claim" | Short-lived claim that a worker is executing a run; expires on crash |
| Precondition | "State gate" | Assertion that the state is still consistent with the approved action |
| Post-action verify | "Re-read check" | Confirm the side effect actually happened in the target system |
| In-band rollback | "Direct undo" | Reverse the side effect with the inverse operation |
| Compensating transaction | "SAGA undo" | A new action that neutralizes the original |
| Mark-as-done-first | "Status write order" | Persist the committed status before returning from commit |
| Article 14 | "EU AI Act human oversight" | Operational: queryable checkpoints, rehearsed rollbacks, auditable trail |
आगे पढ़ना
- Microsoft Agent Framework — Checkpointing and HITL चेकपॉइंट आदिम और लीज रिकवरी।
- Cloudflare Agents — Human in the loop राज्य सब्सट्रेट के रूप में टिकाऊ वस्तुएं।
- EU AI Act — Article 14: Human oversight नियामक आधार।
- Anthropic — Measuring agent autonomy in practice दीर्घकालिक कार्यप्रवाहों के लिए विश्वसनीयता ढांचा।
- Anthropic — Claude Code Agent SDK: agent loop क्लाउड कोड रूटीन के लिए वर्कफ़्लो आकार।
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.