waiting_for_human) या रोकने की शर्त (stopped) त्रुटि नहीं है: दोनों सामान्य नतीजा लौटाते हैं। कौन-सी विफलताएँ run.failed इवेंट भी भेजती हैं, यह भाषा के अनुसार अलग है, इसलिए विफलता पहचानने के लिए सिर्फ़ इवेंट पर निर्भर न रहें।
विफल रन कैसे सामने आता है
कुछ विफल होने पर कौन-से इवेंट भेजे जाते हैं
लाइफ़साइकल हुक में हर इवेंट की सूची है।
त्रुटि का कारण खोजें
TypeScript त्रुटि टाइप
AgentGatewayError में status, statusText, headers, body, requestId, generationId, reason, errorType, errorOrigin, failedProviders, failedStatuses और रूटिंग diagnostics होते हैं। विफल रन और स्टेप वही विवरण errorDetails में रखते हैं। स्ट्रीम की गई प्रतिक्रिया के बीच में होने वाली विफलता AgentStreamError होती है, जो code और retryable वाली एक subclass है।
AgentSchemaValidationError में tool_input, tool_output, tool_event या agent_output में से एक target होता है, और validator की त्रुटि के साथ details। इन्हें अस्थायी मॉडल विफलताएँ नहीं, बल्कि कॉन्ट्रैक्ट विफलताएँ मानें।
किसी भी त्रुटि को वर्गीकृत करने के लिए, उदाहरण के लिए modelRetry.retryOn में, agentErrorIsRetryable(error), agentRetryAfterMs(error) और agentErrorIsContextOverflow(error) का उपयोग करें।
Rust त्रुटि टाइप
हर रनटाइम विफलता एकAgentError है; इसे message() से पढ़ें। Gateway के PhaseoError मान AgentError में बदल दिए जाते हैं, इसलिए अगर आपको मूल gateway स्टेटस और body चाहिए, तो phaseo क्लाइंट को सीधे कॉल करें या एक कस्टम ModelClient लागू करें जो उन्हें रखे।
टूल त्रुटियों से उबरें
डिफ़ॉल्ट रूप से टूल त्रुटि रन को विफल कर देती है। जब मॉडल समझदारी से कुछ और आज़मा सकता हो, तब टूल की त्रुटि नीतिreturn-to-model सेट करें: त्रुटि टूल नतीजा {"error": "..."} बन जाती है और रन जारी रहता है। असुरक्षित या न सुधारी जा सकने वाली विफलताओं के लिए डिफ़ॉल्ट fail-run रखें।
रद्द करना और timeouts संभालें
टूल timeout या रद्द करना हमेशा टूल का अपना काम नहीं रोकता। टूल के अंदर HTTP, डेटाबेस और प्रोसेस कॉल को उनकी अपनी समय-सीमाएँ दें, और रद्द किए गए या timeout हुए रन को ख़त्म मानें, जब तक आपका ऐप्लिकेशन नया रन शुरू न करे।बाधित TypeScript रन से उबरें
अगर कोई रन स्टेप के बीच में क्रैश हुआ या रद्द हुआ, तो उसके इतिहास में बिना नतीजों वाली टूल कॉल हो सकती हैं, जिन्हें प्रदाता अस्वीकार करते हैं। TypeScript काcontinueRun() उन्हें ‘नहीं चलाई गई’ के रूप में जवाब देता है और history.repaired भेजता है। अगर आप मैसेज कहीं और दोबारा उपयोग करते हैं, तो repairToolHistory(messages) ख़ुद कॉल करें।
पहले ये जाँचें
PHASEO_API_KEYप्रोसेस तक पहुँचती है और gateway क्लाइंट को दी जाती है।- हर टूल का एक अनोखा, स्थिर ID है।
- अनुमोदन, अस्वीकृति और टूल आउटपुट सटीक टूल-कॉल ID का उपयोग करते हैं, और मानवीय इनपुट मैसेज कभी टूल आउटपुट की जगह नहीं लेता।
- अनुमोदन UI दिखाने या नियंत्रण किसी दूसरे अनुरोध या वर्कर को सौंपने से पहले पूरा रन नतीजा सहेजा जाता है।
- Validators नियत (deterministic) हैं और उनके साइड इफ़ेक्ट नहीं हैं, ताकि विफल जाँच सुरक्षित रूप से दोबारा की जा सके।
- मॉडल retries सीमित हैं; validation और अनुमोदन विफलताओं को बिना सोचे-समझे दोबारा नहीं आज़माना चाहिए।
step.started, model.requested और tool.failed रिकॉर्ड करें, और स्टेप को gateway लॉग से जोड़ने वाले IDs के लिए ऑब्ज़र्वेबिलिटी देखें।