首页 程序笔记 全自动代码生成器GPT-Engineer用法

全自动代码生成器GPT-Engineer用法

什么是 GPT-Engineer

GPT-Engineer 是一个使用 GPT-4 来自动化软件工程过程的项目。它包括几个与 GPT-4 模型交互的 Python 脚本,以生成代码、阐明需求、生成规范等,目前GitHub上已有四万多颗星。

借助 GPT-Engineer,开发人员不再需要从头开始编码或花费数小时搜索相关代码示例。通过提供描述所需项目或功能的清晰简洁的提示,开发人员可以获得根据其特定要求量身定制的全面代码库。这种简化的流程提高了生产力,并使开发人员能够专注于项目的更高级别方面。让我们更深入地了解 GPT-Engineer 的工作原理。

GPT-Engineer 的工作原理

GPT-Engineer 利用自然语言处理和机器学习模型的力量来了解您的项目需求。通过提供描述您所需应用程序的提示,GPT-Engineer 会解释指令并生成相应的代码库。它封装了项目所需的基本逻辑和结构,为您节省了大量的时间和精力。这种创新方法使开发人员能够更多地专注于概念化和完善他们的想法,而不是陷入重复的编码任务中。

GPT-Engineer 按照简单的工作流程根据提示生成代码:

提示定义

开发人员使用自然语言在提示中定义他们的项目需求和规范。

代码生成

GPT-Engineer 分析提示并根据给定的指令生成代码片段、函数、类甚至整个应用程序。

细化和优化

虽然 GPT-Engineer 提供了坚实的基础,但开发人员可以细化和优化生成的代码,使其符合他们的特定需求,确保其符合质量标准。

GPT-Engineer 有什么特点

识别:可以通过编辑身份文件夹中的文件来指定AI代理的身份。这使得用户能够根据自己的需求定制人工智能代理。例如,用户可以指定人工智能代理的姓名、性别和个性品质。

记忆:人工智能代理可以通过改变身份和进化 prompt 来记住项目之间的内容。因此,人工智能代理可以随着时间的推移进行学习和发展。

通信历史记录:steps.py中每个步骤与GPT4的通信历史记录将保存在logs文件夹中。这使用户能够监控 AI 代理的进度并解决问题。Scripts/rerun_edited_message_logs.py 可用于重做通信历史记录。

GPT-Engineer 有什么优势

节省时间和精力

通过自动化代码生成过程,GPT-Engineer 显着减少了开发软件应用程序所需的时间和精力。开发人员可以利用生成的代码库作为起点,快速启动他们的项目,并专注于增强和自定义代码,而不是从头开始。

提高生产力和效率

GPT-Engineer 使开发人员能够更高效地工作,因为它负责日常编码任务。通过生成的代码库,开发人员可以加速开发过程,更快地迭代,并将时间分配到项目的关键方面,例如设计、测试和优化。

增强代码质量

GPT-Engineer 生成的代码基于软件开发社区中观察到的最佳实践和标准。这确保了生成的代码库具有高质量、结构良好且遵守编码约定,从而减少了引入错误或漏洞的机会。

学习与探索

GPT-Engineer 对于开发人员来说是一个有价值的学习工具。通过检查生成的代码,开发人员可以深入了解不同的编码技术、设计模式和最佳实践。接触不同的代码库可以扩展他们的知识并培养解决编程挑战的创造力。

GPT-Engineer 有什么限制

虽然 GPT-Engineer 是一个强大的工具,但考虑它的局限性也很重要:

特定领域的知识

GPT-Engineer 基于预先训练的模型进行操作,可能不具备专业领域的专业知识。开发人员在将其用于需要深入领域知识的高度具体或复杂的项目时应谨慎行事。

代码验证和测试

生成的代码应经过严格的测试和验证,以确保其功能和稳健性。开发人员必须彻底审查和测试代码库,根据需要进行必要的修改和改进。

依赖管理

GPT-Engineer 可能不会考虑个别开发人员首选的特定依赖项或框架。检查和配置生成的代码库以与所需的开发环境和首选工具保持一致至关重要。

GPT-Engineer 有什么影响

GPT-Engineer的推出利用GPT模型的优势对不同领域产生了巨大影响。其出色的技能之一是能够仅使用几个单词作为输入在几秒钟内生成代码。这大大加快了开发过程,并减少了编码活动所需的时间和精力。

此外,GPT-Engineer 提供全面的定制可能性,允许客户在多个项目中改变人工智能代理的行为和记忆。这可以通过修改或添加文件到身份文件夹来实现,允许用户指定人工智能代理的个人功能和专业知识。

此外,GPT-Engineer代码生成过程是可见、可追溯的。代码生成过程的每个阶段都被记录并保存在日志文件夹中。此功能允许用户返回并重新运行某些阶段,从而可以对生成的代码进行迭代细化和调试。它鼓励高效的工作流程,并提高根据必要要求微调和改进输出的能力。

总体而言,GPT-Engineer 的出现通过使用 GPT 模型的功能彻底改变了代码生产,实现了快速高效的编码、高级定制和迭代代码精炼。它在减少开发流程和促进多个领域的创新方面具有巨大的潜力。

如何使用 GPT-Engineer

先决条件

安装前需要具备以下先决条件:

安装 Python(≥3.0)和 Git

安装了 conda 或 pip

访问 bash(macOS、Linux 或 Windows)

代码编辑器(VSCode 或 PyCharm)

初始设置

在终端中输入以下内容创建并激活python虚拟环境:

# pip
python3 -m venv myenv
source myenv/bin/activate

# conda
conda create --name myenv python=3.11.3
conda activate myenv

下载 GPT-Engineer

首先,我们必须克隆这个 GitHub 存储库。为此,请打开终端并运行以下代码。

git clone https://github.com/AntonOsika/gpt-engineer.git

设置 GPT-Engineer

将创建一个名为 gpt-engineer 的新文件夹。使用 cd 更改目录,安装项目依赖。

# 克隆存储库后,使用“ cd" 命令导航到克隆的目录:
cd gpt-engineer

# 接下来,通过运行以下命令安装必要的依赖项
make install
# 或者使用 python -m pip install -e .

# 根据您的操作系统使用适当的命令激活虚拟环境
source venv/bin/activate

设置 API 密钥

以下两种方式任意选择一种,默认使用GPT-4模型,没有GPT-4访问权限的key会自动切换到GPT-3.5。

导出环境变量(你可以将其添加到 .bashrc 中,这样您就不必每次启动终端时都执行此操作)

# macOS/linux
export OPENAI_API_KEY=[your api key]

# Windows(命令提示符)
set OPENAI_API_KEY=[your api key]

# Windows(PowerShell)
$env:OPENAI_API_KEY="<your_api_key>"

.env 文件

创建一个名为 .env 的 .env.template 副本,在 .env 中添加您的 OPENAI_API_KEY。

运行 GPT-Engineer

GPT-Engineer 通过位于项目文件夹中的 prompt 文件提供交互式界面。默认情况下,项目目录中存在一个“example”文件夹。

如果您想启动一个新项目,只需使用以下命令创建一个新文件夹即可。

cp -r projects/example/ projects/my-new-project

接下来在文本编辑器中打开 prompt 文件并根据您的项目要求修改提示。您可以在此处描述应用程序所需的功能或目标。您可以随意具体或笼统。

最后,使用以下命令运行 GPT-Engineer,并指定项目文件夹的路径:

gpt-engineer projects/my-new-project 
dream@MacBook-Pro gpt-engineer % source venv/bin/activate

(venv) dream@MacBook-Pro gpt-engineer % export OPENAI_API_KEY=<your-openai-api-key>
(venv) dream@MacBook-Pro gpt-engineer % make install
Creating virtual environment...
Upgrading pip...
Installing dependencies...
Installing pre-commit hooks...
pre-commit installed at .git/hooks/pre-commit
All done!
(venv) dream@MacBook-Pro gpt-engineer % gpt-engineer projects/example
INFO:openai:error_code=model_not_found error_message="The model 'gpt-4' does not exist" error_param=model error_type=invalid_request_error message='OpenAI API error received' stream_error=False
Model gpt-4 not available for provided API key. Reverting to gpt-3.5-turbo. Sign up for the GPT-4 wait list here: https://openai.com/waitlist/gpt-4-api

Running gpt-engineer in /Volumes/工作盘/gpt-engineer/projects/example 

Let's start by creating the file structure for our Snake game project. We will have three main components: Model, View, and Controller. Additionally, we will need a main entry point file to start the game.

Here is the proposed file structure:

```
snake_game/
    ├── main.py
    ├── model/
    │   ├── snake.py
    │   └── game.py
    ├── view/
    │   └── display.py
    └── controller/
        └── input_handler.py
```

Now, let's start by creating the main entry point file `main.py`. This file will initialize the game and handle the game loop.

main.py
```python
from model.game import Game
from view.display import Display
from controller.input_handler import InputHandler

def main():
    game = Game()
    display = Display()
    input_handler = InputHandler()

    while not game.is_game_over():
        # Update game state
        game.update()

        # Render game state
        display.render(game.get_state())

        # Handle user input
        input_handler.handle_input(game)

if __name__ == "__main__":
    main()
```

Next, let's create the `snake.py` file under the `model` directory. This file will define the Snake class, which represents the snake in the game.

model/snake.py
```python
from dataclasses import dataclass

@dataclass
class Snake:
    body: list
    direction: str

    def move(self):
        # Logic to move the snake based on the current direction
        pass

    def change_direction(self, new_direction):
        # Logic to change the direction of the snake
        pass
```

Now, let's create the `game.py` file under the `model` directory. This file will define the Game class, which represents the game state and logic.

model/game.py
```python
from model.snake import Snake

class Game:
    def __init__(self):
        self.snake = Snake()
        self.game_over = False

    def update(self):
        # Logic to update the game state
        pass

    def is_game_over(self):
        # Logic to check if the game is over
        pass

    def get_state(self):
        # Logic to get the current game state
        pass
```

Next, let's create the `display.py` file under the `view` directory. This file will define the Display class, which handles rendering the game state.

view/display.py
```python
class Display:
    def render(self, game_state):
        # Logic to render the game state on the screen
        pass
```

Finally, let's create the `input_handler.py` file under the `controller` directory. This file will define the InputHandler class, which handles user input.

controller/input_handler.py
```python
class InputHandler:
    def handle_input(self, game):
        # Logic to handle user input and update the game state accordingly
        pass
```

Now that we have implemented all the necessary components, we can run the Snake game by executing the `main.py` file.

This concludes a fully working implementation of the Snake game in Python, following the MVC architecture and separating the components into separate files.To install dependencies, we need to make sure we have Python and pip installed. Assuming they are already installed, we can proceed with the following commands:

```bash
# Create a virtual environment
python -m venv snake_env

# Activate the virtual environment
source snake_env/bin/activate

# Install dependencies
pip install pygame
```

To run the Snake game, we need to execute the `main.py` file. We can do this with the following command:

```bash
python main.py
```

Note: Make sure you are in the root directory of the Snake game project before running the above commands.

Do you want to execute this code? (Y/n)

# Create a virtual environment
python -m venv snake_env

# Activate the virtual environment
source snake_env/bin/activate

# Install dependencies
pip install pygame

python main.py


y
Executing the code...

Note: If it does not work as expected, consider running the code in another way than above.

You can press ctrl+c *once* to stop the execution.

Collecting pygame
  Downloading pygame-2.5.2-cp310-cp310-macosx_10_9_x86_64.whl (12.9 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 12.9/12.9 MB 714.6 kB/s eta 0:00:00
Installing collected packages: pygame
Successfully installed pygame-2.5.2

[notice] A new release of pip is available: 23.0.1 -> 23.2.1
[notice] To update, run: pip install --upgrade pip
Traceback (most recent call last):
  File "/Volumes/工作盘/gpt-engineer/projects/example/workspace/main.py", line 21, in <module>
    main()
  File "/Volumes/工作盘/gpt-engineer/projects/example/workspace/main.py", line 6, in main
    game = Game()
  File "/Volumes/工作盘/gpt-engineer/projects/example/workspace/model/game.py", line 5, in __init__
    self.snake = Snake()
TypeError: Snake.__init__() missing 2 required positional arguments: 'body' and 'direction'

Is it ok if we store your prompts to learn? (y/n)y
Thank you️

(If you change your mind, delete the file .gpte_consent)

To help gpt-engineer learn, please answer 3 questions:

Did the generated code run at all? y/n/u(ncertain): y
Did the generated code do everything you wanted? y/n/u(ncertain): y
Total api cost: $  0.005503000000000001
(venv) dream@MacBook-Pro gpt-engineer % 

稍微等待几分钟的时间,很快我们的项目工程就生成好了,检查projects/my-new-project/workspace 中生成的文件。

总结

GPT Engineer 代表了下一代人工智能驱动的开发工具。凭借其根据提示生成整个代码库的能力及其灵活和适应性强的特性,它简化了代码生成和定制的过程。从高级提示到无缝的人机交互,GPT Engineer 使开发人员能够高效地构建和扩展他们的项目,为人工智能驱动的软件开发领域开辟了新的可能性。请随时在下面的评论部分分享您的想法和反馈。

站心网

什么是 GPT-Engineer GPT-Engineer 是一个使用 GPT-4 来自动化软件工程过程的项目。它包括几个与 GPT-4 模..

为您推荐

在线微信聊天生成器,微信对话生成器_段子手值得拥有的搞笑工具

在网上冲浪,享受网络世界里源源不断的信息时,大家一定看到过各种各样的聊天截图,有搞笑的各种段子、爆料、或者是当事人的回复,以及许多奇奇怪怪的聊天内容,大家在觉得有趣的同时,肯定也想过这些聊天界面的信息..

代码照进现实:对公司管理策略的技术性解构

上学的时候觉得计算机专业的一些理论晦涩难懂,跟现实世界的关联太少,每当遇到一些精妙的设计时都会发出一种感叹:究竟是什么脑袋才能想出这么有意思的东西。一晃工作十年,阅历渐丰,隐约发现其实社会中的一些现象..

编写优秀 CSS 代码的 8 个策略

编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一。然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性。我认为这主要是因为许多开发人员对组织CSS / HTML和JavaScript的策..

天天写业务代码,如何成为技术大牛?

不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己。然而"梦想是美好的,现实却是残酷的",很多..

回顾我的软件开发经历:我与代码生成器的涅槃之路

前言这是我《回顾我的开发经历》系列的第二篇,聚焦于我与代码生成器的故事。从最初的简单工具到最终演变成一个功能强大的ORM框架,这段经历不仅让我在技术上得到了极大的提升,也让我深刻理解了重构、设计模式和系..

记我经历的一次公司破产经历,一行代码害死一家公司

前言这是一篇亲身经历的真实记录,事情发生在2010年。狗血剧情一再上演,使我的程序员生涯变得跌宕起伏,也从中学到了很多。在写这篇文章之前,我还专门去查了这家公司的资料。有如下事实:1.官网已经打不开了。2.天..

如何处理前任程序员留下的代码

作为软件工程师不可避免会遇到的一个场景是:我们在改变或添加一个功能到不是我们创建的、我们不熟悉的、与我们负责的系统部分无关的代码中时,会遇到麻烦。虽然这可能会是一个繁琐而艰巨的任务,但是由于使用其他开..

对码农而言什么样的代码才能叫做好代码?

好的代码,就像是好的笑话——无需解释就能让别人明白。如果你的代码能够做到不解自明,在大多数时候,你根本无需为其配备说明文档。好的代码,就像是一辆配备了优秀音响和杯架的汽车,这辆车在行驶到最高速度的时候..

当一个程序员写不出代码了,该怎么办?

你已经对着电脑n个小时了。不知道该写什么代码,或者一种摔键盘的冲动正在你的胸中酝酿。咖啡一杯接着一杯。不敢再喝了,因为搞不好要有副作用了,心跳加速,身体不由自主地颤抖,出冷汗,但还是无法产出任何代码。..

基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础

LnskyDB是基于Dapper的Lambda扩展,支持按时间分库分表,也可以自定义分库分表方法.而且可以T4生成实体类免去手写实体类的烦恼.文档地址:https://liningit.github.io/LnskyDB/开源地址:https://github.com/liningit/Ln..

.NET C#中的Func、Predicate和Expression用法详解

在 .NET C# 中,Func、Predicate 和 Expression 是非常常见的委托类型和表达式树,广泛用于函数式编程、数据查询(如 LINQ)以及表达式编译等场景。以下是它们的详细用法和区别。1. FuncFunc 是一个通用委托,用于表..

SQL语句中的EXISTS用法示例

EXISTS 是 SQL 中用于判断子查询是否返回结果的关键字。它通常用于 WHERE 子句中,结合子查询一起使用。如果子查询返回至少一行数据,EXISTS 会返回 TRUE,否则返回 FALSE。EXISTS 用法示例假设有两个表:employees..

ASP.NET MVC最常用的设计模式代码示例

ASP.NET MVC 是一个基于分层架构的框架,其核心架构本身已经实现了 MVC 模式(Model-View-Controller)。除了 MVC 模式,开发者在使用 ASP.NET MVC 开发应用时,通常会结合其他设计模式以提高代码的可维护性、可扩展..

10款.NET开发中推荐的代码分析和质量工具

以下是10款.NET开发中常用的代码分析和质量工具列表,以及它们的主要功能和使用场景:1. SonarQube简介:一个流行的开源静态代码分析平台,用于检测代码中的漏洞、错误、技术债务等问题。主要功能:支持代码质量监测..

.NET C# EntityFramework(EF)连接SQLite代码示例

在.NET C#中使用Entity Framework(EF)连接SQLite数据库是一种常见的做法,可以有效地管理和操作数据。以下是一个简单的示例代码,展示了如何使用EF Core连接到SQLite数据库并执行基本的CRUD操作。首先,确保你已经..

微软 .NET 9 正式发布!专为云原生和生成式 AI 应用设计

微软正式发布了 .NET 9,这是一次重大的版本更新。微软在 .NET 9 中带来了一系列新特性和改进,主要聚焦在性能优化、云原生支持、AI集成以及开发者体验的提升。以下是一些重要的更新亮点:性能改进:在 .NET 9 中,..

设计模式之高质量代码

0,什么是高质量代码我觉得回答这个问题,应该从两个方面考虑。从业务角度考虑。首先,在公司开发一款软件,应该是业务在驱动。所以,从这个角度来说,代码第一个应该满足的是业务需求,如果连最基本的业务需求都满..

ideogram.ai 人工智能AI图片生成工具网站

Ideogram是一个由前Google Brain员工创立的AI绘画工具,它能够根据文本生成各种风格的图像,尤其擅长准确生成文本内容和抽象图标。Ideogram官网地址:https://ideogram.ai/loginIdeogram是由前Google Brain员工在202..

高效且灵活的C++库Vince's CSV Parser用法示例

在当今的软件开发中,数据的处理和分析占据了核心地位。而CSV(逗号分隔值)文件格式因其简洁性和广泛的兼容性,成为数据交换的常用格式。然而,处理CSV文件并非易事,尤其是当文件规模庞大或格式复杂时。为了解决这..

ASP.NET生成图片验证码

今天开始做一个新项目,包含完整的注册登陆流程,在登陆时需要输入验证码防止暴力破解。 制作思路是这样的: 准备使用handler一般处理程序来写,先随机从0-9和A-Z里随机取4个数字,将内容保存在Session中供验证时使..

发表回复

返回顶部