AI Agents

استخدام الأدوات المتقدمة: إدارة الحالة، واستعادة الأخطاء، وسلسلة الأدوات متعددة الخطوات في وكلاء الإنتاج

في الأيام الأولى لتطبيقات نماذج اللغات الكبيرة (LLM)، كان استخدام الأدوات يُعامل غالباً كميكانيكية بسيطة لاستدعاء الدوال. ومع ذلك، مع انتقالنا من النماذج الأولية التجريبية إلى وكلاء ذكاء اصطناعي متينين وجاهزين للإنتاج، تزداد التعقيدات بشكل أسي. الوكيل المنتج ليس مجرد نموذج مع بعض الدوال المرفقة؛ إنه نظام ذو حالة (stateful) يجب أن يتعامل مع انحراف السياق، وفشل الشبكة، والتبعيات المنطقية المعقدة.

يتعمق هذا المنشور في الأعمدة الثلاثة للهندسة المعمارية الناضجة للوكلاء: إدارة الحالة الدقيقة، واستعادة الأخطاء المرنة، وسلسلة الأدوات متعددة الخطوات الموثوقة. سنستكشف كيفية الانتقال بعيداً عن أنماط الطلب والاستجابة البسيطة لبناء وكلاء حتميين، ومقاومين للأعطال، وفعالين.

إدارة الحالة في البيئات غير الحتمية

أحد أكبر التحديات في بناء الوكلاء هو أن نماذج اللغات الكبيرة (LLMs) هي بطبيعتها غير حتمية. حتى مع ثبات درجة الحرارة (temperature)، قد يفسر النموذج الموجه (prompt) بشكل مختلف قليلاً، مما يؤدي إلى اختلافات في حجج الأدوات أو ترتيب التنفيذ. للتخفيف من هذا، يجب علينا إخراج إدارة الحالة إلى الخارج.

الاعتماد على نافذة سياق نموذج اللغات الكبيرة (LLM) لتذكر التفاعلات المعقدة متعددة الأدوار مكلف وعرضة لظاهرة "الضياع في المنتصف" (lost in the middle). بدلاً من ذلك، اعتمد بنية "الحالة أولاً" حيث يتم تخزين حالة الوكيل في قاعدة بيانات أو مخزن ذاكرة منظم، بينما يعمل نموذج اللغات الكبيرة (LLM) بشكل أساسي كمحرك للاستدلال.

فكر في النمط التالي حيث نقوم بتسلسل حالة الوكيل الحالية صراحةً:

class AgentState:
    def __init__(self):
        self.session_id = None
        self.current_step = "INITIALIZATION"
        self.tool_results = {}
        self.user_intent = None

    def update_step(self, new_step, result=None):
        self.current_step = new_step
        if result:
            self.tool_results[new_step] = result
        # حفظ الحالة في قاعدة البيانات على الفور
        save_state_to_db(self.session_id, self)

من خلال حفظ الحالة بعد كل استدعاء للأداة، نضمن أنه إذا تعطل الوكيل أو انتهى وقت انتظاره (timeout)، يمكنه استئناف العمل من حيث توقف بالضبط، بدلاً من إعادة تشغيل العملية بأكملها.

أنماط استعادة الأخطاء القوية

في بيئة الإنتاج، تعد فترات انتظار الشبكة، وحدود معدل واجهة برمجة التطبيقات (API rate limits)، ومخرجات الأدوات غير الصالحة شائعة. الوكيل الذي يفشل عند أول خطأ لا فائدة منه. نحتاج إلى تنفيذ استراتيجيات معالجة أخطاء دقيقة تسمح للوكيل بتصحيح نفسه.

قم بتنفيذ آلية إعادة المحاولة مع تأخير أسي (exponential-backoff) لاستدعاءات واجهات برمجة التطبيقات الخارجية. والأهم من ذلك، قم بتنفيذ حلقات "التأمل الذاتي" (self-reflection). إذا فشلت أداة، يجب أن يكون الوكيل قادراً على تحليل رسالة الخطأ ومحاولة نهج مختلف، مثل إعادة المحاولة بمعلمات مختلفة أو استدعاء أداة احتياطية.

import time
import requests

def call_tool_with_recovery(tool_name, args, max_retries=3):
    for attempt in range(max_retries):
        try:
            response = tool_registry.execute(tool_name, args)
            return response
        except requests.exceptions.Timeout:
            wait_time = 2 ** attempt
            time.sleep(wait_time)
        except ToolValidationError as e:
            # فشل حرج، دع نموذج اللغات الكبيرة (LLM) يتعامل مع التصحيح
            return {"error": str(e), "type": "validation_error"}
    
    raise RuntimeError(f"Failed to execute {tool_name} after {max_retries} attempts")

تنسيق سلسلة الأدوات متعددة الخطوات

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

لإدارة هذا، استخدم مخطط التبعيات أو نهج آلة الحالة (state-machine). لا ينبغي للوكيل أن يربط الأدوات بشكل أعمى، بل يجب أن يتحقق من صحة مخطط المخرجات الوسيطة. تتيح الأطر الحديثة مثل LangGraph أو AutoGen تسهيل ذلك من خلال السماح لك بتحديد حواف شرطية بين العقد.

عند ربط الأدوات، افرض دائماً عقود مدخلات/مخرجات صارمة. عرّف نماذج Pydantic لكل مدخل ومخرج للأداة لضمان سلامة النوع (type safety). يمنع هذا نموذج اللغات الكبيرة (LLM) من تخيل أنواع بيانات غير صحيحة قد تعطل الأدوات اللاحقة.

الخاتمة

يتطلب بناء وكلاء ذكاء اصطناعي جاهزين للإنتاج الانتقال بعيداً عن النموذج الأساسي لـ "الموجه والأداة". من خلال تنفيذ إدارة حالة صارمة، واستعادة أخطاء مرنة، وسلسلة أدوات منطقية، يمكننا إنشاء أنظمة ليست ذكية فحسب، بل موثوقة أيضاً. مع تطور مشهد وكلاء الذكاء الاصطناعي، ستصبح هذه الممارسات الأساسية هي المعيار للتطبيقات على مستوى المؤسسات.

Share: