
โครงการนี้ถูกสร้างขึ้นเพื่อล้มเหลว
(จนกว่าจะไม่)
รีสตาร์ทจนกว่าจะทำงาน
โครงการนี้มีจุดมุ่งหมายเพื่อสร้างรหัสโดยใช้ OpenAI API ในลักษณะวิวัฒนาการ หมายความว่าแต่ละรุ่นจะสร้างขึ้นมาก่อนหน้านี้เพื่อให้รหัสดีขึ้นขยายมัน refactor หรือแก้ไขข้อบกพร่อง
โครงการนี้ "Fail2" เป็นเวอร์ชั่นที่สองและได้มาจากรุ่นก่อน "Fail1" การปรับปรุงการปรับปรุงและคุณสมบัติเพิ่มเติม
รหัสที่สร้างขึ้นจะถูกดำเนินการในเบราว์เซอร์บนองค์ประกอบของผืนผ้าใบและมีจุดมุ่งหมายเพื่อสร้างแอปพลิเคชัน 2D โดยใช้ JavaScript
คู่มือนี้จะนำคุณผ่านกระบวนการใช้กระบวนการกำเนิดของเราที่ขับเคลื่อนโดยโมเดลภาษา GPT-3.5 ของ OpenAI เพื่อสร้างโครงการ JavaScript Canvas2D ที่เป็นนวัตกรรม คุณจะได้เรียนรู้วิธีการติดตั้งการพึ่งพาเพิ่มคีย์ API ของคุณเรียกใช้รุ่นแรกและสำรวจผลลัพธ์
ตรวจสอบให้แน่ใจว่าคุณติดตั้งต่อไปนี้ในระบบของคุณ:
โคลนที่เก็บไปยังเครื่องในพื้นที่ของคุณ:
git clone [email protected]:failfa-st/fail2.gitนำทางไปยังไดเรกทอรีโครงการ:
cd fail2ติดตั้งการพึ่งพาที่ต้องการโดยการรัน:
npm installสร้างบัญชีที่ https://platform.openai.com/signup และรับคีย์ API ของคุณ
คัดลอกไฟล์ .env.example ไปยัง .env :
cp .env.example .env เปิดไฟล์ .env และเพิ่มคีย์ OpenAI API ของคุณ:
OPENAI_API_KEY=your_api_key_hereรหัสที่สร้างขึ้นจะทำงานในเซิร์ฟเวอร์การพัฒนาท้องถิ่นดังนั้นเริ่มต้นกันก่อน
npm run devสิ่งนี้จะเปิด http: // localhost: 8080 ในเบราว์เซอร์ของคุณ หากไม่เป็นเช่นนั้นโปรดเปิดมันเองและเปิดไว้
ในการเริ่มต้นกระบวนการสร้างรหัสให้เรียกใช้คำสั่งต่อไปนี้:
node base-default.js -p "<prompt>" -g <generations> -P "<persona>" -t <temperature> -c -m "<model>" -n "<negative_prompt>" -s <seed>
หรือใช้หนึ่งในตัวอย่างพื้นฐาน:
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"
| ตัวเลือก | นามแฝง | พิมพ์ | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|---|
--prompt | -p | string | "extend the code" | ตั้งค่าพรอมต์สำหรับรหัสที่สร้างขึ้น |
--negativePrompt | -n | string | "" | ตั้งค่าพรอมต์เชิงลบสำหรับรหัสที่สร้างขึ้น |
--generations | -g | number | 1 | ตั้งค่าจำนวนรุ่นสำหรับรหัสที่สร้างขึ้น |
--persona | -P | string | "JavaScript expert, performance expert" | ตั้งค่าบุคคลของรหัสที่สร้างขึ้น |
--temperature | -t | number | 0.2 | ตั้งค่าอุณหภูมิสำหรับรหัสที่สร้างขึ้น |
--seed | -s | number | -1 | ตั้งค่าเมล็ดสำหรับรหัสที่สร้างขึ้น ( -1 สร้างเมล็ดสุ่ม) |
--model | -m | string | "gpt-3.5-turbo" | ตั้งค่าโมเดลที่จะใช้สำหรับการสร้างรหัส |
--clean | -c | boolean | false | ตั้งค่าเป็น true หากคุณต้องการลบรหัสที่สร้างขึ้นก่อนหน้านี้ |
-ธง --temperature ควบคุมระดับความคิดสร้างสรรค์ในรหัสที่สร้างขึ้นโดยมีช่วง 0 ถึง 2 ค่าที่สูงขึ้นส่งผลให้รหัสที่เป็นนวัตกรรมมากขึ้น แต่ยังเพิ่มความเสี่ยงของข้อผิดพลาดหรือ JavaScript ที่ไม่ถูกต้อง เพื่อผลลัพธ์ที่ดีที่สุดให้ใช้ค่าต่ำกว่า 0.5 เพื่อสร้างสมดุลระหว่างความคิดสร้างสรรค์ด้วยความน่าเชื่อถือ ค่าเริ่มต้นคือ 0.2
ธง --negativePrompt ลบล้างแต่ละส่วนที่คั่นด้วยเครื่องหมายจุลภาคด้วย "ไม่" เพื่อป้องกันพฤติกรรมที่ไม่พึงประสงค์ในรหัสที่สร้างขึ้น ตัวอย่างเช่น --negativePrompt "audio, images" กลายเป็น "no audio, no images" คุณสมบัตินี้ช่วยสร้างรหัสที่ปลอดภัยและดีขึ้น แต่อาจไม่กำจัดพฤติกรรมที่ไม่พึงประสงค์ทั้งหมด
--model ธงสามารถใช้เพื่อระบุโมเดลที่จะใช้สำหรับการสร้างรหัส รุ่นเริ่มต้นคือ "gpt-3.5-turbo" อย่างไรก็ตามคุณยังสามารถเลือกใช้โมเดล "gpt-4" ซึ่งให้โทเค็นมากขึ้น แต่อาจส่งผลให้เกิดพฤติกรรมที่ไม่พึงประสงค์
การใช้โมเดล
"gpt-4"จะเพิ่มเวลาในการสร้างรหัสอย่างมีนัยสำคัญเนื่องจากช้ากว่ารุ่น"gpt-3.5-turbo"เริ่มต้น
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับโมเดลที่มีอยู่และคุณสมบัติที่เกี่ยวข้องโปรดดูเอกสาร OpenAI
ธง --seed ตั้งค่าเมล็ดสำหรับตัวสร้างตัวเลขสุ่มที่ใช้ในการสร้างรหัส โดยค่าเริ่มต้นเมล็ดจะถูกตั้งค่าเป็นหมายเลขสุ่มระหว่าง 0 ถึง 10,000000000 หากมีการจัดทำเมล็ดพันธุ์ที่กำหนดเองด้วยธง --seed เซดค่านั้นจะถูกใช้แทน
เมล็ดเป็นหมายเลขหลอกหลอกและสามารถสร้างผลลัพธ์ที่ไม่ซ้ำกัน แต่จะไม่เหมือนกันในแต่ละครั้ง
โครงการนี้มาพร้อมกับไฟล์เริ่มต้นสามไฟล์, base-default.js (ไม่มีการนำเข้า), base-art.js (noisejs และสี) และ base-game.js (noisejs, สีและโทน) ซึ่งเป็นจุดเริ่มต้นพื้นฐานและตัวอย่างของวิธีเพิ่มการพึ่งพา
ไฟล์เริ่มต้นจะต้องเริ่มต้นด้วย base-เสมอ-
เพื่อหลีกเลี่ยงค่าใช้จ่ายโทเค็นเพิ่มเติมให้สร้างไฟล์ฐานที่กำหนดเองเช่น
base-no-changelog.jsโดยไม่ต้องแสดงความคิดเห็น Changelog
โครงการนี้สร้างรหัสโดยใช้ OpenAI API และทำตามชุดคำแนะนำและข้อ จำกัด ในการสร้างรหัสที่สามารถขยายปรับเปลี่ยนหรือแก้ไขได้ รหัสแต่ละรุ่นสร้างขึ้นก่อนหน้านี้และมีจุดมุ่งหมายเพื่อปรับปรุงรหัส โครงการใช้บุคคลที่แตกต่างกันเพื่อสร้างรหัสและสามารถสร้างจำนวนรหัสรุ่นที่ระบุ รหัสที่สร้างขึ้นจะถูกจัดรูปแบบโดยใช้ Prettier และบันทึกในไฟล์แยกต่างหาก โครงการยังติดตามการเปลี่ยนแปลงและให้การเปลี่ยนแปลง นอกจากนี้ยังสามารถลบรหัสที่สร้างขึ้นก่อนหน้านี้ โครงการสามารถจัดการกับข้อผิดพลาดได้
รหัสที่สร้างขึ้นถูกเขียนไปยังไฟล์ project/src/index.js ซึ่งรวบรวมโดย WebPack เซิร์ฟเวอร์ dev webpack ทำงานช่วยให้คุณสามารถดูการเปลี่ยนแปลงสดเมื่อกระบวนการสร้างรหัสวิวัฒนาการ
โครงการใช้สองไฟล์หลัก:
base.js : ไฟล์นี้จัดการกระบวนการสร้างรหัสโดยใช้ OpenAI API เขียนรหัสที่สร้างขึ้นไปยังไฟล์ (รวมถึง project/src/index.js ) และจัดการข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการสร้างรหัสbase-*.js : ไฟล์นี้เป็นจุดเริ่มต้นสำหรับกระบวนการสร้างรหัส มันมีตัวอย่างโค้ดเริ่มต้นและตั้งค่าทุกอย่างในการเคลื่อนไหวเพื่อสร้างรหัสโดยเรียกฟังก์ชั่นที่จำเป็นจาก base.js หากต้องการดำเนินการต่อจากรุ่นบางรุ่นเพราะคุณพอใจกับมันหรือคุณต้องการแก้ไขปัญหาให้ใช้รูปแบบต่อไปนี้: node generation-xxxx.js -g <generation + 1> -p "<prompt>"
1. การแก้ไขข้อผิดพลาดใน Generation 4
ในตัวอย่างนี้มีปัญหากับรุ่นที่สี่ของการสร้างขั้นตอนทำให้พื้นหลังมืดเกินไปและผู้เล่นเกมจะมองไม่เห็น เพื่อแก้ไขปัญหานี้ผู้ใช้เรียกใช้คำสั่งต่อไปนี้:
node generation-0004.js -g 5 -p "fix: dark background, player invisible" -c
คำสั่งนี้เริ่มต้นจาก Generation 4 ( generation-0004.js ) และย้ายไปยังรุ่นต่อไป (Generation 5) ในขณะที่ให้พรอมต์เพื่อแก้ไขความมืดพื้นหลังและปัญหาการมองเห็นผู้เล่น
2. การเพิ่มระบบการให้คะแนนที่ Generation 3
ในกรณีนี้ผู้ใช้พอใจกับความคืบหน้าของเกมในรุ่นที่สามและต้องการเพิ่มระบบการให้คะแนน ในการทำเช่นนั้นพวกเขาเรียกใช้คำสั่งต่อไปนี้:
node generation-0003.js -g 4 -p "feat: implement scoring" -c
คำสั่งนี้เริ่มต้นจาก Generation 3 ( generation-0003.js ) และดำเนินการไปยังรุ่นต่อไป (Generation 4) ซึ่งรวมการแจ้งเตือนเพื่อใช้คุณสมบัติการให้คะแนนในเกม
3. การรักษาฟิลด์การไหลจาก Generation 5 แต่ไม่สนใจรุ่นต่อ ๆ ไป
ในสถานการณ์เช่นนี้ผู้ใช้ชื่นชมฟิลด์โฟลว์ที่สร้างขึ้นในรุ่นที่ห้า แต่ไม่มีความสุขกับผลลัพธ์จากรุ่นต่อ ๆ ไป เพื่อให้บรรลุผลลัพธ์ที่ต้องการพวกเขาดำเนินการคำสั่งต่อไปนี้:
node generation-0005.js -g 10 -p "flow field" -c
คำสั่งนี้เริ่มต้นจาก Generation 5 ( generation-0005.js ) และดำเนินต่อไปจนถึง Generation 10 การรักษาฟิลด์การไหลจาก Generation 5 และไม่สนใจผลลัพธ์ที่ไม่พึงประสงค์ของรุ่นระหว่างกัน