
このプロジェクトは失敗するように構築されています
(そうしないまで)
動作するまで再起動します
このプロジェクトは、OpenAI APIを使用して進化的な方法でコードを生成することを目的としています。つまり、各世代は、コードをより良くし、拡張し、リファクタリングする、またはバグを修正するために、前の世代の上に構築されることを意味します。
このプロジェクト「Fail2」は2番目のバージョンであり、その前身「Fail1」から派生しており、改善と追加機能を組み込んでいます。
生成されたコードは、Canvas要素のブラウザで実行され、JavaScriptを使用して2Dアプリケーションを作成することを目的としています。
このガイドでは、OpenAIのGPT-3.5言語モデルを搭載した生成プロセスを使用して、革新的なJavaScript Canvas2Dプロジェクトを作成するプロセスをご紹介します。依存関係をインストールし、APIキーを追加し、第1世代を実行し、結果を調査する方法を学びます。
システムに次のインストールがあることを確認してください。
リポジトリをローカルマシンにクローンします。
git clone [email protected]:failfa-st/fail2.gitプロジェクトディレクトリに移動します。
cd fail2実行して、必要な依存関係をインストールします。
npm installhttps://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>
または、基本的な例の1つを使用します。
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 (noisejs and Color)、およびbase-game.js (noisejs、color and tone)の3つのスターターファイルが付属しています。
ショ和 スターターファイルは常にbase-から開始する必要があります -
余分なトークンコストを回避するには、Changelogコメントなしで
base-no-changelog.jsなどのカスタムベースファイルを作成します。
このプロジェクトは、OpenAI APIを使用してコードを生成し、一連の命令と制約に従って、拡張、リファクタリング、または固定できるコードを作成します。コードの各世代は以前のコードに基づいており、コードの改善を目指しています。このプロジェクトは、異なるペルソナを使用してコードを生成し、指定された世代のコードを作成できます。生成されたコードは、よりきれいを使用してフォーマットされ、個別のファイルに保存されます。また、このプロジェクトは変更を追跡し、変更ログを提供します。さらに、以前に生成されたコードを削除できます。プロジェクトはエラーを処理できます。
生成されたコードは、Webpackによってコンパイルされるファイル、 project/src/index.jsに書き込まれます。 Webpack Devサーバーが実行され、コード生成プロセスが進化するにつれてライブの変更を表示できます。
プロジェクトは2つの主要なファイルを使用します。
base.js :このファイルは、Openai APIを使用してコード生成プロセスを管理し、生成されたコードをファイル( project/src/index.jsを含む)に書き込み、コード生成中に発生する可能性のあるエラーを処理します。base-*.js :このファイルは、コード生成プロセスの開始点です。初期コードスニペットが含まれており、 base.jsから必要な関数を呼び出すことにより、コードを生成するためにすべての動きを設定します。 特定の世代から続行するには、満足しているか、問題を修正する必要があるため、次の形式を使用します。NodeGeneration node generation-xxxx.js -g <generation + 1> -p "<prompt>"
1。世代4のグリッチの修正
この例では、第4世代の手続き上の世代に問題があり、背景が暗すぎてゲームプレーヤーが見えなくなります。この問題を修正するために、ユーザーは次のコマンドを実行します。
node generation-0004.js -g 5 -p "fix: dark background, player invisible" -c
このコマンドは、Generation 4( generation-0004.js )から始まり、次世代(Generation 5)に移動し、背景の暗闇とプレイヤーの可視性の問題を修正するためのプロンプトを提供します。
2。世代3でスコアリングシステムを追加します
この場合、ユーザーは第3世代でのゲームの進捗に満足しており、スコアリングシステムを追加したいと考えています。そうするために、彼らは次のコマンドを実行します。
node generation-0003.js -g 4 -p "feat: implement scoring" -c
このコマンドは、Generation 3( generation-0003.js )から開始し、次世代(世代4)に進み、プロンプトを組み込んでスコアリング機能をゲームに実装します。
3。生成5から流れ場を保持しますが、その後の世代を無視します
この状況では、ユーザーは第5世代で生成されたフローフィールドを高く評価していますが、後の世代の結果に不満を抱いています。望ましい結果を達成するために、次のコマンドを実行します。
node generation-0005.js -g 10 -p "flow field" -c
このコマンドは、世代5( generation-0005.js )から始まり、世代10まで続き、世代5から流れ場を維持し、その間の世代の望ましくない結果を無視します。