
Этот проект построен, чтобы провалиться
(Пока это нет)
Перезапустить, пока он не сработает
Этот проект направлен на создание кода с использованием API OpenAI в эволюционным способам. Это означает, что каждое поколение будет опираться на предыдущий, чтобы сделать код лучше, расширить его, рефактор его или исправить ошибки.
Этот проект «Fail2» является второй версией и был получен от его предшественника «Fail1», включающий улучшения и дополнительные функции.
Сгенерированный код будет выполнен в браузере на элементе холста и направлен на создание двухмерных приложений с использованием 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 и добавьте свой ключ API OpenAI:
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 (No Imports), base-art.js (ushyjs и Color) и base-game.js (joyjs, цвет и тон), которые обеспечивают базовую отправную точку и пример того, как добавить зависимости.
️ Файлы стартера всегда должны начинаться сbase-
Чтобы избежать дополнительных затрат на токен, создайте пользовательский базовый файл, такой как
base-no-changelog.jsбез комментариев ChangeLog.
Этот проект генерирует код с использованием API OpenAI и следует за набором инструкций и ограничений для создания кода, который может быть расширен, рефактирован или фиксирован. Каждое поколение кода основывается на предыдущем и стремится улучшить код. Проект использует разные персоны для генерации кода и может создать указанное количество поколений кода. Сгенерированный код отформатируется с использованием красителя и сохраняется в отдельных файлах. Проект также отслеживает изменения и обеспечивает изменение изменений. Кроме того, он может удалить ранее сгенерированный код. Проект может обрабатывать ошибки.
Сгенерированный код записывается в файл, project/src/index.js , который составлен WebPack. Сервер Dev Webpack работает, позволяя вам просматривать живые изменения по мере развития процесса генерации кода.
Проект использует два основных файла:
base.js : Этот файл управляет процессом генерации кода с помощью API OpenAI, записывает сгенерированный код в файлы (включая 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 и игнорируя нежелательные результаты поколений между ними.