
Proyek ini dibangun untuk gagal
(sampai tidak)
Restart sampai berhasil
Proyek ini bertujuan untuk menghasilkan kode menggunakan API OpenAI dengan cara evolusioner. Ini berarti bahwa setiap generasi akan dibangun berdasarkan yang sebelumnya untuk membuat kode lebih baik, memperpanjangnya, refactor atau memperbaiki bug.
Proyek ini, "Fail2", adalah versi kedua dan telah berasal dari pendahulunya, "Fail1", menggabungkan perbaikan dan fitur tambahan.
Kode yang dihasilkan akan dieksekusi di browser pada elemen kanvas dan bertujuan untuk membuat aplikasi 2D menggunakan JavaScript.
Panduan ini akan memandu Anda melalui proses penggunaan proses generatif kami yang ditenagai oleh model bahasa GPT-3.5 Openai untuk membuat proyek JavaScript Canvas2D yang inovatif. Anda akan belajar cara menginstal dependensi, menambahkan kunci API Anda, menjalankan generasi pertama, dan mengeksplorasi hasilnya.
Pastikan Anda memiliki yang diinstal pada sistem Anda:
Klon Repositori ke Mesin Lokal Anda:
git clone [email protected]:failfa-st/fail2.gitArahkan ke Direktori Proyek:
cd fail2Instal dependensi yang diperlukan dengan menjalankan:
npm installBuat akun di https://platform.openai.com/signup dan dapatkan kunci API Anda.
Salin file .env.example ke .env :
cp .env.example .env Buka file .env dan tambahkan tombol API OpenAI Anda:
OPENAI_API_KEY=your_api_key_hereKode yang dihasilkan akan berjalan di server pengembangan lokal, jadi mari kita mulai ini dulu
npm run devIni akan membuka http: // localhost: 8080 di browser Anda. Jika tidak, maka silakan buka sendiri dan tetap terbuka.
Untuk memulai proses pembuatan kode, jalankan perintah berikut:
node base-default.js -p "<prompt>" -g <generations> -P "<persona>" -t <temperature> -c -m "<model>" -n "<negative_prompt>" -s <seed>
Atau gunakan salah satu contoh dasar:
node base-default.js -p "matrix code" -g 3
node base-art.js -p "flow field" -g 10 -c -s 123456789
node base-game.js -p "arcade game asteroids" -g 5 -n "audio files, images, alert" -P "JavaScript expert, game developer, retro lover"
| Pilihan | Alias | Jenis | Bawaan | Keterangan |
|---|---|---|---|---|
--prompt | -p | string | "extend the code" | Menetapkan prompt untuk kode yang dihasilkan |
--negativePrompt | -n | string | "" | Menetapkan prompt negatif untuk kode yang dihasilkan |
--generations | -g | number | 1 | Menetapkan jumlah generasi untuk kode yang dihasilkan |
--persona | -P | string | "JavaScript expert, performance expert" | Mengatur persona kode yang dihasilkan |
--temperature | -t | number | 0.2 | Mengatur suhu untuk kode yang dihasilkan |
--seed | -s | number | -1 | Mengatur benih untuk kode yang dihasilkan ( -1 membuat benih acak) |
--model | -m | string | "gpt-3.5-turbo" | Mengatur model untuk digunakan untuk menghasilkan kode |
--clean | -c | boolean | false | Diatur ke true jika Anda ingin menghapus kode yang dihasilkan sebelumnya |
Bendera --temperature mengontrol tingkat kreativitas dalam kode yang dihasilkan, dengan kisaran 0 hingga 2. Nilai yang lebih tinggi menghasilkan kode yang lebih inovatif, tetapi juga meningkatkan risiko kesalahan atau javascript yang tidak valid. Untuk hasil terbaik, gunakan nilai di bawah 0,5 untuk menyeimbangkan kreativitas dengan keandalan. Nilai defaultnya adalah 0,2.
Bendera --negativePrompt meniadakan setiap bagian prompt yang dipisahkan koma dengan "tidak" untuk mencegah perilaku yang tidak diinginkan dalam kode yang dihasilkan. Misalnya, --negativePrompt "audio, images" menjadi "no audio, no images" . Fitur ini membantu membuat kode yang lebih aman dan lebih baik tetapi mungkin tidak menghilangkan semua perilaku yang tidak diinginkan.
Bendera --model dapat digunakan untuk menentukan model yang digunakan untuk membuat kode. Model default adalah "gpt-3.5-turbo" . Namun, Anda juga dapat memilih untuk menggunakan model "gpt-4" , yang menyediakan lebih banyak token tetapi dapat menghasilkan perilaku yang tidak diinginkan.
Menggunakan model
"gpt-4"akan secara signifikan meningkatkan waktu yang diperlukan untuk menghasilkan kode karena lebih lambat dari model"gpt-3.5-turbo"default.
Untuk mempelajari lebih lanjut tentang model yang tersedia dan fitur masing -masing, silakan merujuk ke dokumentasi OpenAI.
Bendera --seed mengatur benih untuk generator angka acak yang digunakan dalam pembuatan kode. Secara default, benih diatur ke nomor acak antara 0 dan 100000000. Jika benih khusus disediakan dengan bendera --seed , nilai itu akan digunakan sebagai gantinya.
Benih adalah angka pseudo-acak dan dapat menghasilkan hasil yang unik, tetapi tidak akan sama setiap kali.
Proyek ini dilengkapi dengan tiga file starter, base-default.js (tidak ada impor), base-art.js (noiseJs dan warna) dan base-game.js (noiseJs, warna dan nada), yang memberikan titik awal dasar dan contoh bagaimana menambahkan ketergantungan.
️ File pemula harus selalu dimulai denganbase-
Untuk menghindari biaya token tambahan, buat file dasar khusus seperti
base-no-changelog.jstanpa komentar changelog.
Proyek ini menghasilkan kode menggunakan API OpenAI dan mengikuti serangkaian instruksi dan kendala untuk menghasilkan kode yang dapat diperpanjang, diperbaiki, atau diperbaiki. Setiap generasi kode dibangun berdasarkan yang sebelumnya dan bertujuan untuk meningkatkan kode. Proyek ini menggunakan persona yang berbeda untuk menghasilkan kode dan dapat membuat sejumlah generasi kode yang ditentukan. Kode yang dihasilkan diformat menggunakan lebih cantik dan disimpan dalam file terpisah. Proyek ini juga melacak perubahan dan menyediakan changelog. Selain itu, dapat menghapus kode yang dihasilkan sebelumnya. Proyek dapat menangani kesalahan.
Kode yang dihasilkan ditulis ke file, project/src/index.js , yang disusun oleh Webpack. Server Webpack Dev berjalan, memungkinkan Anda untuk melihat perubahan langsung seiring proses pembuatan kode berkembang.
Proyek ini menggunakan dua file utama:
base.js : File ini mengelola proses pembuatan kode menggunakan API OpenAI, menulis kode yang dihasilkan ke file (termasuk project/src/index.js ) dan menangani kesalahan yang mungkin terjadi selama pembuatan kode.base-*.js : File ini adalah titik awal untuk proses pembuatan kode. Ini berisi cuplikan kode awal dan mengatur segala sesuatu yang bergerak untuk menghasilkan kode dengan memanggil fungsi yang diperlukan dari base.js Untuk melanjutkan dari generasi tertentu, baik karena Anda puas dengan itu atau Anda perlu memperbaiki masalah, gunakan format berikut: node generation-xxxx.js -g <generation + 1> -p "<prompt>"
1. Memperbaiki kesalahan di Generasi 4
Dalam contoh ini, ada masalah dengan generasi keempat dari generasi prosedural, menyebabkan latar belakang terlalu gelap dan pemain game tidak terlihat. Untuk memperbaiki masalah ini, pengguna menjalankan perintah berikut:
node generation-0004.js -g 5 -p "fix: dark background, player invisible" -c
Perintah ini dimulai dari Generasi 4 ( generation-0004.js ) dan beralih ke generasi berikutnya (Generasi 5) sambil memberikan prompt untuk memperbaiki masalah gelap dan masalah visibilitas pemain.
2. Menambahkan sistem penilaian di Generasi 3
Dalam hal ini, pengguna puas dengan kemajuan permainan pada generasi ketiga dan ingin menambahkan sistem penilaian. Untuk melakukannya, mereka menjalankan perintah berikut:
node generation-0003.js -g 4 -p "feat: implement scoring" -c
Perintah ini dimulai dari Generasi 3 ( generation-0003.js ) dan melanjutkan ke generasi berikutnya (Generasi 4), menggabungkan prompt untuk mengimplementasikan fitur penilaian ke dalam permainan.
3. Mempertahankan bidang aliran dari Generasi 5 tetapi mengabaikan generasi berikutnya
Dalam situasi ini, pengguna menghargai bidang aliran yang dihasilkan pada generasi kelima tetapi tidak senang dengan hasil dari generasi selanjutnya. Untuk mencapai hasil yang diinginkan, mereka menjalankan perintah berikut:
node generation-0005.js -g 10 -p "flow field" -c
Perintah ini dimulai dari Generasi 5 ( generation-0005.js ) dan berlanjut hingga Generasi 10, mempertahankan bidang aliran dari Generasi 5 dan mengabaikan hasil yang tidak diinginkan dari generasi di antaranya.