في درس مصطلحات البرمجة مع الذكاء الاصطناعي قلتُ إن الوكيل برنامج يستعين بنموذج ذكاء اصطناعي: يسأله عن الخطوة التالية، وينفّذها بأدواته، ثم يعرض عليه النتيجة ويكرر. هذه الجملة صحيحة لكنها لا تكفي، فهذا الدرس يريك ما يحدث في الداخل.
لن تكتب هنا كودًا. الهدف أن تفهم الفكرة، فإذا سمعتَ كلمة «وكيل» عرفتَ ما وراءها.
في هذا الدرس
ما الفرق بين المحادثة والوكيل؟
المحادثة التي تعرفها تعمل هكذا: تكتب سؤالًا، فيكتب البرنامج جوابًا، وينتهي الأمر. يشبه ذلك صديقًا عالمًا تتصل به: تسأله «كيف أنظّم مجلد التنزيلات؟» فيشرح لك الطريقة، ثم تنفّذها أنت.
الوكيل يشبه مساعدًا موجودًا في جهازك. تقول له: «رتّب لي مجلد التنزيلات»، فيفتح المجلد، وينظر في الملفات، وينقل كل ملف إلى مكانه، ثم يعود إليك ويقول: «انتهيت، هذا ما فعلت».
الفرق ببساطة
المحادثة تقول لك ماذا تفعل، والوكيل يفعله. والفرق بينهما ليس في الذكاء، بل في أن الوكيل يملك أدوات يستعملها، ويتابع أكثر من خطوة حتى يُكمل المهمة.
وحين يقال لك عن منتج إنه «وكيل»، اسأل ثلاثة أسئلة:
- هل ينفّذ المهمة فعلًا؟ كأن ينقل ملفًا أو يرسل بريدًا أو يحجز موعدًا، لا أن يكتب جوابًا فقط.
- هل يتبع عدة خطوات حتى ينتهي؟ أم يجيب مرة واحدة عن كل رسالة؟
- هل ينظر في نتيجة عمله؟ فإن فشلت خطوة غيّر خطته.
فإن كان الجواب «لا» عن الأسئلة الثلاثة، فهذا برنامج محادثة، وهو مفيد، لكنه ليس وكيلًا.
كيف يعمل الوكيل؟
الوكيل يتكوّن من شيئين يعملان معًا:
- النموذج: هو نموذج الذكاء الاصطناعي نفسه (مثل Gemini أو GPT أو Claude). يعمل على خوادم الشركة، ولا يرى جهازك ولا ملفاتك. كل ما يفعله أنه يقرأ نصًّا ويكتب نصًّا. هو الذي يفكّر ويقرّر.
- العامل (Harness): كود برمجي يعمل على جهازك. نسمّيه في الإنجليزية Harness، وسنسمّيه هنا العامل لأنه ينفّذ ما يطلبه النموذج. يرى ملفاتك، ويملك الأدوات، ويتكلم مع النموذج عبر API. وهو الذي ينفّذ فعلًا ما يطلبه النموذج.
الوكيل = نموذج + عامل (Harness)
النموذج هو العقل، والعامل هو اليدان. النموذج وحده لا يستطيع أن يفتح ملفًا، والعامل وحده لا يعرف ماذا يفعل بالملفات. فإذا عملا معًا صارا وكيلًا.
ويتحدثان في حلقة تدور هكذا:
- العامل يرسل إلى النموذج هدفك وقائمة الأدوات وما جرى حتى الآن.
- النموذج يرد بنص: إما «أريد تشغيل أداة كذا»، وإما جوابًا نهائيًّا إن انتهى. هو لا يشغّل شيئًا، بل يكتب طلبًا فقط.
- العامل يشغّل الأداة فعلًا ويأخذ النتيجة.
- العامل يرسل النتيجة إلى النموذج، ويعود إلى الخطوة 2، حتى يأتي الجواب النهائي.
انظر إلى الحلقة في هذا المثال، وهدفك «رتّب الملفات التي في هذا المجلد»:
| الخطوة | النموذج يكتب | العامل يفعل |
|---|---|---|
| 1 | «أريد عرض الملفات» | يعرض أسماء الملفات ويرسلها إلى النموذج |
| 2 | «أريد قراءة بداية invoice-march.pdf» | يقرأ بداية الملف ويرسلها |
| 3 | «هي فاتورة، انقلها إلى مجلد الفواتير» | يسألك أولًا، فإن وافقتَ نقل الملف وأخبر النموذج |
| 4 | «انتهيت: نقلتُ أربعة ملفات» (جواب نهائي) | يعرض لك الجواب |
لاحظ أنك لم تقل له أي ملف يفتح ولا أين ينقل. أعطيته هدفًا وأدوات، وهو قرر الخطوات. وهذا هو الفرق بينه وبين برنامج عادي تكتب له كل خطوة.
ما الأداة؟
الأداة وظيفة بسيطة يستطيع العامل تنفيذها حين يُطلب منه، مثل البحث في الإنترنت أو «اعرض الملفات» أو «اقرأ ملفًا» أو «أرسل بريدًا». وهي تشبه الـ API: لها اسم، ولها ما تقبله من معطيات، وتعيد جوابًا.
والنموذج لا يرى كيف تعمل الأداة من الداخل، أي الكود الذي كتبه المطوّر لتنفيذها، بل يصله من العامل بطاقة تعريف لكل أداة: اسمها، ووصفها بكلام عادي، وما تقبله. وعلى هذا الوصف يعتمد في اختيار الأداة، ولذلك وصف الأداة الواضح أهم من الكود الذي ينفّذها.
وللوكيل ذاكرة أيضًا. فهو يحتفظ بسجل ما جرى في المهمة (طلبك والأدوات التي شغّلها ونتائجها) ويرسله إلى النموذج في كل خطوة، وهو يخضع للحد نفسه الذي شرحتُه في لماذا ينسى ما قلته؟. وإن أردتَ أن يتذكر شيئًا بين مهمة وأخرى، فاكتبه في ملف يقرؤه في كل مرة.
سؤال سريع
وكيل لديه أداتان: «عرض الملفات» و«حذف ملف». لماذا يُعدّ وصف كل أداة جزءًا مهمًّا من تصميم الوكيل؟
أظهر الإجابة
لأن النموذج لا يرى كيف تعمل الأداة من الداخل، بل يقرأ الوصف ليقرر أي أداة يطلب. وصف غامض يجعله يختار الأداة الخطأ، وفي أداة الحذف يكون الخطأ مكلفًا.
متى أستخدم وكيلًا؟
ليس كل عمل يحتاج وكيلًا. هناك طريقتان:
| سير عمل ثابت | وكيل | |
|---|---|---|
| من يقرر الخطوات؟ | أنت، مسبقًا | النموذج، أثناء العمل |
| مثال | «كل صباح اجلب سعر الدولار وأرسله لي» (درس n8n) | «رتّب لي هذا المجلد الفوضوي» |
| يناسب | عملًا تعرف خطواته كلها | عملًا لا تعرف خطواته مسبقًا |
| التكلفة والسرعة | أرخص وأسرع | كل خطوة تفكير وتكلفة |
| الخطأ | نادر، يكرر ما كتبتَه | أكثر احتمالًا، لأن أي قرار قد يكون خاطئًا |
كيف أضع حدودًا للوكيل؟
النموذج هو الذي يقرر الخطوات، وقراراته قد تخطئ، ولذلك تضع حول الوكيل ثلاثة حدود بسيطة:
- عدد الخطوات: حد أقصى، مثل ١٠ خطوات. فإن تعثّر ودار في حلقة لا تنتهي، توقف.
- الأدوات المسموحة: يملك الوكيل ما أعطيتَه فقط. لو لم تعطه أداة حذف، فلن يحذف شيئًا مهما قرر.
- موافقتك على الخطوة الخطرة: الأدوات التي تقرأ آمنة، أما التي تغيّر شيئًا (تنقل أو تحذف أو ترسل) فتسألك قبل التنفيذ: «أنقل هذا الملف؟ نعم أو لا».
الخلاصة
- المحادثة تجيب بنص وتنتهي. الوكيل ينفّذ بأدوات، ويعمل خطوات حتى ينتهي.
- الوكيل = نموذج يفكّر + عامل على جهازك ينفّذ.
- الحلقة: النموذج يطلب أداة، فيشغّلها العامل، ثم يقرأ النموذج النتيجة ويكرر.
- النموذج لا ينفّذ الأداة، بل يطلبها فقط.
- في سير العمل الثابت تقرر أنت الخطوات مسبقًا، وفي الوكيل يقرر النموذج الخطوات أثناء العمل.
- ضع ثلاثة حدود: عدد الخطوات، والأدوات المسموحة، وموافقتك على الخطوة التي تغيّر شيئًا.
في الدرس القادم نتعلم عن وكلاء الذكاء الاصطناعي في البرمجة: الوكلاء الذين تسمع عنهم، وأيها وكيل فعلًا وأيها ليس كذلك.
وإن أردت أن تبني وكيلًا صغيرًا بنفسك، فاقرأ درس أنشئ أول وكيل ذكاء اصطناعي.