يوجد حاليًا ملف الكثير من الاهتمام بأدوات الذكاء الاصطناعي المصممة لمساعدة المبرمجين على كتابة البرامج. يطبق كل من Copilot من GitHub و CodeWhisperer من Amazon تقنيات التعلم العميق التي تم تطويرها في الأصل لإنشاء نص بلغة طبيعية عن طريق تكييفها لإنشاء شفرة المصدر. الفكرة هي أن المبرمجين يمكنهم استخدام هذه الأدوات كنوع من الإكمال التلقائي للمنشطات ، باستخدام المطالبات لإنتاج أجزاء من التعليمات البرمجية التي يمكن للمطورين دمجها في برامجهم.
بالنظر إلى هذه الأدوات ، تساءلت: هل يمكننا اتخاذ الخطوة التالية وإخراج المبرمج البشري من الحلقة؟ هل يمكن كتابة برنامج عمل ونشره عند الطلب بلمسة زر واحدة؟
في وظيفتي اليومية ، أكتب برنامجًا مدمجًا للميكروكونترولر ، لذلك فكرت على الفور في جهاز محمول يدويًا كمنصة تجريبية. ستسمح الشاشة وبعض عناصر التحكم للمستخدم بطلب البرامج البسيطة التي تم إنشاؤها بواسطة AI والتفاعل معها. وهكذا ولدت فكرة اللانهائية
بونغ.
اخترت
بونغ لعدد من الأسباب. طريقة اللعب بسيطة ، وقد تم شرحها بشكل مشهور في لعبة Atari الأصلية عام 1972 بونغ خزانة الممرات في انتصار الإيجاز: “تجنب فقدان الكرة للحصول على درجة عالية.” كل ما تحتاجه للعب هو زر لأعلى وزر لأسفل. كما هو الحال مع العديد من ألعاب أتاري الكلاسيكية التي تم إنشاؤها في السبعينيات والثمانينيات ، بونغ يمكن كتابتها في سطور قليلة نسبيًا من التعليمات البرمجية ، وتم تنفيذها كتمرين برمجة مرات عديدة. هذا يعني أن مستودعات الكود المصدري التي يتم استيعابها كبيانات تدريب لأدوات الذكاء الاصطناعي غنية بها بونغ أمثلة ، مما يزيد من احتمالية الحصول على نتائج قابلة للتطبيق.
لقد استخدمت جهاز Raspberry Pi Pico W بقيمة 6 دولارات أمريكية باعتباره جوهر جهازي المحمول – حيث يتيح الاتصال اللاسلكي المدمج به الاتصال المباشر بأدوات الذكاء الاصطناعي المستندة إلى مجموعة النظراء. لهذا قمت بتركيب وحدة عرض Pico LCD 1.14 دولار. تعد وحدات البكسل الملونة 240 × 135 كافية لـ بونغوالوحدة تدمج زرين وعصا تحكم صغيرة ثنائية المحاور.
كان خياري للغة البرمجة لـ Pico هو MicroPython ، لأنه ما أستخدمه عادةً ولأنه رمز لغة مفسرة يمكن تشغيله دون الحاجة إلى مترجم قائم على الكمبيوتر. كانت أداة الترميز AI التي استخدمتها هي OpenAI Codex. يمكن الوصول إلى OpenAI Codex عبر واجهة برمجة التطبيقات (API) التي تستجيب للاستفسارات باستخدام تنسيق HTTP على الويب ، والتي تكون سهلة الإنشاء والإرسال باستخدام مكتبات urequests و ujson المتاحة لـ MicroPython. استخدام OpenAI Codex API مجاني خلال الفترة التجريبية الحالية ، ولكن التسجيل مطلوب وتقتصر الاستفسارات على 20 في الدقيقة – لا يزال أكثر من كافٍ لاستيعاب حتى أكثر الأشخاص تعصبًا بونغ فارس السباق.
هناك حاجة إلى وحدتين فقط من الأجهزة – Raspberry Pi Pico W [bottom left] يوفر طاقة الحوسبة ولوحة توصيل مزودة بشاشة وأدوات تحكم بسيطة [top left]. ليس هناك حاجة إلى أي شيء آخر باستثناء كبل USB لتزويد الطاقة.جيمس بروفوست
كانت الخطوة التالية هي إنشاء برنامج حاوية. هذا البرنامج مسؤول عن الكشف عن إصدار جديد من بونغ يتم طلبه عن طريق الضغط على الزر وعندما يرسل مطالبة إلى OpenAI Codex ويتلقى النتائج ويبدأ اللعبة. يقوم برنامج الحاوية أيضًا بإعداد طبقة تجريد للأجهزة ، والتي تتعامل مع الاتصال المادي بين Pico ووحدة التحكم LCD / وحدة التحكم.
كان العنصر الأكثر أهمية في المشروع بأكمله هو إنشاء موجه يتم إرساله إلى OpenAI Codex في كل مرة نريدها لإخراج إصدار جديد من
بونغ. الموجه عبارة عن جزء من نص عادي مع أبسط هيكل للشفرة المصدر – بضعة أسطر تحدد هيكلًا مشتركًا في العديد من ألعاب الفيديو ، أي قائمة المكتبات التي نرغب في استخدامها ، ودعوة لمعالجة الأحداث (مثل ضغطات المفاتيح ) ، ومكالمة لتحديث حالة اللعبة بناءً على تلك الأحداث ، ومكالمة لعرض الحالة المحدثة على الشاشة.
الكود الذي يتم إرجاعه ينتج ملفًا عمليًا بونغ اللعبة حوالي 80 بالمائة من الوقت.
كيفية استخدام هذه المكتبات وملء المكالمات متروك لمنظمة العفو الدولية. مفتاح تحويل هذا الهيكل العام إلى ملف
بونغ اللعبة هي التعليقات المضمنة – اختيارية في التعليمات البرمجية المصدر التي كتبها البشر ، وهي مفيدة حقًا في المطالبات. تصف التعليقات طريقة اللعب بلغة إنجليزية بسيطة – على سبيل المثال ، “تتضمن اللعبة الفئات التالية … الكرة: تمثل هذه الفئة الكرة. لها موقع وسرعة وسمات تصحيح [sic]. بونج: يمثل هذا الفصل اللعبة نفسها. لديها اثنين من المجاذيف وكرة. إنها تعرف كيف تتحقق من انتهاء اللعبة “. (الحاوية الخاصة بي والرمز الفوري متاحان على Hackaday.io) (انتقل إلى Hackaday.io لتشغيل عدد لا حصر له من بونألعاب g مع Raspberry Pi Pico W ؛ الحاوية الخاصة بي والرمز الفوري على الموقع.)
ما يأتي من الذكاء الاصطناعي هو حوالي 300 سطر من التعليمات البرمجية. في محاولاتي المبكرة ، يفشل الكود في عرض اللعبة لأن إصدار مكتبة MicroPython Framebuffer التي تعمل مع الوحدة النمطية الخاصة بي يختلف عن مكتبات الإطارات المؤقتة التي تم تدريب OpenAI Codex عليها. كان الحل هو إضافة أوصاف الطرق التي تستخدمها مكتبتي كتعليقات سريعة ، على سبيل المثال: “مستطيل def (self ، x ، y ، w ، h ، c).” كانت هناك مشكلة أخرى تتمثل في أن العديد من أمثلة التدريب تستخدم متغيرات عالمية ، في حين أن الموجه الأولي الذي قدمته حدد المتغيرات على أنها سمات تم تحديدها للعيش داخل الفصول الفردية ، وهي ممارسة أفضل بشكل عام. اضطررت في النهاية إلى الاستسلام ، والسير مع التيار ، وإعلان متغيراتي على أنها عالمية.
تختلف اختلافات Pong التي تم إنشاؤها بواسطة OpenAI Codex بشكل كبير في حجم الكرة والمجداف واللون وكيفية عرض النتائج. في بعض الأحيان ينتج عن الكود لعبة غير قابلة للعب ، كما هو الحال في الركن الأيمن السفلي ، حيث تم وضع مضارب اللاعب فوق بعضها البعض.جيمس بروفوست
الكود الذي يأتي من موجهاتي الحالية ينتج ملفًا عمليًا
بونغ اللعبة حوالي 80 بالمائة من الوقت. في بعض الأحيان لا تعمل اللعبة على الإطلاق ، وفي بعض الأحيان تنتج شيئًا يعمل ولكنه ليس تمامًا بونغ، مثل عندما يسمح بتحريك المجاذيف إلى اليسار واليمين بالإضافة إلى الأعلى والأسفل. في بعض الأحيان يكون هناك لاعبان بشريان ، وفي أحيان أخرى تلعب ضد الآلة. نظرًا لأنه لم يتم تحديده في الموجه ، يتخذ Codex أيًا من الخيارين. عندما تلعب ضد الآلة ، من المثير للاهتمام دائمًا أن ترى كيف نفذ Codex هذا الجزء من منطق الكود.
إذن من هو مؤلف هذا الرمز؟ بالتأكيد هناك نزاعات قانونية تنبع ، على سبيل المثال ، من كيفية ترخيص هذا الكود ، حيث أن الكثير من مجموعة التدريب تعتمد على برامج مفتوحة المصدر تفرض شروط ترخيص محددة على الكود المستمد منها. لكن التراخيص والملكية منفصلتان عن حقوق التأليف ، وفيما يتعلق بالأخير ، أعتقد أنه يخص المبرمج الذي يستخدم أداة الذكاء الاصطناعي ويتحقق من النتائج ، كما هو الحال إذا قمت بإنشاء عمل فني باستخدام برنامج للرسم تم إنشاؤه بواسطة الشركة واستخدموا فرشهم وفلاترهم.
بالنسبة لمشروعي ، فإن الخطوة التالية هي النظر إلى ألعاب أكثر تعقيدًا. ضرب ممر 1986
أركانويد عند الطلب ، أي شخص؟