انتقل إلى المحتوى الرئيسي

جارٍ تحميل المختبر المرئي…

#tool-callingالذكاء الاصطناعي الوكيلي

استدعاء الأدوات (function calling / MCP): الـJSON الذي يجعل النموذج LLM يفعل.

ما ستُجرّبه

  1. مرحبًا بك في #tool-calling. على اليسار، الفقاعة النيليّة هي النموذج LLM. على اليمين، أربع أدوات: 📄 file، 🧮 calc، 🌐 web، 💾 db. في المنتصف، كتلة JSON. حين تطلب من Claude Code «اقرأ config.json»، لا يقرأ النموذج شيئًا بنفسه: بل يكتب JSON { "name": "file.read", "arguments": { "path": "config.json" } } يتحقّق منه زمن التشغيل مقابل مخطّط، ثمّ يُنفّذه، ثمّ يُرجع ملاحظة. تلك هي function calling. لنُشغّلها يدويًّا.
  2. حمّل سيناريو جاهزًا. اكتب /scenario read-file. تمتلئ كتلة JSON المركزيّة بالمثال المرجعيّ، وتُضيء أداة file.
  3. قبل الاستدعاء، انظر إلى ما تتوقّعه الأداة. اكتب /schema file. سترى الخصائص وأنواعها وأيّها مطلوب.
  4. انتقل إلى الفعل: /call file. تتحقّق كتلة JSON المركزيّة (شريط VALIDATED ✓)، ينطلق سهم أخضر من النموذج LLM نحو الأداة 📄 التي تُضيء، ويُرجع سهم ذهبيّ الملاحظة (محتوى الملفّ).
  5. اكسر الوسائط عمدًا لرؤية التحقّق يرفض: /args {"path": 42}. تتحدّث كتلة JSON المركزيّة بهذه القيمة الجديدة، لكن دون تنفيذ: عليك التحقّق.
  6. حماية ثانية: الوضع الصارم الذي يرفض الخصائص غير المعروفة. فعّله: /strict on. ثمّ أعد كتابة /args {"path": "a.txt", "extra": true} و/validate: يتحوّل الشريط إلى الأحمر، تُرفض خاصّيّة extra بينما كانت ستُتسامَح خارج الوضع الصارم.
  7. أخيرًا، انظر إلى ما يبدو عليه الاستدعاء نفسه من جانب MCP (Model Context Protocol، مُعياريّ من Anthropic في 2024). اكتب /mcp: سترى طلب JSON-RPC tools/call واستجابته result، تلك ذاتها التي يتبادلها Claude Desktop وCursor مع خواديم MCP الخاصّة بهما.
  8. دورك الآن. جرّب /scenario compute-power ثمّ /call calc لأداة أخرى، و/example لرؤية ثلاث حمولات (واحدة معطوبة)، و/scenario web-search لأداة بحقل k اختياريّ، و/reset للبدء من جديد. لاحقًا: تُظهر #slash-commands (بريميوم) كيف تُغلَّف هذه الاستدعاءات في اختصارات /plan و/review…؛ وتُظهر #react-loop كيف تتسلسل عدّة استدعاءات في فكرة ← فعل ← ملاحظة.

أوامر القناة

  • /scenario <read-file|compute-power|web-search|db-query>يُحمّل سيناريو جاهزًا (أداة + مثال JSON + ملاحظة).
  • /call <file|calc|web|db>يُصدر JSON المتوقَّع، ثمّ يتحقّق ثمّ يُنفّذ (ملاحظة مُبرمَجة).
  • /schema <file|calc|web|db>يعرض مخطّط JSON الذي تتوقّعه أداة (دون تنفيذ).
  • /args <json>يستبدل وسائط الاستدعاء التالي (JSON خام).
  • /validateيتحقّق من JSON الحاليّ مقابل المخطّط (دون تنفيذ).
  • /strict <on|off>يُفعّل/يُعطّل رفض الخصائص غير المعروفة.
  • /mcpيعرض النسخة MCP (tools/call) لآخر استدعاء.
  • /exampleيُعطي 3 أمثلة حمولة للأداة الحاليّة (واحدة معطوبة).
  • /resetيُعيد ضبط القناة: لا أداة، لا JSON، لا سجلّ.

المسرد

استدعاء الدوال
نمط يُصدر فيه النموذج LLM بنية JSON تحتوي اسم أداة ووسائطها. يتحقّق زمن التشغيل من هذا الـJSON مقابل مخطّط، ثمّ يُنفّذ الدالّة المُوافقة ويُرجع ملاحظة إلى النموذج. مُعياريّ عبر OpenAI (tools) وAnthropic (tool use) وبروتوكول MCP.
مخطّط JSON
عقد يصف شكل الوسائط المتوقَّعة من أداة: أسماء الخصائص والأنواع (string، number، array…)، والخصائص المطلوبة. يرفض زمن التشغيل أيّ حمولة غير مطابقة قبل لمس الأداة أصلًا.
تحقّق صارم
خيار يرفض أيّ خاصّيّة غير مُعلَنة في المخطّط. بدونه، يستطيع النموذج LLM اختراع حقول (encoding، timeout…) ستُتجاهل بصمت من الأداة. يطلب Claude Code وCursor الوضع الصارم افتراضيًّا.
MCP
بروتوكول مفتوح (Anthropic، 2024) يُوحّد كيف يتحدّث عميل (Claude Desktop وCursor…) إلى خادوم أدوات (ملفّات وgit وNotion…). إنّه function calling مُغلَّف بـJSON-RPC 2.0.
tools/call
طريقة JSON-RPC التي يستدعيها عميل MCP لتنفيذ أداة: {"method": "tools/call", "params": {"name": "…", "arguments": {…}}}. يستجيب الخادوم في result.content. اكتب /mcp لرؤية مثال كامل.
ملاحظة مُصنَّفة
إرجاع من أداة (نصّ أو JSON أو خطأ) يُعيد النموذج LLM قراءته في التكرار التالي. الجزء «المُصنَّف» ينبع من كون المحتوى مُنظَّمًا (JSON) لا نصًّا حرًّا فقط — يستطيع النموذج تحليله مجدّدًا.
خاصّيّة مطلوبة
خاصّيّة مُعلَنة إلزاميّة في المخطّط: يُطلق غيابها رفضًا فوريًّا، قبل التحقّق من الحقول الأخرى. في file.read، path مطلوبة؛ في web.search، فقط query مطلوبة (k تبقى اختياريّة).
حمولة
جسم الـJSON المُرسَل إلى الأداة. على MCP، يعيش في params.arguments من طلب tools/call. تلك بالضبط ما تعرضه البطاقة 3D المركزيّة.
إعادة المحاولة
حين يرفض التحقّق حمولة، يستلم النموذج LLM الخطأ بوصفه ملاحظة ويُعيد توليد JSON مُصحَّح. زمن تشغيل جيّد يحدّ عدد إعادات المحاولة (2–5) ويُمرّر الخطأ بلغة طبيعيّة لمساعدة النموذج.
أمر شرطة مائلة
اختصار للمستخدم (/plan و/review…) يُطلق تدفّق عمل صغيرًا لوكيل — غالبًا سلسلة من استدعاءات الأدوات. مُفصّل في #slash-commands (بريميوم).

قنوات أخرى في الذكاء الاصطناعي الوكيلي

  • #react-loopحلقة ReAct لدى الوكيل: فكرة ← فعل ← ملاحظة، مباشرةً.
  • #tool-callingاستدعاء الأدوات (function calling / MCP): الـJSON الذي يجعل النموذج LLM يفعل.
  • #slash-commandsأوامر الشرطة المائلة، على غرار Claude Code / Cursor: قوالب، وسائط، تسلسل.
  • #context-memoryنافذة السياق وذاكرة العميل: عدّ الرموز، الاقتطاع، التلخيص، الفهرسة.
  • #planning-reflectionالتخطيط والتأمّل والتصحيح الذاتي: من 60% إلى 90% نجاحًا.
  • #multi-agentsالعملاء المتعدّدون: planner وworkers وverifier. رسم بياني (DAG) يتفوّق على العميل الأحادي.