
该项目是为了失败的
(直到没有)
重新启动直到起作用
该项目旨在以进化方式使用OpenAI API生成代码。这意味着每一代都将基于上一代以使代码更好,将其扩展,重构或修复错误。
该项目“ Fail2”是第二版,它源自其前身“ Fail1”,并结合了改进和其他功能。
生成的代码将在帆布元素上的浏览器中执行,并旨在使用JavaScript创建2D应用程序。
本指南将引导您完成使用由OpenAI的GPT-3.5语言模型供电的生成过程的过程,以创建创新的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标志以“ no”为止,以防止生成的代码中的不良行为否定了提示的每个分隔部分。例如, --negativePrompt "audio, images"变为"no audio, no images" 。此功能有助于创建更安全,更好的代码,但可能无法消除所有不希望的行为。
--model标志可用于指定用于生成代码的模型。默认模型为"gpt-3.5-turbo" 。但是,您还可以选择使用"gpt-4"模型,该模型提供更多的令牌,但可能导致不希望的行为。
使用
"gpt-4"模型将显着增加生成代码所需的时间,因为它比默认的"gpt-3.5-turbo"模型慢。
要了解有关可用模型及其各自功能的更多信息,请参考OpenAI文档。
--seed标志为代码生成中使用的随机数生成器设置种子。默认情况下,种子设置为0到100000000之间的随机数。如果将自定义种子带有--seed标志,则将使用该值。
种子是一个伪随机数,可以产生唯一的结果,但每次都不会相同。
该项目带有三个入门文件, base-default.js (无导入), base-art.js (noingsjs and color)和base-game.js (noingsjs,color and color and tone),这提供了一个基本的起点和添加依赖项的示例。
配x 入门文件必须始终从base-开始 -
为避免额外的令牌成本,请创建一个自定义基本文件,例如
base-no-changelog.js而无需ChangElog评论。
该项目使用OpenAI API生成代码,并遵循一组指令和约束,以产生可以扩展,重构或固定的代码。每一代代码都基于上一个代码,并旨在改进代码。该项目使用不同的角色来生成代码,并可以创建指定的代码数量。生成的代码使用更漂亮的格式进行格式,并保存在单独的文件中。该项目还跟踪更改并提供更改。此外,它可以删除先前生成的代码。该项目可以处理错误。
生成的代码写入文件, project/src/index.js ,该文件由WebPack编译。 WebPack开发服务器运行,使您可以随着代码生成过程的发展查看实时更改。
该项目使用两个主要文件:
base.js :此文件使用OpenAI API管理代码生成过程,将生成的代码写入文件(包括project/src/index.js ),并处理代码生成期间可能发生的错误。base-*.js :此文件是代码生成过程的起点。它包含初始代码段,并通过调用base.js的必要函数来设置所有动态以生成代码的动态。 要继续一代,要么是因为您对此感到满意,要么需要纠正问题,请使用以下格式: node generation-xxxx.js -g <generation + 1> -p "<prompt>"
1。在第4代固定故障
在此示例中,第四代程序一代存在问题,导致背景太黑,游戏玩家是看不见的。要解决此问题,用户运行以下命令:
node generation-0004.js -g 5 -p "fix: dark background, player invisible" -c
该命令始于第4代( generation-0004.js ),并转移到下一代(第5代),同时提供了提示,以解决背景黑暗和播放器可见性问题。
2。在第3代添加评分系统
在这种情况下,用户对游戏在第三代的进度感到满意,并希望添加评分系统。为此,他们运行以下命令:
node generation-0003.js -g 4 -p "feat: implement scoring" -c
该命令从第3代( generation-0003.js )启动,并运行到下一代(第4代),并将提示结合到游戏中。
3。从第5代保留流场,但无视后代
在这种情况下,用户欣赏第五代产生的流场,但对后代的结果不满意。为了达到所需的结果,他们执行以下命令:
node generation-0005.js -g 10 -p "flow field" -c
该命令始于5代( generation-0005.js ),一直持续到第10代,从第5代维持流场,并忽略了两者之间的不希望的结果。