#tool-calling — الذكاء الاصطناعي الوكيلي
استدعاء الأدوات (function calling / MCP): الـJSON الذي يجعل النموذج LLM يفعل.
ما ستُجرّبه
- مرحبًا بك في #tool-calling. على اليسار، الفقاعة النيليّة هي النموذج LLM. على اليمين، أربع أدوات: 📄 file، 🧮 calc، 🌐 web، 💾 db. في المنتصف، كتلة JSON. حين تطلب من Claude Code «اقرأ
config.json»، لا يقرأ النموذج شيئًا بنفسه: بل يكتب JSON{ "name": "file.read", "arguments": { "path": "config.json" } }يتحقّق منه زمن التشغيل مقابل مخطّط، ثمّ يُنفّذه، ثمّ يُرجع ملاحظة. تلك هي function calling. لنُشغّلها يدويًّا. - حمّل سيناريو جاهزًا. اكتب
/scenario read-file. تمتلئ كتلة JSON المركزيّة بالمثال المرجعيّ، وتُضيء أداة file. - قبل الاستدعاء، انظر إلى ما تتوقّعه الأداة. اكتب
/schema file. سترى الخصائص وأنواعها وأيّها مطلوب. - انتقل إلى الفعل:
/call file. تتحقّق كتلة JSON المركزيّة (شريط VALIDATED ✓)، ينطلق سهم أخضر من النموذج LLM نحو الأداة 📄 التي تُضيء، ويُرجع سهم ذهبيّ الملاحظة (محتوى الملفّ). - اكسر الوسائط عمدًا لرؤية التحقّق يرفض:
/args {"path": 42}. تتحدّث كتلة JSON المركزيّة بهذه القيمة الجديدة، لكن دون تنفيذ: عليك التحقّق. - حماية ثانية: الوضع الصارم الذي يرفض الخصائص غير المعروفة. فعّله:
/strict on. ثمّ أعد كتابة/args {"path": "a.txt", "extra": true}و/validate: يتحوّل الشريط إلى الأحمر، تُرفض خاصّيّة extra بينما كانت ستُتسامَح خارج الوضع الصارم. - أخيرًا، انظر إلى ما يبدو عليه الاستدعاء نفسه من جانب MCP (Model Context Protocol، مُعياريّ من Anthropic في 2024). اكتب
/mcp: سترى طلب JSON-RPCtools/callواستجابتهresult، تلك ذاتها التي يتبادلها Claude Desktop وCursor مع خواديم MCP الخاصّة بهما. - دورك الآن. جرّب
/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) يتفوّق على العميل الأحادي.