تطورت نماذج اللغات الكبيرة (LLMs) بسرعة من مولدات نصوص بسيطة إلى وكلاء مستقلين قادرين على التفاعل مع الأنظمة الخارجية. ومع ذلك، فإن الفجوة بين النموذج الذي يمكنه "الدردشة" والوكيل الذي يمكنه تنفيذ سير العمل المعقد بشكل موثوق هي فجوة شاسعة. كمبرمجين، نحن نتجاوز هندسة الأوامر البسيطة نحو عصر سير العمل الوكيل (Agentic Workflows). التحدي الحاسم الآن ليس في بناء هذه الوكلاء، بل في تقييم قدرتهم على استخدام الأدوات—مثل واجهات برمجة التطبيقات (APIs)، وقواعد البيانات، ومفسرات الأكواد—بشكل صارم في بيئات واقعية وغير متوقعة.
تعقيد تقييم استخدام الأدوات
يختلف تقييم وكيل LLM جوهرياً عن تقييم نموذج ثابت للإجابة على الأسئلة (QA). في المقاييس التقليدية، يكون السياق ثابتاً. أما في سير العمل الوكيل، فإن السياق ديناميكي. يجب على الوكيل ليس فقط فهم نية المستخدم، بل أيضاً اختيار الأداة الصحيحة، وتنسيق الحجج بشكل صحيح، والتعامل مع فشل واجهات برمجة التطبيقات، وتسلسل استدعاءات أدوات متعددة لتحقيق هدف متعدد الخطوات.
تشمل المقاييس الرئيسية لهذا التقييم ما يلي:
- Pass@K: هل يمكن للوكيل حل المهمة مرة واحدة على الأقل في K محاولة؟
- معدل نجاح التنفيذ: هل تطابق الإجراء النهائي مع النتيجة المتوقعة؟
- الكفاءة: كم عدد الخطوات التي اتخذها الوكيل؟ غالباً ما تشير الخطوات الأقل إلى استنتاجات أفضل.
- التكلفة: يرتبط استخدام الرموز (Tokens) بتعقيد عملية اختيار الأداة.
تصميم سيناريوهات واقعية
للاختبار الحقيقي لوكيل، يجب عليك الت超越 مجموعات البيانات الاصطناعية. تتضمن السيناريوهات الواقعية الضوضاء، وحدود المعدل (Rate Limits)، والتعليمات الغامضة. يجب أن تتضمن مجموعة التقييم القوية ما يلي:
- استدعاءات أدوات خطوة واحدة: اختبار ما إذا كان الوكيل يمكنه تنسيق طلب بشكل صحيح لواجهة برمجة تطبيقات بسيطة، مثل جلب حالة الطقس.
- التسلسل متعدد الخطوات: المهام التي تتطلب قراءة البيانات من أداة واحدة واستخدامها كمدخل لأداة أخرى (على سبيل المثال، "ابحث عن العميل الذي لديه أعلى رصيد مستحق وأرسل له بريدًا إلكترونيًا بالفاتورة").
- استعادة الأخطاء: إدخال الفشل عمدًا (مثل خطأ 500) لمعرفة ما إذا كان الوكيل يمكنه إعادة المحاولة أو تقديم استجابة احتياطية ذات معنى.
مثال عملي: استعلام تجارة إلكترونية مؤتمت
افترض أن هناك وكيلًا مكلفًا باسترداد تفاصيل الطلب. قد يفشل التنفيذ الساذج إذا لم يتمكن من تحليل استجابة JSON أو إذا اختار نقطة نهاية واجهة برمجة التطبيقات (API Endpoint) الخاطئة. فيما يلي مثال مبسط بلغة Python باستخدام إطار عمل وكيل افتراضي لتوضيح كيفية هيكلة حالة اختبار التقييم.
import unittest
from agent_framework import Agent, Tool
class TestEcommerceAgent(unittest.TestCase):
def setUp(self):
self.agent = Agent(
model="gpt-4-turbo",
tools=[Tool("get_order", args=["order_id"])]
)
def test_successful_order_lookup(self):
# بالنظر إلى معرف طلب صالح، يجب أن يعيد الوكيل تفاصيل منسقة
response = self.agent.run("What is the status of order #12345?")
# تأكد من أن الوكيل استدعى الأداة الصحيحة
self.assertIn("get_order", response.used_tools)
# تأكد من أن الإخراج يحتوي على الكلمات الرئيسية المتوقعة
self.assertTrue(any(keyword in response.final_output
for keyword in ["shipped", "delivered", "processing"]))
def test_fallback_on_missing_tool(self):
# إذا سأل المستخدم سؤالاً لا يستطيع الوكيل معالجته،
# فيجب عليه الرفض بأناقة بدلاً من التوهم.
response = self.agent.run("Compose a haiku about apples.")
# لا يجب أن يحاول الوكيل استخدام 'get_order'
self.assertNotIn("get_order", response.used_tools)
self.assertIn("haiku", response.final_output.lower())
الخاتمة
تقييم وكلاء نماذج اللغات الكبيرة (LLM) في استخدام الأدوات الواقعية ليس حدثًا لمرة واحدة، بل هو عملية مستمرة. مع تغير مشهد واجهات برمجة التطبيقات المتاحة ونوايا المستخدمين، يجب أن تتغير مقاييس التقييم الخاصة بك أيضًا. من خلال التركيز على السيناريوهات الديناميكية متعددة الخطوات ودمج اختبارات التعامل مع الأخطاء، يمكنك بناء وكلاء ليسوا أذكياء فحسب، بل مرنين وموثوقين. يكمن مستقبل الذكاء الاصطناعي في قدرته على التصرف، ومسؤوليتنا كمهندسين هي ضمان أن تكون تلك التصرفات صحيحة وآمنة وفعالة.