تعمق في MCPs، الجزء 1: ما هو MCP، على أي حال؟

إذا كنت تتابع أخبار الذكاء الاصطناعي، فمن المؤكد أنك سمعت عن بروتوكول سياق النموذج (MCP). منذ أن أعلنت Anthropic عن هذا المعيار الجديد في نوفمبر 2024، ازدادت شعبيته بشكل كبير. هناك MCPs لإرسال بريد إلكتروني/رسالة إلكترونية، MCPs للبحث في الويب، MCPs التي تشغل MCPs أخرى. تسمح MCPs لـ LLMs المتواضعة بتقديم طلبات السحب وحجوزات الطائرات. في مايو، أعلنت Microsoft عن تسجيل MCP لـ Windows الذي يتيح للتطبيقات عرض وظائفها لوكلاء الذكاء الاصطناعي

شكراً جزيلاً! ولكن كيف؟ ما هو MCP؟ كيف تستخدمه؟ لماذا أصبح أكثر شعبية من الجهود السابقة؟ كيف تسمح لروبوتات الدردشة بالقيام بأشياء في العالم الحقيقي؟ وكيف يمكنك بناء واحد خاص بك؟

عندما قررنا إنشاء خادم MCP خاص بنا للـ DeepL API، بدا الأمر صعبًا. ولكن بمجرد أن تفهم حقًا كيفية عمل MCPs، وكيف تتيح MCPs للوكلاء اكتشاف الأدوات واستخدامها، وكيف يمكنك إنشاء خادم MCP أساسي باستخدام 10 أسطر من التعليمات البرمجية، فإن الأمر لن يكون مخيفًا للغاية. في هذه السلسلة من المنشورات، سنسعى إلى توضيح هذا الموضوع. سنستكشف:

  • ما هو MCP
  • كيفية استخدام MCP في عميل الذكاء الاصطناعي
  • كيفية إنشاء خادم MCP

هيا بنا!

ماذا يعني MCP؟

MCP هي اختصار لـ ModelContextProtocol(بروتوكول سياق النموذج).

"النموذج"هو نموذج الذكاء الاصطناعي. يمكن أن يكون هذا أي نوع من أسطح الذكاء الاصطناعي، ولكنه عادةً ما يكون مبنيًا على LLM. هنا سنشير إلى هذا باسم وكيل الذكاء الاصطناعي أو مساعد الذكاء الاصطناعي.

يشيرمصطلح "السياق"إلى السياق الذي يعمل فيه وكيل الذكاء الاصطناعي. في مجال الذكاء الاصطناعي، غالبًا ما نتحدث عن "نافذة السياق"، والتي تشير إلى كل السياق الذي تدمجه LLM عند إنشاء ردها على موجه - سجل المحادثة، موجه النظام، والمزيد. لكي يعمل MCP، يوفر سطح الذكاء الاصطناعي لـ LLM الأساسي موجهًا إضافيًا يحدد الأدوات التي يمكن استخدامها وكيفية استخدامها.

"البروتوكول"هو مجموعة من القواعد التي تصف طريقة تواصل كيانين عبر شبكة. أحد البروتوكولات التي تستخدمها يوميًا هو HTTP - بروتوكول نقل النص التشعبي - الذي يحكم كيفية تواصل خادم الشبكة وعميل الويب.

تجميع كل هذا معًا: "بروتوكول سياق النموذج" هو بروتوكول يوفر السياق الذي يتيح لنماذج الذكاء الاصطناعي استخدام أدوات وموارد خارجية.

MCP هو معيار مفتوح ابتكره مهندسين من شركة Anthropic. يستخدم JSON-RPC، وهو بروتوكول شائع لتعريف استدعاءات الوظائف. وهي مستوحاة من بروتوكول خادم اللغة، الذي أنشأته Microsoft لفصل المنطق الكامن وراء معالجة لغات الترميز عن بيئات تطوير البرامج (IDE).

MCP ليس برنامجًا أو تطبيقًا أو API. ولكنه يمنح وكلاء الذكاء الاصطناعي إمكانية الوصول إلى كل هذه المعلومات!

ماذا تفعل MCP؟

يمكن أن تقدم نماذج اللغة الكبيرة (LLMs) ردودًا ذكية ومفيدة على مدخلات المستخدم. لكنها لا تستطيع الوصول إلى الخدمات الخارجية، ولا يمكنها التواصل مع برامج أخرى، ولا تملك وسيلة لاسترداد المعلومات المحدثة. يمنح MCP أي سطح الذكاء الاصطناعي القدرة على إرسال طلبات إلى أي خدمة برمجية والحصول على استجابة. يوفر لوكيل الذكاء الاصطناعي وسيلة قياسية للوصول إلى الأدوات والموارد والبيانات الخارجية.

بدون MCP، يكون عميل الذكاء الاصطناعي مجرد عقل بدون جسد، ولا توجد طريقة للوصول إلى العالم الخارجي. مع MCP، يمكن لعميل الذكاء الاصطناعي أن يكون وكيلاً!

من يمكنه استخدام MCP؟

نظرًا لأن MCP هو معيار مفتوح، يمكن لأي شخص تنفيذ عميل MCP أو خادم MCP.

يمكن أن يكون العميل أي تطبيق يعتمد على LLM. يمكنك استخدام MCPs في تطبيقات مثل Claude Desktopو VSCodeو و و Cursor. أو يمكنك استخدام MCPs مع وكيل الذكاء الاصطناعي قمت ببنائه باستخدام إطار عمل مثل LangChain أو CrewAI.

لماذا أصبح MCP شائعًا جدًا؟

أحد الأسباب هو أنه معيار مفتوح. يمكن لأي وكيل الذكاء الاصطناعي تنفيذ MCP، وكذلك أي أداة. وهذا يمنحه جاذبية أوسع من الحلول الخاصة بمنتج شركة معينة، مثل OpenAI's Function calling.

في إنشاء هذا الحل الشامل، استلهم مبتكرو MCP من بروتوكول خادم اللغة (LSP). قبل LSP، عندما أرادت IDE تنفيذ وظائف مثل الإكمال التلقائي أو تمييز بناء الجملة للغة برمجة معينة، كان عليها أن تقوم بدمجها بنفسها. وكانت النتيجة ما أشار إليه المبدعون مؤخرًا باسم مشكلة m × n، حيث كان على الأشخاص تنفيذ خدمات اللغة بشكل منفصل لكل تركيبة IDE/لغة ممكنة. مع LSP، تحتاج كل لغة برمجة إلى مكتبة تكامل واحدة فقط. ويمكن لبيئة تطوير متكاملة (IDE) تدعم LSP أن تدعم أي لغة من هذا النوع. وبالمثل، بمجرد أن تقوم إحدى الخدمات بتنفيذ خادم MCP، يمكن لأي عميل الذكاء الاصطناعي الذي يدعم MCP استخدامه. يحتاج العميل فقط إلى مساعدة MCP.

MCP مرن في نواحٍ أخرى. يمكن تشغيله محليًا أو عبر شبكة. وهي تأتي من Anthropic، وهي شركة تحظى باحترام كبير وتشارك في مزايا المعايير المفتوحة.

لماذا يحتاج وكلاء الذكاء الاصطناعي إلى بروتوكول قياسي؟

نظرًا لأن نماذج اللغة الكبيرة (LLM) جيدة جدًا في فهم المعلومات وتطبيقها، ألا يمكنها بالفعل استخدام أي خدمة برمجية تتضمن بياناتها المُستخدَمة في التدريب وصفًا لها؟ بعد كل شيء، فإن LLMs تفهم بالفعل كيفية استخدام العديد من API الشائعة، كما ستجد إذا طلبت المساعدة من مساعد برمجة مثل Copilot أو Sourcegraph.

ولكن إذا منحت LLM حق الوصول إلى كل API في البيانات المُستخدَمة في التدريب الخاصة بها، فسوف ينتج عن ذلك فوضى عارمة. كيف يمكنه معرفة أي API يجب الاتصال بها ومتى؟ كيف سيحصل على مفتاح API الخاص بك وبيانات الاعتماد الخاصة بك، وكيف سيستخدم الخدمات التي تتطلب أنواعًا أخرى من الوصول؟ ماذا لو أردت معرفة المسافة بالسيارة من كانساس سيتي إلى دي موين - أو درجة الحرارة الحالية في بانكوك؟ هناك العديد من الطرق للعثور على هذه المعلومات. كمستخدم، تريد التحكم في الإجراءات التي يختارها LLM الخاص بك. هذا صحيح بشكل خاص عندما لا يتعلق الأمر باسترجاع المعلومات، بل باتخاذ إجراءات تؤثر على العالم، مثل إرسال بريد إلكتروني/رسالة إلكترونية أو طلب بيتزا.

صحيح أن الوكيل يمكنه قراءة وفهم مواصفات OpenAPI منخفضة المستوى، أو كامل وثائق API، ثم إجراء اتصالات API وفقًا لذلك. لكن MCP تتيح لصانعي الأدوات تحديد خدمات عالية المستوى تكون مفيدة بشكل خاص لوكيل الذكاء الاصطناعي، وتوجه هذا الوكيل في اتجاه مفيد. حتى الآن، هذا مجال لا يزال البشر يتفوقون فيه.

وبالتالي، يتبين أن أفضل طريقة في الوقت الحالي هي تحديد الأدوات والموارد التي يمكن أن يستخدمها LLM وكيفية استخدامها بشكل صريح. يقوم MCP بذلك بالطريقة التقليدية، بشكل حتمي - ليس من خلال استخدام LLM، ولكن من خلال الكود و JSON.

ولكن كيف يمكن لـ LLM استخدام الأدوات؟

في الأساس، LLM هي آلة إنشاء الرموز - الرموز التي يصادفها البشر في شكل نصوص وصور وصوت وما إلى ذلك. فكيف يمكن لمثل هذه الآلة أن تحصل على الأدوات والموارد؟ كيف تعرف أن لديها مثل هذا الوصول، وكيف تعرف أي واحد تستخدم؟

المفتاح هو أنه، في الواقع، كما ماكسيميليان شوارزمولر، لا يمكن لـ LLM التواصل مع العالم الخارجي إلا باستخدام الرموز. تأخذ الرموز كمدخلات وتنتج الرموز كخرجات. ويمكن أن تشمل هذه الرموز الكيانات التي تعني "أريد استخدام أداة". لذلك، للإشارة إلى رغبته في استخدام أداة أو مورد ما، وللاستخدام الفعلي لأحدهما، يقوم LLM بإنشاء رموز قياسية يتعرف عليها البرنامج المحيط به على أنها استدعاء لأداة ويقوم باعتراضها. ثم يقوم هذا البرنامج باستدعاء خدمة وإعادة الناتج إلى LLM.

يمكن لـ LLM استخدام الرموز المتخصصة هنا. ولكن عادةً ما يستخدم فقط فواصل ولغة محددة - وبهذه الطريقة يمكنك تكييف هذه القدرة مع LLM موجود بالفعل عن طريق ضبطه بدقة. على سبيل المثال، يمكنك استخدام علامات البداية والنهاية بين أقواس معقوفة تحيط بـ JSON، كما في نموذج إخراج الوكيل التالي:

بالتأكيد! يمكنني إنشاء جدول بيانات جديد لك. انتظر...

[tool-start] { "tool": "spreadsheets", "action": "create" } [tool-end]

هذا بالضبط ما فعله الباحثون في ورقتهم البحثية Toolformer لعام 2023، والتي أظهرت، كما يقول العنوان، أن "نموذج اللغة يمكنه تعليم نفسه استخدام الأدوات". في هذه الدراسة، أنشأ المؤلفون البيانات المُستخدَمة في التدريب التي تضمنت تمثيلات نصية بسيطة لطلبات API ونتائجها. بعد ضبط نموذج LLM باستخدام هذه البيانات الإضافية، أنتجوا نموذج LLM يستدعي تلك الواجهات البرمجية للتطبيقات (APIs) لإنتاج استجابة واعدة للموجهات.

استخدموا التنسيق البسيط:

[اسم_الوظيفة(البيانات) → النتيجة]

على سبيل المثال، مع العلم أن LLMs تعاني من صعوبات في الرياضيات، فقد وفرت أداة حاسبة. ثم أدرجوا في البيانات المُستخدَمة في التدريب سلسلات مثل هذه:

من بين 1400 مشارك، 400 (أو [حاسبة (400 / 1400) → 0.29] 29٪) اجتازوا الاختبار.

و

الاسم مشتق من "la tortuga"، وهي الكلمة الإسبانية التي تعني [MT(“tortuga”) → سلحفاة] السلحفاة.

من خلال ضبط LLM باستخدام هذه البيانات، تم إنشاء LLM يعرف كيفية استدعاء واجهات برمجة التطبيقات (API) لتوليد الاستجابة الأكثر واعدة لموجه معين.

ولكن لا يتعين عليك ضبط LLM بدقة لكي تتمكن من استخدام الأدوات. اتضح أن كل ما تحتاجه هو تلميح. توضح هذه المقالة يوضح كيفية تعليم LLM استخدام الأدوات باستخدام JSON المحدد بـ [[qwen-tool-start]] و [[qwen-tool-end]]، فقط من خلال إعطائه موجه مناسب. يمكنك تجربة ذلك بنفسك! ما عليك سوى زيارة روبوت الدردشة المفضل لديك وإخباره بما يلي:

تهانينا! يمكنك الآن استخدام أداة لإجراء عملية الضرب. عندما تحتاج إلى إجراء عملية حسابية، كل ما عليك فعله هو إخراج الصيغة التالية: 

[الرياضيات] { "arg1": {قيمة}, "arg2": {value} } [/Math] 

حيث يمثل كل {قيمة} بالطبع قيمة تريد ضربها. حسناً? 

ثم أعط LLM مسألة حسابية وشاهده وهو ينتج بدقة الصيغة التي أعطيتها له لأداة الحساب الخاصة بك.

لا تزال نماذج اللغة الكبيرة الحديثة تستخدم الأدوات بنفس الطريقة تقريبًا. على سبيل المثال، يصف أنثروبك هنا الطريقة التي يستخدمونها لإنشاء نظام موجه لـ Claude لاستخدام الأدوات في API الخاصة بهم.

كيف يتعامل LLM مع مخرجات الأداة؟

كيف يتلقى LLM مخرجات الأداة؟ مرة أخرى، الأمر كله يتعلق بالرموز. بمجرد أن يتلقى عميل الذكاء الاصطناعي الناتج من الأداة، فإنه يعيد إدخاله في LLM كمدخلات، ولكن بطريقة تجعل LLM يدرك أنه ناتج الأداة وليس مدخلات المستخدم النهائي.

تجميع كل ذلك معًا

تلخيصًا، إليك ما يحدث عندما يستخدم LLM أداة ما:

  • أنواع المستخدمين في الإدخال
  • LLM يعالج هذه المدخلات
  • أثناء إنشاء المخرجات، "يقرر" LLM أن استدعاء أداة ما هو أفضل طريقة لإكمال مخرجاته. هذا يعني أنه ينتج إعداد/ضبط من الرموز التي تم التدريب عليها لمعرفتها والتي ستسمح له باستدعاء أداة.
  • يتعرف عميل الذكاء الاصطناعي على هذه الرموز على أنها شيء يجب أن يستدعي أداة ما، فيعترضها، ويحلل JSON إلى معلمات وأي شيء آخر في الطلب، ويرسلها إلى الأداة المناسبة.
  • تقوم الأداة بإنشاء مخرجات، والتي قد تتضمن أو لا تتضمن استخدام واجهة برمجة تطبيقات (API). يعيد هذا إلى عميل الذكاء الاصطناعي، الذي يرسله إلى LLM
  • عمليات LLM إخراج الأداة
  • يستخدم LLM هذا الناتج لمواصلة إنشاء استجابة للمستخدم

وهذه هي جولتي السريعة حول ماهية MCP وكيفية تنفيذه في LLMs. في مقالتي التالية، سأوضح لك كيفية استخدام MCPs في عميل الذكاء الاصطناعي الخاص بك!


عن المؤلف

بصفته مبشراً مطوراً في DeepL، يعمل بن مورس على مساعدة أي شخص على استخدام واجهة برمجة تطبيقات DeepL للوصول إلى ترجماتها الذكية ذات المستوى العالمي. سابقًا، كان يعمل في Google كمسؤول إداري/مدير منتج في Chrome ومدافع عن المطورين من أجل شبكة إنترنت أفضل. قبل ذلك كان مهندس برمجيات في صحيفة نيويورك تايمز وشركة AOL، وكان في وقت من الأوقات موسيقيًا متفرغًا. حصل على بكالوريوس في علوم الكمبيوتر من جامعة هارفارد ودكتوراه في الموسيقى من جامعة كاليفورنيا في ديفيس. ربما لا تزال تجده يعزف مع الفرقة Ancient Babies، ويحلل الأغاني الشعبية في Rock Theory، ويكتب مسرحية موسيقية لا تتعلق في الواقع بستيف جوبز.

مشاركة