0Pricing
AI Agents · درس

المهلات وقواطع الدائرة

قيّد استدعاءات LLM والأدوات بمهلات صارمة، واستخدم قواطع الدائرة لإيقاف الضغط المتكرر على اعتماد متعطل.

المهلات وقواطع الدائرة درس مجاني في AI Agents على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في AI Agents، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة AI Agents 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

تقييد كل استدعاء خارجي

يجب أن يتضمن كل استدعاء شبكي مهلةً زمنية. ومن دونها، قد يؤدي اتصال معلّق إلى تجميد الوكيل بالكامل.

HTTP Timeouts

import requests
response = requests.get(url, timeout=(3, 10))   # 3s connect, 10s read

LLM Timeouts

from openai import OpenAI
client = OpenAI(timeout=30.0)

# Or per call:
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    timeout=30.0
)

اختيار مهلات زمنية واقعية

قِس زمن الاستجابة الحقيقي عند p99 وأضف 25%. إن تعيين المهلة الزمنية إلى 3s بينما يبلغ p99 مقدار 4s يسبب إخفاقات كاذبة باستمرار.

المهلة الزمنية الإجمالية للوكيل

أحط تشغيل الوكيل بالكامل بموعد نهائي:

import asyncio

async def run_agent_with_deadline(query, deadline_s=60):
    try:
        return await asyncio.wait_for(run_agent(query), timeout=deadline_s)
    except asyncio.TimeoutError:
        return 'Sorry, this is taking too long. Please try again.'

ما قاطع الدائرة؟

النمط: عندما تبدأ خدمة تابعة في الفشل، «افتح» الدائرة — وأوقف استدعاءها لبعض الوقت. ثم تعافَ تلقائيًا بعد فترة تهدئة.

الحالات: CLOSED (عادي) -> OPEN (فشل سريع) -> HALF_OPEN (اختبار) -> CLOSED (متعافٍ).

Implementing with pybreaker

# pip install pybreaker
import pybreaker

breaker = pybreaker.CircuitBreaker(fail_max=5, reset_timeout=60)

@breaker
def fragile_call():
    return requests.get(url, timeout=5).json()

بعد 5 إخفاقات

بمجرد وصول أخطاء fail_max المتتالية إلى الحد المحدد، يفتح القاطع. وتفشل جميع الاستدعاءات اللاحقة فورًا لمدة reset_timeout ثانية — مما يحميك من الضغط المتكرر على خدمة متعطلة.

إرجاع بدائل معقولة

عندما تكون الدائرة مفتوحة، أرجع بديلًا رشيقًا بدلًا من تعطيل الوكيل:

try:
    result = fragile_call()
except pybreaker.CircuitBreakerError:
    result = {'error': 'service-unavailable', 'fallback': 'cached or stale data'}

قواطع خاصة بكل أداة

يجب أن يكون لكل تبعية خارجية قاطعها الخاص — فلا ينبغي لخدمة واحدة معطلة أن تؤثر في الاستدعاءات الموجّهة إلى خدمة سليمة.

العوازل

حدّد عدد الاستدعاءات المتزامنة لأي أداة باستخدام semaphore — فهذا يمنع تبعية بطيئة واحدة من استنفاد جميع العاملين:

from asyncio import Semaphore
search_sem = Semaphore(10)

async def search(query):
    async with search_sem:
        return await tavily_search(query)

فحوصات الصحة

أرسل طلبًا دوريًا إلى كل أداة لاكتشاف المشكلات قبل أن يكتشفها المستخدمون:

async def health_check():
    for tool in [tavily, openai, vector_db]:
        try:
            await tool.ping()
        except Exception as e:
            alert(f'{tool.name} unhealthy: {e}')

إظهار الحالة للمستخدمين

عندما تتوقف أداة مهمة عن العمل، أخبر المستخدم:

if tavily_breaker.current_state == 'open':
    return 'Web search is temporarily unavailable.'

لماذا نستخدم قاطع الدائرة؟

لماذا نستخدم قاطع دائرة مع خدمة خارجية غير مستقرة؟

مراجعة

مهلات زمنية لكل استدعاء. قواطع خاصة بكل أداة. عوازل للتزامن. فحوصات الصحة. رسائل بديلة رشيقة.

الأسئلة الشائعة

هل درس «المهلات وقواطع الدائرة» مجاني؟

نعم — نص درس «المهلات وقواطع الدائرة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة AI Agents، انتقل إلى CoddyKit PRO. تتضمن دورة AI Agents 4 دروس في المجموع.

ماذا ستتعلم في «المهلات وقواطع الدائرة»؟

قيّد استدعاءات LLM والأدوات بمهلات صارمة، واستخدم قواطع الدائرة لإيقاف الضغط المتكرر على اعتماد متعطل. تتمرن على AI Agents مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ AI Agents؟

لا تُشترط خبرة سابقة. AI Agents على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «المهلات وقواطع الدائرة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس AI Agents هذا؟

نعم. كل درس في AI Agents يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الأدوات غير المتكررة والآثار الجانبية
  2. إعادة المحاولة مع التراجع الأسي
  3. المهلات وقواطع الدائرة
  4. التحقق من مخرجات الأدوات (Pydantic)
← العودة إلى AI Agents