Agent قد يقرأ tab ثم يبحث ويب ثم يفتح صفحة ثم ينتظر selector. لو كل Tool لها timeout 30 ثانية، خمس أدوات يمكن أن تستغرق دقائق قبل إعلان الفشل. Timeout Budget يبدأ من deadline للمهمة ويوزع الزمن المتبقي على كل استدعاء مع هامش للتعافي.
ابدأ من deadline المستخدم
حدد كم يمكن أن ينتظر المستخدم أو scheduler. المهمة التفاعلية قد تملك 60 ثانية، background job عشر دقائق. هذا الرقم يوجه كل tool calls.
مرر remaining budget
قبل كل call احسب deadline-now واختر timeout أقل منه. Tool بدورها تمر budget للشبكة أو browser wait. إذا بقي زمن غير كاف، توقف مبكرًا بدل call ستُقطع حتمًا.
خطوات عملية
- set deadline.
- calculate remaining.
- reserve cleanup margin.
- call with bounded timeout.
فرق بين soft و hard timeout
soft timeout قد يسمح بإلغاء نظيف وحفظ checkpoint، hard kill آخر حل. أدوات تغير state يجب أن تعيد حالة unknown إذا انقطعت بعد الإرسال.
وزع retries داخل الميزانية
لا تعطي retry نفس timeout كاملًا إذا لم يبق وقت. backoff يجب أن يحترم deadline. أحيانًا attempt واحد أطول أفضل من ثلاث قصيرة حسب العملية.
قائمة مراجعة
- remaining time.
- attempt cost.
- backoff.
- cleanup reserve.
سجل أين استُهلك الزمن
Trace durations لكل Tool تكشف أن 80% من الوقت في selector wait مثلًا. عندها تحسين الأداة أفضل من رفع deadline العام.
احسب Budget للانتظار البشري والخدمات الخارجية
المهمة قد تضم Tool سريعة ثم approval بشري ثم API بطيئة. لا تعامل كل الزمن بنفس الشكل. حدد active execution budget و wall-clock deadline وربما pauseable budget أثناء انتظار approval. لكن external service wait يجب أن يستهلك deadline إذا كان المستخدم ينتظر نتيجة في نفس الجلسة. وضوح هذه الفئات يمنع أن تبقى مهمة حيّة أيامًا لأنها كل مرة توقف العداد، أو أن تفشل فورًا لأن مراجعة بشرية طبيعية استهلكت مهلة Tool.
قائمة مراجعة
- execution budget.
- wall-clock deadline.
- pause rules.
- cleanup reserve.
ألغِ Tool call عندما لا يعود له قيمة
إذا تجاوزت المهمة deadline أثناء انتظار Tool بطيئة، لا تترك الطلب يعمل في الخلفية ثم يغير state بعد أن أخبر النظام المستخدم بالفشل. مرر AbortSignal أو cancellation token للطبقات القابلة للإلغاء. بالنسبة لعمليات لا يمكن إلغاؤها بعد إرسالها، علّم الحالة unknown ونفذ reconciliation بدل تجاهل النتيجة المتأخرة. اختبر race بين timeout ووصول response؛ يجب أن يكون هناك مالك واحد يقرر الحالة النهائية ويمنع completion مزدوجًا.
قائمة مراجعة
- Cancellation propagation.
- Late response handling.
- Unknown للعمليات غير القابلة للإلغاء.
- لا completion مرتين.
اختبر Budget تحت سلسلة فشل
ابنِ سيناريو Tool أولى تستهلك نصف الوقت ثم الثانية تفشل transient ويحدث backoff. تحقق أن orchestrator لا يبدأ محاولة ثالثة إذا لم يبق زمن كافٍ للتنفيذ والتحقق وال cleanup. أضف metric للوقت المتبقي عند كل call؛ هذه البيانات تكشف Tools تستهلك budget أكبر من المتوقع وتساعد على إعادة توزيع المهلة بدل رفع deadline العام بلا حدود.
اختبار التحكم قبل منح الصلاحية
في «Timeout Budget لوكيل يستخدم أكثر من Tool في خطوة واحدة» اختبر النظام بأداة قراءة أولًا ثم أداة تغيير منخفضة المخاطر، مع تسجيل المدخل والقرار والنتيجة دون أسرار. افصل بين ما يستطيع النموذج اقتراحه وما يستطيع تنفيذه، وضع approval أو policy على الأفعال الحساسة. جرّب مدخلًا غامضًا ومدخلًا يحتوي تعليمات متعارضة، وتأكد أن حدود الصلاحيات لا تتغير بسبب صياغة المستخدم. القيمة هنا ليست في عدد الأدوات التي يستطيع ال ـAgent استدعاءها، بل في أن كل استدعاء يمكن تفسيره ومراجعته وإيقافه عند فشل شرط الأمان أو عدم اكتمال السياق.
قائمة مراجعة
- صلاحية دنيا لكل أداة.
- Approval للأفعال الحساسة.
- تسجيل القرار والنتيجة.
- اختبار تعليمات متعارضة.
شارك في تقييم ونقاش المقال
رأيك يضيف قيمة للمقال ويساعدنا على تحسين المحتوى والنقاش حوله.
النقاش
جارٍ تحميل التعليقات…