اشرح كيف التكنولوجيات الجديدة، زي LLMs و ChatGPT، ممكن يحدثوا ثورة في واجهات برمجة التطبيقات (APIs) في المستقبل. عطيني مثال عن كيفية عمل هذه واجهات التطبيق.
كطفل، كنت بحب اتفرج على جيتسونز. وكلما كبرت وخلصت الى كتابة البرمجيات وخلق و تنفيذ بنيات النظم، فكرت اني ما راح اشوف يوما ما مطبخ زي جيتسون ممكن. جي تي تي (تشات جي تي تي، إلخ) غير رأيي.  التزامات تعاقدية بصفتي مهندس معماري، لازم تفكر زي محامي. بتعرف العقود (API) بين الأنظمة أو المكونات. بتراقبوا هذه التطبيقات المتنوعة عشان تستغل أو تستخدم بطريقة خاطئة.  راح استخدم محرر Swagger لتعريف العقود، و راح اكتب واجهة برمجة التطبيقات لتطابق التفاعلات الضمنية في النماذج. راح اتفحص التصميم مع الفريق، راح اتجول في سيناريوهات عشان اشوف اذا كانت واجهة التطبيقات بتتناسب مع حالة الاستخدام و ما راح تفرض ضغوط في الأداء، و راح اتحاكي و اتسوق بقدر ما اقدر على طول الرحلة.  أنا كنت محتاط جداً لأحصل عليه بالشكل الصحيح في المرة الأولى. ما كانت ابدا مثالية المرة الاولى، طبعا. عشان كده، لازم اخد بالكيفية اللي بتتطور فيها واجهة التطبيق مع التقليل من التكاليف/التأثير على بقية النظام. بعد ما يتم نشر الـ API، راح يصير شي حارسه، زي السياسي الصادق يحرس الدستور. لازم يكون الفريق حذراً مع أي تغيير كان له تأثير على برنامج التطبيقات.  شبكة API... أكتر شبيه بفوضى المنتج! واجهة التطبيقات بتعتمد على واجهة التطبيقات اللي بتعتمد على واجهة تطبيقات و مكتبات اكتر. بعد ما يصير النظام كبير كفاية، بتصبح التعقيد حواجز. التغييرات الصغيرة ممكن يكون لها تأثير كبير. شوية طرق (زي #GraphQL المتحالف) بيساعدوا في إدارة التعقيد بشكل جيد. بس لسه بيحتوي على واجهة برمجة التطبيقات اللي ممكن يكون فيها كتير من الهشاشة. #Agile او لا، تطوير شبكة معقدة من واجهات برمجة التطبيقات معقد، وبتحتاج مهارات متخصصة، ومليء بالتحديات الغير متوقعة.  محادثة المطبخ، على غرار شات جي بي تي مطبخ عائلة جيتسون بيحتوي على عدد من الأنظمة، كل واحد منهما مكون من أجزاء مختلفة، أجهزة استشعار، أجهزة، مدخلات ومخرجات. بالنظر لمعقدة التفاعلات بين الأنظمة المستقلة في المطبخ، وحقيقة أن مكونات مطبخ جيتسون بتأتي من مختلف البائعين أو المصنعين، تصميم API التقليدي مش قادر على تحقيق الرؤية. مش عملي، على كل حال.  هلأ، خلينا نفكر في واجهات برمجة التطبيقات ومطبخ عائلة جيتسون، على غرار #chatgpt.  خلينا نبقي الموضوع بسيط: بيتزا. انت (أو الروبوت بتاعك) بتعمل بيتزا من الصفر.  الفرن بيقول للثلاجة: "بصير عنا بيتزا. بتقدر تحكيلي اذا هاد موزاريلا منخفض الرطوبة؟"  ثلاجة: "دا مش حتى موزاريلا. هذي البيتزا لازم يكون فيها جبن منستر لأن هذا كل اللي عندي. والإنسان أزال بعض المحتويات قبل 30 دقيقة، لذا احتمال وجود جبنة منستر على البيتزا عالية جداً".  مستشعر من المطبخ اللي عنده عيون عبر الغرفة بيدخل في هذه المرحلة. مستشعر: "احذر من إن قشرة البيتزا دي مصنوعة من القرنفلور. أنا موافق على تقييم مستشعر الفيديو بخصوص نوع الجبن. ما في جبنة جديدة دخلت المطبخ مؤخراً".  أوفن: "كو شيء تاني لازم اعرفه؟"  مستشعر: "درجة حرارة العجينة 47 درجة فهرنهايت. هاد أحسن من الطباخين الخبراء اللي بيقولوا إنهم يستخدمون العجينة بدرجة حرارة الغرفة".  الفرن: "ممتاز. بعرف شو لازم أعمل. بما ان العجينة باردة، راح ابدأ اطبخ بدرجة حرارة أقل شوي من الدرجة المحددة في الوصفة. بعدين رح ازيد درجة حرارة العنصر السفلي عشان احصل على قشرة حلوة. رح ابقى بعين عين على الرطوبة و ممكن استخدم الحمل الجوي لتخفيف أي مستويات غير مرغوب فيها من الرطوبة".  وين الـ API اللي بيربط العقود بين النظم المستقلة؟ الـ"آبي" ما رحلوا. على سبيل المثال، دماغ الفرن بيكون عنده عدد كبير من واجهات التطبيق (زي للتفاعل مع وحدات التحكم في درجة الحرارة وأجهزة الاستشعار، إلخ). المفتاح هنا هو ان الواجهة بين الأنظمة لم تعد واجهة برمجة تطبيقية ثابتة وصلبة. ما في توقيعات طريقة، ولا مسارات، ولا مواصفات حمولة مفيدة. بدلًا من كده، محادثة تتعلق بالحواس والقدرات.  أي "دماغ"؟ كتاب كينس أندرسون تصميم الذكاء الاصطناعي المستقل بيوصف بشكل رائع كيف يمكن تحليل نظام معقد لعدد من "الأدمغة" المستقلة. كل دماغ، في كتابه، ممكن يتطور ويتحسن بشكل مستقل، بتوجيه بشري متزوج من #علم البيانات، #تعلم الآلة و #هندسة البيانات.  شو المطبخ؟ أنا متحمس لما يحمله المستقبل. كيف المهندسين المعماريين يعيدوا التفكير في تصميم النظام المعقد فيما يتعلق بواجهات برمجة التطبيقات، في رأيي، شيء لا مفر منه. وبصفتي صانع بيتزا هاوي، حبات التذوق بتتوق ليوم أحصل فيه على مساعدة من GPT لأصنع بيتزا أحسن.