कस्टम एजेंट्स गाइड
इंस्टॉल करें, इंस्ट्रूमेंट करें, इवेंट मेथड्स, एक कार्यशील उदाहरण, और सामान्य समस्याएं।
कोई फ्रेमवर्क उपयोग कर रहे हैं?
LangChain, CrewAI, LlamaIndex और Pydantic AI एक कॉल से खुद को इंस्ट्रूमेंट करते हैं।
इंस्टॉल करें
failproofai-sdk के रूप में इंस्टॉल किया गया है और Python में failproofai_sdk के रूप में आयात किया गया है। failproofai-sdk[langgraph] जैसे फ्रेमवर्क एक्सट्रास फ्रेमवर्क को ही इंस्टॉल करते हैं; एडेप्टर हमेशा बेस व्हील में शिप होते हैं।
Failproof डेमॉन कनेक्ट करें
- डैशबोर्ड
- CLI
-
Admin → Keys पर जाएं और
events:addके साथ एक कुंजी बनाएं। - Failproof डेमॉन को Cloud से कनेक्ट करें एजेंट मशीन पर।
- एक इंस्ट्रूमेंटेड सेशन चलाएं, फिर Observe → Events के तहत इसकी सटीक ID खोजें।
-
Observe → Sessions पर जाएं, वही वातावरण चुनें, और पुनर्निर्मित ट्रेस खोलें।

कॉन्फ़िगरेशन
इसके बजाय वातावरण चर द्वारा सेट करें:
इवेंट्स मेमोरी में कतारबद्ध होते हैं और हर
flush_interval सेकंड में पृष्ठभूमि में लिखे जाते हैं, इंटरप्रेटर एक्जिट पर एक अंतिम फ्लश के साथ। एक प्रक्रिया जो सीधे मार दी जाती है वह जो अभी तक नहीं लिखा गया था उसे खो देता है।
पहचान
हर इवेंट एक सेशन और एक एजेंट से संबंधित है। स्कोप दोनों को भरते हैं, इसलिए आप शायद ही कभी उन्हें पास करते हैं:session_id या agent_id को स्पष्ट रूप से पास करना अभी भी काम करता है और जीत जाता है। न तो बाउंड और न ही पास के साथ, कॉल TypeError बढ़ाता है बजाय एक इवेंट उत्सर्जित करने के जो Cloud चुपचाप छोड़ देता।
पहचान कॉन्टेक्स्ट चर पर चलती है। यह
asyncio कार्यों को स्वचालित रूप से अनुसरण करता है, लेकिन नई थ्रेड्स नहीं — एक कार्यकर्ता को failproofai_sdk.propagate() में लपेटें या इसके इवेंट्स अनलगा रहते हैं।इवेंट कैटलॉग
पंद्रह मेथड्स। अधिकांश जोड़े में आते हैं — आप ओपनर को कॉल करते हैं, फिर क्लोजर को, और SDK ने अंतराल को समय दिया।
तीन अलग खड़े हैं:
error, human_pause, human_interrupt।
हर फील्ड, प्रति मेथड
हर फील्ड, प्रति मेथड
हर मेथड भी
session_id और agent_id लेता है, जो स्कोप आपके लिए भरते हैं। कुछ भी None के रूप में छोड़ा गया JSON null के रूप में भेजने के बजाय ड्रॉप किया जाता है, और हर मेथड None रिटर्न करता है।जोड़ी और अवधि
एक नियम: क्लोजिंग इवेंट को अपने ओपनर के समान ID दें। यही है जो उन्हें जोड़ता है, और यही है जो SDK को अंतराल को समय देता है।
स्वयं
duration_ms पास न करें। SDK इसे मापता है, और इसे पास करना ValueError बढ़ाता है।
एक अपवाद model_response है, जहां केवल आप वास्तविक प्रदाता विलंब जानते हैं। मिलीसेकंड की एक पूरी संख्या पास करें — एक फ्लोट बढ़ाता है, क्योंकि कॉलम एक 32-बिट पूर्णांक है और अन्यथा खाली हो जाएगा।
सीमांत स्थितियां
सीमांत स्थितियां
- आईडीज को केवल प्रति प्रकार, प्रति सेशन अद्वितीय होने की आवश्यकता है। एक टूल कॉल और एक हुक एक को साझा कर सकते हैं; एक साथ दो सेशन एक ही आईडीज को बिना टकराए पुन: उपयोग कर सकते हैं।
- वे एक एजेंट को स्कोप नहीं किए जाते हैं। एक जोड़ी जो एक एजेंट के तहत खोली जाती है और दूसरे के तहत बंद हो जाती है अभी भी मेल खाती है — जो बहु-एजेंट कोड में सामान्य स्थिति है।
request_idवैकल्पिक लेकिन अनुशंसित है। इसके बिना, मॉडल इवेंट्स उस क्रम में जोड़े जाते हैं जिसमें वे आते हैं, इसलिए एक ही एजेंट में दो समवर्ती कॉल गलत जोड़ी कर सकते हैं।- एक जोड़ी जो प्रक्रियाओं में विभाजित है Cloud में अभी भी मेल खाती है, लेकिन SDK इसे समय नहीं दे सकता — कुछ भी किसी भी प्रक्रिया में दोनों हिस्सों को नहीं देखा।
- सबसे अधिक 10,000 ओपनर्स एक बार में क्लोजर का इंतजार करते हैं। इससे पहले सबसे पुराने को छोड़ दिया जाता है, इसलिए एक रिसाव बिना बाध्य बढ़ नहीं सकता।
आपकी अपनी फील्ड्स
कोई भी अतिरिक्त कीवर्ड जो आप पास करते हैं वह इवेंट के साथ संग्रहीत है:Decimal, एक सेट, bytes, एक मॉडल ऑब्जेक्ट — एक स्ट्रिंग के रूप में संग्रहीत है।
ये पाँच नाम आरक्षित हैं और सीधे अस्वीकार किए जाते हैं: timestamp, session_id, agent_id, type, environment।
डिलीवर करें और सत्यापित करें
- डैशबोर्ड
- CLI
Observe → Events में, पहले सत्यापित करें कि
agent_start मौजूद है और agent_end अंत में मौजूद है। फिर Observe → Sessions खोलें और पुष्टि करें कि मॉडल, टूल, ह्यूमन, हुक, और त्रुटि इवेंट्स इच्छित क्रम में दिखाई देते हैं। सेशन ID को प्राथमिक समस्या निवारण कुंजी के रूप में उपयोग करें।$FAILPROOFAI_HOME/custom-agents/events का निरीक्षण करें, अन्यथा ~/.failproofai/custom-agents/events। JSONL फाइलें SDK उत्सर्जन को साबित करती हैं; एक बढ़ता हुआ स्पूल डेमॉन कॉन्फ़िगरेशन या डिलीवरी की ओर इशारा करता है, जबकि एक खाली स्पूल इंस्ट्रूमेंटेशन या प्रक्रिया जीवनकाल की ओर इशारा करता है।
स्पूल का निरीक्षण केवल तब करें जब डेमॉन बंद हो। जबकि यह चलता है, यह मिलीसेकंड के भीतर प्रत्येक बैच को एकत्र करता है और हटाता है, इसलिए एक निर्देशिका सूची कलेक्टर के साथ दौड़ती है और उत्सर्जित इवेंट्स की तुलना में बहुत कम इवेंट्स दिखाती है।

