Hareket Halinde Yapay Zeka Tarafından Oluşturulan Pong’un Sonsuz Sürümlerini Oynayın



Şu anda bir programcıların yazılım yazmasına yardımcı olmak için tasarlanmış AI araçlarına büyük ilgi. GitHub’lar yardımcı pilot ve Amazon’un CodeWhisperer orijinal olarak doğal dilde metin oluşturmak için geliştirilen derin öğrenme tekniklerini, kaynak kodu oluşturmak için uyarlayarak uygulayın. Buradaki fikir, programcıların bu araçları, geliştiricilerin yazılımlarına entegre edebilecekleri kod parçaları üretmek için istemleri kullanarak steroidler üzerinde bir tür otomatik tamamlama olarak kullanabilmeleridir.

Bu araçlara baktığımda şunu merak ettim: Bir sonraki adıma geçip insan programcısını alabilir miyiz?
döngünün dışı? Çalışan bir program sadece bir düğmeye dokunarak talep üzerine yazılabilir ve dağıtılabilir mi?

Günlük işimde mikrodenetleyiciler için gömülü yazılımlar yazıyorum, bu yüzden hemen bir demo platformu olarak kendi kendine yeten bir el cihazı düşündüm. Bir ekran ve birkaç kontrol, kullanıcının yapay zeka tarafından oluşturulmuş basit bir yazılım talep etmesine ve bunlarla etkileşimde bulunmasına olanak tanır. Ve böylece sonsuz fikri doğdu
masa tenisi.

Seçtim
masa tenisi Birkaç nedenden dolayı. Oynanış basittir, Atari’nin orijinal 1972’sinde ünlü bir şekilde açıklanmıştır. masa tenisi kısa ve öz bir zafer içinde çarşı dolabı: “Yüksek puan için topu kaçırmaktan kaçının.” Oynamak için bir yukarı düğmesi ve bir aşağı düğmesi yeterlidir. 1970’lerde ve 1980’lerde yaratılan birçok klasik Atari oyununda olduğu gibi, masa tenisi Nispeten birkaç kod satırında yazılabilir ve birçok kez bir programlama alıştırması olarak uygulanmıştır. Bu, yapay zeka araçları için eğitim verileri olarak alınan kaynak kodu havuzlarının zengin olduğu anlamına gelir. masa tenisi örnekler, uygulanabilir sonuçlar elde etme olasılığını artırır.

6 ABD Doları kullandım
Ahududu Pi Pico W avuçiçi cihazımın çekirdeği olarak—yerleşik kablosuz özelliği, bulut tabanlı yapay zeka araçlarına doğrudan bağlantı sağlar. Bunun için 9 dolar bağladım Pico LCD 1.14 ekran modülü. 240 x 135 renkli pikseli, masa tenisive modül iki düğmeyi ve iki eksenli bir mikro joystick’i entegre eder.

Pico için programlama dili seçimim şuydu:
MikroPython, çünkü normalde kullandığım şey ve PC tabanlı bir derleyiciye ihtiyaç duymadan çalıştırılabilen yorumlanmış bir dil kodu olduğu için. Kullandığım AI kodlama aracı, OpenAI Kodeksi. OpenAI Codex’e şu adresten erişilebilir: Web’in HTTP biçimini kullanarak sorgulara yanıt veren bir APIkullanarak oluşturması ve göndermesi kolay olan urequests ve ujson MicroPython için mevcut kütüphaneler. Mevcut beta döneminde OpenAI Codex API’yi kullanmak ücretsizdir, ancak kayıt gereklidir ve sorgular dakikada 20 ile sınırlıdır; bu, en fanatikleri bile barındırmak için fazlasıyla yeterlidir. masa tenisi jokey.

Sol tarafında bir joystick ve sağ tarafında iki düğme bulunan bir LCD ekran, bir mikrodenetleyici ve bir USB kablosu.
Yalnızca iki donanım modülü gereklidir; bir Rasperry Pi Pico W [bottom left] ekran ve basit kontrollerle bilgi işlem gücü ve eklenti kartı sağlayan [top left]. Güç sağlamak için bir USB kablosu dışında başka bir şeye gerek yoktur.James Provost

Bir sonraki adım, bir konteyner programı oluşturmaktı. Bu program, yeni bir sürümün ne zaman yayınlanacağını tespit etmekten sorumludur. masa tenisi bir düğmeye basarak talep edildiğinde OpenAI Codex’e bir istem gönderir, sonuçları alır ve oyunu başlatır. Konteyner programı ayrıca, Pico ile LCD/kontrol modülü arasındaki fiziksel bağlantıyı yöneten bir donanım soyutlama katmanı kurar.

Tüm projenin en kritik unsuru, OpenAI Codex’in yeni bir sürümünü her çıkarmasını istediğimizde OpenAI Codex’e iletilen istemi oluşturmaktı.
masa tenisi. Bilgi istemi, kaynak kodun en basit iskeletini içeren bir düz metin öbeğidir; birçok video oyununda ortak olan bir yapıyı, yani kullanmak istediğimiz kitaplıkların bir listesini ve olayları (tuşlara basma gibi) işlemek için bir çağrıyı özetleyen birkaç satırdır. ), bu olaylara dayalı olarak oyun durumunu güncellemek için bir çağrı ve ekranda güncellenmiş durumu görüntülemek için bir çağrı.

Geri gelen kod uygulanabilir bir kod üretir. masa tenisi zamanın yaklaşık yüzde 80’inde oyun.

Bu kitaplıkların nasıl kullanılacağı ve çağrıların nasıl doldurulacağı yapay zekaya bağlıdır. Bu jenerik yapıyı bir
masa tenisi oyun gömülü yorumlardır; insanlar tarafından yazılan kaynak kodunda isteğe bağlıdır, bilgi istemlerinde gerçekten yararlıdır. Yorumlar, oynanışı sade bir İngilizce ile açıklıyor; örneğin, “Oyun aşağıdaki sınıfları içeriyor…Top: Bu sınıf, topu temsil ediyor. Bir konumu, hızı ve hata ayıklama öznitelikleri vardır. [sic]. Pong: Bu sınıf oyunun kendisini temsil eder. İki kürek ve bir top vardır. Oyun bittiğinde nasıl kontrol edileceğini biliyor.” (Kapsayıcım ve komut istemi kodum Hackaday.io’da mevcut) (Git hackaday.io sonsuz sayıda oynamak PonRaspberry Pi Pico W ile oyunlar; kapsayıcım ve komut istemi kodum sitede.)

AI’dan geri dönen yaklaşık 300 satır koddur. İlk denemelerimde, MicroPython’un sürümü nedeniyle kod oyunu gösteremezdi.
çerçeve arabelleği modülümle çalışan kitaplık, OpenAI Codex’in üzerinde eğitildiği çerçeve arabellek kitaplıklarından farklıdır. Çözüm, kitaplığımın kullandığı yöntemlerin açıklamalarını komut istemi yorumları olarak eklemekti, örneğin: “def dikdörtgen(self, x, y, w, h, c).” Başka bir sorun, eğitim örneklerinin birçoğunun küresel değişkenler kullanmasıydı, oysa ilk istemim değişkenleri, genellikle daha iyi bir uygulama olan, bireysel sınıfların içinde yaşama kapsamına alınmış nitelikler olarak tanımladı. Sonunda pes etmek, akışa devam etmek ve değişkenlerimi global olarak ilan etmek zorunda kaldım.

Dokuz örnek ekran görüntüsü
OpenAI Codex tarafından oluşturulan Pong varyasyonları, top ve raket boyutu, rengi ve puanların nasıl görüntülendiği konusunda büyük farklılıklar gösterir. Bazen kod, oyuncu küreklerinin üst üste yerleştirildiği sağ alt köşe gibi oynanamaz bir oyunla sonuçlanır.James Provost

Mevcut istemimden geri gelen kod, uygulanabilir bir kod üretir.
masa tenisi zamanın yaklaşık yüzde 80’inde oyun. Bazen oyun hiç çalışmıyor ve bazen çalışan ama tam olarak çalışmayan bir şey üretiyor. masa tenisiÖrneğin, kanatların yukarı ve aşağı hareket etmesine ek olarak sola ve sağa hareket etmesine izin verdiğinde. Bazen iki insan oyuncu olur, bazen de makineye karşı oynarsınız. Bilgi isteminde belirtilmediğinden, Codex iki seçenekten birini alır. Makineye karşı oynadığınızda, Codex’in kod mantığının bu bölümünü nasıl uyguladığını görmek her zaman ilgi çekicidir.

Peki bu kodun yazarı kim? Eğitim setinin çoğu, kendisinden türetilen koda özel lisanslama koşulları uygulayan açık kaynaklı yazılıma dayandığından, örneğin bu kodun nasıl lisanslanması gerektiğinden kaynaklanan yasal ihtilaflar kesinlikle vardır. Ancak lisanslar ve mülkiyet, yazarlıktan ayrıdır ve ikincisi ile ilgili olarak, AI aracını kullanan ve sonuçları doğrulayan programcıya ait olduğuna inanıyorum, bir şirket tarafından yapılan bir boyama programıyla sanat eseri oluşturduğunuzda olduğu gibi ve fırçalarını ve filtrelerini kullandılar.

Projeme gelince, bir sonraki adım daha karmaşık oyunlara bakmak. 1986 çarşı hiti
arkanoid talep üzerine, kimse?



Kaynak : https://spectrum.ieee.org/infinite-pong-with-ai

Yorum yapın