Phase 15: Autonomous Systems

लंबे समय तक चलने वाले पृष्ठभूमि के एजेंटः स्थायी निष्पादन

उत्पादन दीर्घ क्षितिज एजेंटों में नहीं चल रहे हैं while True. प्रत्येक एलएलएम कॉल चेकपॉइंट, रीट्री और रिप्ले के साथ एक गतिविधि बन जाती है। Temporal के ओपनएआई एजेंट्स एसडीके एकीकरण GA मार्च 2026 में चला गया। क्लाउड कोड रूटीन (एथ्रोपिक) निरंतर स्थानीय प्रक्रिया के बिना निर्धारित क्लाउड कोड इनवॉक्शंस चलाता है। सत्र मानव-इनपुट पर विराम लगाते हैं, तैनाती को जीवित रखते हैं, और नवीनतम चेकपॉइंट से फिर से शुरू करते हैं।thread_id. नए एर्गोनोमिक्स के पीछे एक पुराना पैटर्न है वर्कफ़्लो ऑर्केस्ट्रेशन जिसमें एक नया इनपुट हैः एलएलएम गैर-निर्धारक गतिविधियों के रूप में कॉल करता है जिन्हें पुनर्प्राप्ति पर निर्धारात्मक रूप से दोहराया जाना चाहिए।

Type: Learn

Languages: Python (stdlib, minimal durable-execution state machine)

Prerequisites: Phase 15 · 10 (Permission modes), Phase 15 · 01 (Long-horizon agents)

Time: ~60 minutes

समस्या

एक एजेंट को चार घंटे तक चलाने के लिए सोचें। वह तीन उपकरणों को बुलाता है, दो बार उपयोगकर्ता को सूचित करता है, और चालीस एलएलएम कॉल करता है। आधे रास्ते में, वह होस्ट को रीबूट पर चला रहा है। क्या होता है?

  • एक भोले में while Trueलूपः सब कुछ खो गया है। रन खरोंच से फिर से शुरू होता है। तीन उपकरण कॉल (वास्तविक दुष्प्रभावों के साथ) फिर से निष्पादित होते हैं। उपयोगकर्ता को पहले से ही अनुमोदित चीजों के लिए फिर से कहा जाता है। चालीस एलएलएम कॉल फिर से बिल किए जाते हैं।
  • टिकाऊ निष्पादन के साथः सबसे हालिया चेकपॉइंट से रन को फिर से शुरू किया जाता है। पहले से ही पूरी की गई गतिविधियों को फिर से निष्पादित नहीं किया जाता है; उनके परिणाम टिकाऊ लॉग से फिर से खेले जाते हैं। उपयोगकर्ता पहले से ही अनुमोदित चीजों को फिर से अनुमोदित नहीं करता है। पहले से किए गए एलएलएम कॉल को फिर से बिल नहीं किया जाता है।

यह वही पैटर्न है जो वर्कफ़्लो इंजन एक दशक से भेज रहे हैं (टाइमोरल, कैडेन्स, उबर के चेरामी) नया क्या है कि एलएलएम कॉल अब एक प्रकार की गतिविधि हैं गैर-निर्धारात्मक, महंगे, दुष्प्रभाव और वे इस पैटर्न में साफ फिट बैठते हैं।

पाठ का चल रहा विषयः दीर्घ क्षितिज विश्वसनीयता में गिरावट (METR "35 मिनट की गिरावट" का अवलोकन करता है) क्षितिज के साथ सफलता दर लगभग चतुर्भुज में गिरती है) टिकाऊ निष्पादन विश्वसनीयता प्रोफ़ाइल द्वारा समर्थित से अधिक लंबे समय तक चलने की अनुमति देता है, जो डिजाइन सही है और डिजाइन गलत है तो सुरक्षित रूप से विफल होने का एक नया तरीका है।

अवधारणा

गतिविधियाँ, कार्यप्रवाह और पुनःप्रदर्शन

  • Workflowयह घटना लॉग से बिना आश्चर्यजनक विचलन के पुनः खेला जा सकता है।
  • Activity: एक गैर-निर्धारात्मक, संभावित रूप से विफल कार्य इकाई। एलएलएम कॉल, टूल कॉल, फ़ाइल लेखन, एचटीटीपी अनुरोध। प्रत्येक गतिविधि को उसके इनपुट और (एक बार पूरा होने पर) उसके आउटपुट के साथ लॉग किया जाता है।
  • Event log: टिकाऊ बैकअप स्टोर. हर गतिविधि शुरू, पूरा, विफल, पुनः प्रयास, और हर कार्यप्रवाह निर्णय रिकॉर्ड किया जाता है।
  • Replay: पुनर्प्राप्ति पर, वर्कफ़्लो कोड शुरू से फिर से चलाया जाता है; पहले से ही पूरी हुई हर गतिविधि अपने लॉग किए गए परिणाम को फिर से निष्पादित किए बिना लौटा देती है। केवल जो गतिविधियां पूरी नहीं हुई थीं वे वास्तव में चलती हैं।

यह एक वर्चुअल DOM के खिलाफ React री-रेडरिंग या commits से काम करने वाले पेड़ को पुनर्निर्माण करने के साथ एक ही आकार है। ऑर्केस्ट्रेटर में निर्धारकता वह है जो स्थायित्व को सस्ता बनाता है।

क्यों LLM कॉल पैटर्न फिट

LLM कॉल निम्नानुसार हैंः

  • गैर-निर्धारक (तापमान > 0; यहां तक कि तापमान 0 मॉडल संस्करणों के बीच भिन्न होता है) ।
  • महंगी (धन और विलंबता) ।
  • संभावित विफलता (दर सीमा, समय सीमा)
  • साइड इफेक्ट (यदि वे उपकरण का आह्वान करते हैं) ।

यह गतिविधि प्रोफ़ाइल है. एक गतिविधि के रूप में प्रत्येक LLM कॉल को लपेटने से आप एक वृद्धिशील बैकअप के साथ पुनः प्रयास करते हैं, फिर से शुरू करने के पार चेकपोइंटिंग, और डिबगिंग के लिए एक पुनः प्ले योग्य निशान।

द्वारा चिह्नित चेकपॉइंटthread_id

LangGraph, Microsoft एजेंट फ्रेमवर्क, Cloudflare टिकाऊ वस्तुओं, और क्लाउड कोड रूटीन सभी एक ही एपीआई आकार पर अभिसरणः एक thread_id(या समकक्ष) सत्र की पहचान करता है; प्रत्येक राज्य संक्रमण एक बैक-एंड (PostgreSQL डिफ़ॉल्ट, SQLite के लिए dev, Redis के लिए); फिर से शुरू नवीनतम चेकपॉइंट पढ़ता है।

बैक-एंड विकल्प मायने रखता हैः

  • PostgreSQL: टिकाऊ, queryable, तैनाती से बचाता है। LangGraph के लिए डिफ़ॉल्ट.
  • SQLite: केवल स्थानीय-dev; मेजबानों के बीच डेटा खो देता है।
  • Redis: तेज लेकिन अल्पकालिक, जब तक कि एओएफ/स्न्यापशॉट कॉन्फ़िगर नहीं किया जाता।
  • Cloudflare Durable Objects: पारदर्शी रूप से वितरित; एक अद्वितीय कुंजी द्वारा स्कोप; घंटों से हफ्तों तक जीवित रहता है।

प्रथम श्रेणी की स्थिति के रूप में मानव-इनपुट

प्रस्ताव-फिर-प्रतिबंध (पाठ 15) के लिए एक स्थायी "मानव के लिए प्रतीक्षा" स्थिति की आवश्यकता होती है। कार्यप्रवाह रुक जाता है, बाहरी कतार लंबित अनुरोध को रोकती है, और अनुमोदन ठीक उसी बिंदु से फिर से शुरू होता है। स्थायित्व के बिना यह सबसे अच्छा प्रयास है; इसके साथ, एक रात भर अनुमोदन आता है और कार्यप्रवाह सुबह शुरू होता है।

35 मिनट का अवसाद

METR ने देखा कि प्रत्येक मापा गया एजेंट वर्ग निरंतर संचालन के ~35 मिनट से अधिक विश्वसनीयता में गिरावट दिखाता है। कार्य अवधि को दोगुना करने से विफलता दर लगभग चार गुना बढ़ जाती है। टिकाऊ निष्पादन इस समस्या को ठीक नहीं करता है; यह आपको विश्वसनीयता प्रोफ़ाइल द्वारा समर्थित से अधिक समय तक चलने देता है। सुरक्षित पैटर्न यह है कि वे स्थिरता को उन चेक-पोइंट्स के साथ जोड़ें जिन्हें पुनः प्रवेश पर ताजा एचआईटीएल की आवश्यकता होती है, और बजट मार स्विच (पढ़ना 13) जो दीवार घड़ी के समय के बावजूद कुल गणना को सीमित करते हैं।

जब टिकाऊ निष्पादन गलत जवाब है

  • मानव सहायता के बिना कुछ मिनट से कम समय तक चलता है।
  • केवल पढ़ने योग्य सूचना प्राप्त करना।
  • ऐसे कार्य जहां सटीकता के लिए एक संदर्भ विंडो के भीतर अंत-टू-अंत की आवश्यकता होती है (कुछ तर्क कार्य; कुछ एक-शॉट पीढ़ी) ।

इसका प्रयोग करें

code/main.pystdlib पायथन में न्यूनतम टिकाऊ निष्पादन इंजन को लागू करता है। यह समर्थन करता हैः

  • @activityसजावटकर्ता जो JSON घटना लॉग में इनपुट और आउटपुट लॉग करता है।
  • कार्यप्रवाह फ़ंक्शन जो गतिविधियों को क्रमबद्ध करता है।
  • ए run_or_replay(workflow, event_log)कार्य जो पूर्ण गतिविधियों को पुनः निष्पादित किए बिना पुनः निष्पादित करता है।

ड्राइवर तीन-क्रियाशीलता कार्यप्रवाह का अनुकरण करता है, आधे रास्ते में दुर्घटनाग्रस्त हो जाता है, और दिखाता है (क) एक भोले फिर से सब कुछ फिर से निष्पादित करने की कोशिश करता है बनाम (ख) केवल गायब गतिविधि को चलाने वाला एक पुनरावृत्ति।

इसे भेजें

outputs/skill-durable-execution-review.mdएक दीर्घकालिक एजेंट तैनाती की समीक्षा करना उचित स्थाई निष्पादन के रूप के लिएः गतिविधियाँ, निर्धारिता, चेकपॉइंट बैकेंड, मानव इनपुट स्थिति और HITL-ऑन-रिज़्यूम नीति।

व्यायाम

  1. दौड़ेंcode/main.py. निष्पादन-कार्य गणना में अंतर को देखते हुए, एक साफ़ पुनः प्रयास और पुनः खेल के बीच अंतर को देखें। क्रैश बिंदु को बदलें और पुनः खेल संख्या को तदनुसार बदलते दिखाएं।
  1. उपयोग करने के लिए खिलौना इंजन को परिवर्तित करें thread_idदो समवर्ती सत्रों को इंजन साझा करने का अनुकरण करें और पुष्टि करें कि उनके घटना लॉग टकराव नहीं करते हैं।
  1. खेलौना इंजन में एक गतिविधि लें। एक गैर-निर्धारकता (कार्यप्रवाह निर्णय के भीतर एक दीवार घड़ी समय टिकट) पेश करें। पुनरावृत्ति पर विचलन प्रदर्शित करें। समझाएं कि वास्तविक इंजन इसे कैसे संभालते हैं (साइड इफेक्ट पंजीकरण, Workflow.now()एपीआई) ।
  1. LangChain "प्रोडक्शन डीप एजेंट्स के पीछे रनटाइम" पोस्ट पढ़ें। प्रत्येक स्थिति को सूचीबद्ध करें कि रनटाइम बरकरार है और नाम दें कि प्रत्येक विफलता मोड किस पर कवर करता है।
  1. 6-घंटे के स्वायत्त कोडिंग कार्य के लिए एक चेकपॉइंट नीति डिजाइन करें। आप चेकपॉइंट कहां करते हैं? फिर से क्रैश कैसे दिखता है? नए HITL की आवश्यकता क्या है?

प्रमुख शर्तें

TermWhat people sayWhat it actually means
Workflow"Agent's script"Deterministic orchestration code; replayable from event log
Activity"A step"Non-deterministic unit (LLM call, tool call); logged before and after
Event log"The backing store"Durable record of every state transition
Replay"Resume"Re-run workflow; completed activities return logged results without re-execution
Checkpoint"Save point"Persisted state keyed by thread_id; latest-wins on resume
thread_id"Session key"Identifier that scopes durable state
35-minute degradation"Reliability decay"METR: success rate drops ~quadratically with horizon
Non-determinism"Drift on replay"Wall clock, random, LLM output; must be registered as side effect

आगे पढ़ना

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.