ब्लॉग · गाइड · 28 अक्टूबर 2026
ऑर्केस्ट्रेटर को अनुमोदन का चरण कैसे दें: एक पैटर्न, AEGIS के उदाहरण के साथ
खुलासा: इस गाइड का उदाहरण AEGIS है, जिसे 100monkeys.ai बनाता है, इसलिए AEGIS वाले हिस्सों को निर्माता का विवरण मानकर पढ़ें। पैटर्न अपने आप में सामान्य है और किसी भी ऑर्केस्ट्रेटर पर लागू होता है। इसका मसौदा हमारे एक AI एजेंट ने AEGIS के सार्वजनिक दस्तावेज़ों से तैयार किया और कंपनी ने इसकी समीक्षा की; यह हिन्दी संस्करण मूल अंग्रेज़ी गाइड का अनुवाद है।
अनुमोदन का चरण किसी स्वचालित रन में वह बिंदु है जहाँ काम रुकता है, एक इंसान ठीक वही चीज़ पढ़ता है जो होने वाली है, और रन सिर्फ़ उसी इंसान के जवाब पर आगे बढ़ता है। ज़्यादातर ऑर्केस्ट्रेटर रुक सकते हैं। कम ही ऐसे हैं जिनमें वह ठहराव सचमुच टिकता है। यह वह पैटर्न है जो हम इस्तेमाल करते हैं, चरण दर चरण, AEGIS by 100monkeys.ai, in beta, के उदाहरण के साथ।
एक अनुच्छेद में पैटर्न
गेट वहाँ लगाएँ जहाँ एजेंट काम तैयार कर चुका हो और काम अभी हुआ न हो। समीक्षक को तैयार की गई चीज़ ही दिखाएँ, उसका सारांश नहीं। पहले से तय करें कि चुप्पी का मतलब क्या है। दोनों जवाबों का रास्ता साफ़-साफ़ तय करें। समीक्षक को वहीं से जवाब देने दें जहाँ वह पहले से है, और जवाब को रन के इतिहास में रखें। दोबारा कोशिशों की सीमा बाँधें, ताकि नामंज़ूर मसौदा अनंत लूप में न घूमे।
चरण 1. उन कामों की सूची बनाएँ जिनके लिए इंसान चाहिए
हर चरण पर गेट ज़रूरी नहीं; हर चीज़ पर गेट लोगों को बिना पढ़े क्लिक करना सिखा देता है। गेट उन कामों पर लगाएँ जो सैंडबॉक्स से बाहर जाते हैं और वापस नहीं लिए जा सकते: बाहर किसी को संदेश भेजना, सुरक्षित ब्रांच में merge करना, पैसा ख़र्च करना, डेटा मिटाना, प्रकाशित करना। बाक़ी सब पहले से लिखी नीति के तहत चल सकता है। हमारा पेपर Red levers इन्हें रुकने के दो प्रकार कहता है: रन से पहले तय की गई और रनटाइम द्वारा लागू की गई सीमाएँ, और काम के समय एक अनुमोदन, जो एक ही काम से बँधा हो।
चरण 2. एजेंट के काम को उस काम पर बाँटें
जो एजेंट एक ही चरण में मसौदा बनाता और भेजता है, उसे बीच में नहीं रोका जा सकता। उसे एक तैयारी वाली स्थिति और एक काम करने वाली स्थिति में बाँटें, ताकि गेट के लिए जगह हो। AEGIS में वर्कफ़्लो एक घोषणात्मक स्टेट मशीन है, और गेट अपनी अलग स्थिति है, kind: Human:
spec:
initial_state: DRAFT
states:
DRAFT:
kind: Agent
agent: draft-agent
transitions:
- condition: on_success
target: APPROVE
APPROVE:
kind: Human
prompt: |
About to send:
{{DRAFT.output}}
Approve? (yes/no)
timeout: 86400s
transitions:
- condition: input_equals_yes
target: SEND
- condition: input_equals_no
target: DISCARD
यह ढाँचा AEGIS डॉक्स के Building Workflows पन्ने के अनुसार है; draft-agent, SEND और DISCARD आपके अपने एजेंट और स्थितियों की जगह हैं।
चरण 3. समीक्षक के सामने ठीक वही चीज़ रखें
प्रॉम्प्ट ही समीक्षक का पूरा नज़ारा है, इसलिए तैयार आउटपुट उसी में रखें। AEGIS के प्रॉम्प्ट Blackboard टेम्पलेट लेते हैं: ऊपर {{DRAFT.output}} पिछली स्थिति का आउटपुट है, और डॉक्स पिछली स्थितियों के स्कोर भी दिखाते हैं, जैसे {{QUALITY_CHECK.output.score}}। जिस समीक्षक को "एजेंट एक ईमेल भेजना चाहता है" दिखाया जाता है, वह एक विवरण को मंज़ूरी देता है; जिसे ईमेल दिखाया जाता है, वह ईमेल को मंज़ूरी देता है।
चरण 4. तय करें कि चुप्पी का मतलब क्या है
हर गेट को एक टाइमआउट और उसके बीतने पर एक नियम चाहिए। Human Approvals पन्ने पर timeout_seconds का डिफ़ॉल्ट 3600 है। reject_on_timeout: false के साथ, जो डिफ़ॉल्ट है, बिना जवाब का गेट रन को human_input_timeout के साथ विफल कर देता है। reject_on_timeout: true के साथ चुप्पी को ना माना जाता है और रन नामंज़ूरी वाला रास्ता लेता है। दूसरा विकल्प तब चुनें जब जवाब न आना त्रुटि नहीं, साफ़ ना होना चाहिए। चुप्पी को कभी हाँ न बनाएँ।
फ़ील्ड पर एक टिप्पणी: Human Approvals पन्ना timeout_seconds और शर्तें approved और rejected इस्तेमाल करता है; Building Workflows पन्ना timeout और input_equals_yes व input_equals_no इस्तेमाल करता है। एक ही रूप लगातार इस्तेमाल करें, और अपने संस्करण के लिए Workflow Manifest Reference देखें।
चरण 5. दोनों जवाबों का रास्ता तय करें, और लूप को सीमित करें
ना एक जवाब है, बाद में सँभालने वाली विफलता नहीं। उसे एक लक्ष्य स्थिति दें: छोड़ देना, या मसौदे को समीक्षक की टिप्पणी के साथ एजेंट को लौटाना। अगर आप नामंज़ूरी को मसौदा बनाने वाली स्थिति पर लौटाते हैं, तो रन में अब एक लूप है। AEGIS इसे सीमित करता है: हर स्थिति के लिए max_state_visits (डिफ़ॉल्ट 5, अधिकतम 20) और हर रन के लिए max_total_transitions (डिफ़ॉल्ट 50, अधिकतम 100)। इन्हें उतनी कोशिशों पर रखें जितनी एक समीक्षक सह सके।
चरण 6. समीक्षक को वहीं से जवाब देने दें जहाँ वह है
जिस गेट को कोई देखता नहीं, वह बस एक टाइमआउट है। AEGIS में एक ही गेट का जवाब तीन तरह से दिया जा सकता है:
- कमांड लाइन से:
aegis workflow signal <execution-id> --response yes। - अपने क्लाइंट से:
GET /v1/workflow-gates?status=pendingसे इंतज़ार कर रहे गेट देखें औरPOST /v1/workflows/executions/{id}/signalसे किसी एक का जवाब दें, ऐसे body के साथ:{ "response": "yes", "feedback": "Keep the flag name short." }। - Zaru Web में: आपके शुरू किए रन का गेट आपके लंबित अनुमोदनों में दिखता है, हर अनुमत शब्द के लिए एक बटन के साथ। डॉक्स यह भी कहते हैं कि Zaru के companion को किसी भी मोड में ऐसा कोई टूल नहीं दिया जाता जो गेट का जवाब दे, इसलिए जिस मॉडल ने काम तैयार किया वह उसे मंज़ूरी नहीं दे सकता।
किसी भी ऑर्केस्ट्रेटर में यही आख़िरी गुण देखें: एजेंट के पास अपने ही गेट की चाबी नहीं होनी चाहिए।
चरण 7. जवाब को सहेजें
अनुमोदन एक सबूत है। गेट का जवाब आने या समय बीतने के बाद AEGIS उसे सूची में रखता है: ?status=answered हर गेट को चुने गए शब्द, टिप्पणी, बंद होने के समय और उसके बाद रन ने क्या किया, इसके साथ लौटाता है। यह भी दर्ज करें कि जवाब किसने दिया; Human Approvals पन्ने का approve endpoint approved_by फ़ील्ड लेता है, और नामंज़ूरी के लिए reason ज़रूरी है।
चरण 8. भरोसा करने से पहले गेट को परखें
वर्कफ़्लो तीन बार चलाएँ: हाँ कहें, ना कहें, और समय बीत जाने दें। पुष्टि करें कि हर रास्ता वहीं पहुँचता है जहाँ आप चाहते थे, और गेट के बाद का कुछ भी जवाब से पहले नहीं चला। फिर गेट लगने के बाद मसौदा बदलें और पुष्टि करें कि समीक्षक वही देखता है जो सचमुच चलेगा। अगर आपका ऑर्केस्ट्रेटर अनुमोदन को सामग्री के बजाय किसी विवरण से बाँधता है, तो यहीं पता चलेगा।
आगे कहाँ जाएँ
अपने सर्वर पर शुरू से आख़िर तक पैटर्न आज़माने के लिए देखें नए Ubuntu VPS पर AEGIS इंस्टॉल करें और अपना पहला स्वीकृत टास्क चलाएँ। हर गेट के आसपास क्या दर्ज करें और किस पर हस्ताक्षर करें, इसके लिए पढ़ें प्रोडक्शन में AI एजेंटों के लिए ट्रेसबिलिटी चेकलिस्ट। निजी सहायक में यही अनुमोदन वाला विचार देखने के लिए पढ़ें एक Zaru सहायक सेट करें जो आपकी स्वीकृति के साथ आपका ईमेल और कैलेंडर संभाले।