
Este projeto foi construído para falhar
(até que não
Reinicie até que funcione
Este projeto tem como objetivo gerar código usando a API do OpenAI de maneira evolutiva. Isso significa que cada geração se baseará no anterior para melhorar o código, estendê -lo, refacter ou corrigir erros.
Este projeto, "Fail2", é a segunda versão e foi derivado de seu antecessor, "Fail1", incorporando melhorias e recursos adicionais.
O código gerado será executado no navegador em um elemento de tela e tem como objetivo criar aplicativos 2D usando JavaScript.
Este guia o levará ao processo de usar nosso processo generativo alimentado pelo modelo de idioma GPT-3.5 do OpenAI para criar projetos inovadores de Canvas2d JavaScript. Você aprenderá como instalar dependências, adicionar sua chave da API, executar a primeira geração e explorar os resultados.
Certifique -se de ter o seguinte instalado em seu sistema:
Clone o repositório da sua máquina local:
git clone [email protected]:failfa-st/fail2.gitNavegue até o diretório do projeto:
cd fail2Instale as dependências necessárias em execução:
npm installCrie uma conta em https://platform.openai.com/signup e obtenha sua chave da API.
Copie o arquivo .env.example para .env :
cp .env.example .env Abra o arquivo .env e adicione sua chave da API do OpenAI:
OPENAI_API_KEY=your_api_key_hereO código gerado será executado em um servidor de desenvolvimento local, então vamos começar este primeiro
npm run devIsso abrirá http: // localhost: 8080 no seu navegador. Caso contrário, abra você mesmo e mantenha -o aberto.
Para iniciar o processo de geração de código, execute o seguinte comando:
node base-default.js -p "<prompt>" -g <generations> -P "<persona>" -t <temperature> -c -m "<model>" -n "<negative_prompt>" -s <seed>
Ou use um dos exemplos básicos:
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"
| Opção | Alias | Tipo | Padrão | Descrição |
|---|---|---|---|---|
--prompt | -p | string | "extend the code" | Define o prompt para o código gerado |
--negativePrompt | -n | string | "" | Define o prompt negativo para o código gerado |
--generations | -g | number | 1 | Define o número de gerações para o código gerado |
--persona | -P | string | "JavaScript expert, performance expert" | Define a persona do código gerado |
--temperature | -t | number | 0.2 | Define a temperatura para o código gerado |
--seed | -s | number | -1 | Define a semente para o código gerado ( -1 cria uma semente aleatória) |
--model | -m | string | "gpt-3.5-turbo" | Define o modelo a ser usado para gerar o código |
--clean | -c | boolean | false | Defina como true se você quiser remover qualquer código gerado anteriormente |
O sinalizador --temperature controla o nível de criatividade no código gerado, com um intervalo de 0 a 2. Valores mais altos resultam em código mais inovador, mas também aumentam o risco de erros ou JavaScript inválido. Para obter melhores resultados, use um valor abaixo de 0,5 para equilibrar a criatividade com confiabilidade. O valor padrão é 0,2.
O sinalizador --negativePrompt nega cada parte separada por vírgula do prompt com "não" para evitar comportamentos indesejados no código gerado. Por exemplo, --negativePrompt "audio, images" se torna "no audio, no images" . Esse recurso ajuda a criar um código mais seguro e melhor, mas pode não eliminar todo o comportamento indesejado.
O sinalizador --model pode ser usado para especificar o modelo a ser usado para gerar código. O modelo padrão é "gpt-3.5-turbo" . No entanto, você também pode optar por usar o modelo "gpt-4" , que fornece mais tokens, mas pode resultar em comportamento indesejado.
O uso do modelo
"gpt-4"aumentará significativamente o tempo necessário para gerar código, pois é mais lento que o modelo padrão"gpt-3.5-turbo".
Para saber mais sobre os modelos disponíveis e seus respectivos recursos, consulte a documentação do OpenAI.
O sinalizador --seed define a semente para o gerador de números aleatórios usado na geração de código. Por padrão, a semente é definida como um número aleatório entre 0 e 100000000. Se uma semente personalizada for fornecida com a bandeira --seed , esse valor será usado.
A semente é um número pseudo-aleatom e pode gerar resultados exclusivos, mas não será o mesmo a cada vez.
Este projeto vem com três arquivos iniciantes, base-default.js (sem importações), base-art.js (ruídojs e cor) e base-game.js (ruídojs, cor e tom), que fornecem um ponto de partida básico e um exemplo de como adicionar dependências.
️ Os arquivos iniciantes devem sempre começar combase-
Para evitar custos de token extras, crie um arquivo base personalizado, como
base-no-changelog.jssem o comentário do Changelog.
Este projeto gera código usando a API OpenAI e segue um conjunto de instruções e restrições para produzir código que pode ser estendido, refatorado ou corrigido. Cada geração de código se baseia no anterior e tem como objetivo melhorar o código. O projeto usa diferentes personas para gerar código e pode criar um número especificado de gerações de código. O código gerado é formatado usando mais bonito e salvo em arquivos separados. O projeto também acompanha as alterações e fornece um Changelog. Além disso, ele pode remover o código gerado anteriormente. O projeto pode lidar com erros.
O código gerado é gravado em um arquivo, project/src/index.js , que é compilado pelo webpack. Um servidor de dev webpack dev é executado, permitindo que você visualize as alterações ao vivo à medida que o processo de geração de código evolui.
O projeto usa dois arquivos principais:
base.js : Este arquivo gerencia o processo de geração de código usando a API OpenAI, grava o código gerado em arquivos (incluindo project/src/index.js ) e lida com erros que podem ocorrer durante a geração de código.base-*.js : Este arquivo é o ponto de partida para o processo de geração de código. Ele contém o snippet de código inicial e define tudo em movimento para gerar código chamando as funções necessárias do base.js Para continuar de uma certa geração, porque você está satisfeito com ela ou precisa corrigir um problema, use o seguinte formato: node generation-xxxx.js -g <generation + 1> -p "<prompt>"
1. Fixando uma falha na geração 4
Neste exemplo, há um problema com a quarta geração de uma geração processual, fazendo com que o plano de fundo seja muito escuro e o jogador do jogo seja invisível. Para corrigir esse problema, o usuário executa o seguinte comando:
node generation-0004.js -g 5 -p "fix: dark background, player invisible" -c
Este comando começa na geração 4 ( generation-0004.js ) e passa para a próxima geração (geração 5), enquanto fornece um prompt para corrigir a escuridão de fundo e o problema de visibilidade do jogador.
2. Adicionando um sistema de pontuação na geração 3
Nesse caso, o usuário está satisfeito com o progresso do jogo na terceira geração e deseja adicionar um sistema de pontuação. Para fazer isso, eles executam o seguinte comando:
node generation-0003.js -g 4 -p "feat: implement scoring" -c
Este comando inicia da geração 3 ( generation-0003.js ) e prossegue para a próxima geração (geração 4), incorporando um prompt para implementar um recurso de pontuação no jogo.
3. Retendo o campo de fluxo da geração 5, mas desconsiderando as gerações subsequentes
Nessa situação, o usuário aprecia o campo de fluxo gerado na quinta geração, mas está descontente com os resultados das gerações posteriores. Para alcançar o resultado desejado, eles executam o seguinte comando:
node generation-0005.js -g 10 -p "flow field" -c
Este comando começa na geração 5 ( generation-0005.js ) e continua até a geração 10, mantendo o campo de fluxo da geração 5 e desconsiderando os resultados indesejados das gerações.