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