البناء · فصل ١٠

ابني كلاينت شات

Tool loop · Claude API · stdio client
🎯 الهدف: تبني كلاينت يسأل الموديل، ينفّذ الأداة على السيرفر، ويرجع الرد لليوزر.

هنا شات بوت مدعوم بموديل بيتوصل بسيرفرات MCP. خلّص فصل بناء السيرفر الأول عشان تفهم الطرفين. الموديل في التيوتوريال Claude عن طريق واجهته. اسم الموديل بيتغير، فراجع الدوكس.

السبع خطوات

الكلاينت سكرتير، مش الموديل نفسه.

١. الكلاينت يجيب قائمة الأدوات. ٢. يبعت سؤالك للموديل مع أوصاف الأدوات. ٣. الموديل يقرر يستخدم أنهي أداة، لو فيه. ٤. الكلاينت ينفّذها عبر السيرفر. ٥. النتيجة ترجع للموديل. ٦. الموديل يرد بلغة طبيعية. ٧. الرد يتعرض لك.

الهيكل

أوبجكت Client هو اللي برنامجك بيكلم بيه السيرفر: قائمة أدوات، نداء، قراءة مورد. إعداد stdio مش اتصال. دالة النقل بتحوّل الإعداد لقناة، والكلاينت يفتحها لما تدخل بلوك الانتظار. الخروج يقفّل السيرفر.

حلقة السؤال:

  • حوّل أدوات السيرفر لشكل واجهة الموديل: اسم، ووصف، وسكيمة مدخل.
  • لو الرد فيه استخدام أداة، نفّذها ورجّع النتيجة كبلوك مرتبط بمعرّف النداء.
  • الأداة اللي بترمي خطأ ما بترمّهوش عندك. بترجع بعلامة خطأ. تمرير الرسالة للموديل بيخليه يقرأها ويجرب مسار تاني.
  • كمّل لحد ما الرد يبقى نص من غير أدوات، أو توصل لحد الجولات اللي حاطه.

مفتاح الواجهة في ملف بيئة مش في الكود، والملف ده في قائمة التجاهل. المفتاح من لوحة المزود.

التشغيل بيمرر مسار سيرفر: ملف بايثون يتفتح بالمفسر، وملف جافاسكربت بـ node. جرّب على سيرفر الطقس اللي بنيته.

نفس الحلقة موجودة في الدوكس بلغات تانية. الأعلام وإصدارات الحزم بتتغير. راجع صفحة اللغة.

خلّصت الفصل لما

🧠 اختبر نفسك
١) مين اللي يقرر يستخدم أداة، ومين اللي ينفّذها؟
الموديل يقرر. الكلاينت ينفّذ على السيرفر ويرجع النتيجة للموديل.
٢) الأداة رمت خطأ. الكلاينت يعمل إيه؟
يرجع العلامة والنص للموديل. الاستثناء ما يطلعش بره نداء الأداة.
٣) ليه مفتاح الواجهة في ملف بيئة؟
عشان ما يتسجلش في الكود ولا في المستودع.