بناء وكيل ذكي لإدارة المهام: تطبيق عملي على التخطيط الآلي والتنفيذ متعدد الخطوات
العرض التشغيلي: من الطلب النصي إلى خطة التنفيذ
الفصل الأول: العرض التشغيلي: من الطلب النصي إلى خطة التنفيذ
في هذا الفصل، سنغوص في قلب الوكيل الذكي: العملية التي يحول بها طلبًا نصيًا عامًا من المستخدم إلى خطة تنفيذية منظمة وقابلة للتنفيذ آليًا. هذه هي الخطوة الأكثر حسماً والتي تميز النظام الذكي عن مجرد برنامج نصي بسيط.
1.1 فلسفة التخطيط الآلي: لماذا لا ننفذ مباشرة؟
قد يتساءل البعض: لماذا هذا التعقيد؟ لماذا لا نأخذ الطلب "ابحث عن آخر أخبار الذكاء الاصطناعي وارسل لي ملخصًا على الإيميل" وننفذه مباشرة ببضعة أسطر من الكود؟ الجواب يكمن في المرونة، القوة، والقابلية للتوسع.
- المرونة: الوكيل المصمم للتخطيط أولاً يمكنه التعامل مع طلبات غير متوقعة ومعقدة دون الحاجة لإعادة برمجته لكل سيناريو.
- الشفافية والتحكم: وجود خطة واضحة يسمح لنا (وللنظام) بمراجعة الخطوات قبل التنفيذ، واكتشاف الأخطاء المحتملة، أو حتى تقديم الخطة للمستخدم للموافقة عليها.
- إمكانية التصحيح: إذا فشلت خطوة في التنفيذ، يمكن للوكيل الرجوع إلى الخطة، تحليل سبب الفشل، وتعديل المسار أو إعادة المحاولة بطريقة ذكية.
- التركيبية: يمكن للخطة أن تجمع بين أدوات ووظائف متعددة (بحث، معالجة نصوص، اتصال واجهات برمجية) في تتابع منطقي.
1.2 تشريح العملية: المكونات الأساسية
لتحويل الطلب إلى خطة، يحتاج نظامنا إلى ثلاثة مكونات تعمل بتناغم:
أ) مُحلّل النية (Intent Parser)
هذه هي الوحدة المسؤولة عن فهم "النية" العامة من الطلب. لا تحلل التفاصيل الدقيقة للخطوات بعد، بل تحدد المجال والهدف العام. على سبيل المثال، من طلب "رتب ملفات مشروعي في مجلدات حسب الامتداد" تستنتج أن النية هي "تنظيم الملفات".
ب) مكتبة الأدوات (Tools Registry)
قاعدة بيانات تحتوي على جميع الإجراءات الأولية (Primitive Actions) التي يمكن للوكيل القيام بها. كل أداة لها وصف دقيق لوظيفتها، ومعاملات الإدخال المطلوبة، ونوع المخرجات. أمثلة: search_web(query), send_email(to, subject, body), read_file(path).
ج) مُخطّط الوكيل (Agent Planner)
العقل المدبر. يأخذ النية من المحلل، وينظر إلى مكتبة الأدوات المتاحة، ويبني خطة هرمية (شجرة) من المهام. يستخدم غالبًا نماذج لغة كبيرة (LLMs) لقدرتها الفائقة على فهم السياق وتوليد نص منظم.
1.3 التطبيق العملي: بناء مُخطّط بسيط باستخدام JavaScript و LLM
لنقم ببناء نموذج أولي لمخطّط يستدعي واجهة نموذج لغة (مثل OpenAI GPT) لتحويل الطلب إلى خطة JSON منظمة. سنفترض أن لدينا مجموعة أدوات محددة مسبقًا.
الخطوة 1: تعريف مكتبة الأدوات
ننشئ كائنًا يصف جميع الأدوات المتاحة للوكيل. هذا الكائن سيرسل لاحقًا إلى الـ LLM لمساعدته في التخطيط.
// تعريف الأدوات المتاحة للوكيل
const availableTools = {
searchWeb: {
description: "يبحث على الإنترنت عن معلومات باستخدام استعلام معين. يُستخدم لجمع البيانات أو الإجابات من الويب.",
parameters: {
query: { type: "string", description: "استعلام البحث" }
},
returns: "مصفوفة من النتائج (العناوين، الروابط، المقتطفات)."
},
processData: {
description: "يحلل ويلخص أو يستخرج معلومات محددة من نص معين.",
parameters: {
text: { type: "string", description: "النص المراد معالجته" },
instruction: { type: "string", description: "تعليمات المعالجة (مثل 'لخص'، 'استخرج التواريخ')" }
},
returns: "النص الناتج بعد المعالجة."
},
sendEmail: {
description: "يرسل رسالة بريد إلكتروني إلى مستلم واحد أو أكثر.",
parameters: {
to: { type: "string", description: "عنوان البريد الإلكتروني للمستلم" },
subject: { type: "string", description: "موضوع الرسالة" },
body: { type: "string", description: "محتوى الرسالة" }
},
returns: "تأكيد الإرسال أو خطأ."
},
readDirectory: {
description: "يقرأ محتويات مجلد معين في نظام الملفات.",
parameters: {
path: { type: "string", description: "المسار إلى المجلد" }
},
returns: "مصفوفة بأسماء الملفات والمجلدات الفرعية."
}
};
جاري تحميل التقييمات...