GPT-Engineer:你的新的AI编程助手

GPT-Engineer Your new AI programming assistant

 

介绍

 

想象一下有一个编码伙伴,永不疲倦,全天候工作,并且可以根据一个项目描述生成整个代码库。这就是一个名为GPT-Engineer的新项目的意图,它是一种新兴的AI驱动的编码工具之一。它是一个使用GPT的AI驱动的应用程序构建器,可以帮助您构建应用程序。GPT-Engineer由Anton Osika开发,是AI辅助开发领域的一次重大突破。您可以在这里查看GPT-Engineer的GitHub存储库,以了解它的运作方式。

GPT-Engineer不仅仅是另一个AI工具;它是您的编码助手。无论是构建简单的应用程序还是更复杂的应用程序(例如游戏),GPT-Engineer都可以提供帮助。就像有一个初级开发者在您身边,询问澄清问题,以确保它完全理解您的项目要求。

 

安装和运行GPT-Engineer

 

在您开始使用GPT-Engineer编码之前,您需要安装它。要安装,请从项目的GitHub页面克隆GPT-Engineer存储库。然后,使用最新版本的Python创建一个新环境,并安装必要的模块。有关逐步指南,请前往GPT-Engineer的GitHub页面。

 

使用GPT-4生成设计文档提示

 

GPT-Engineer的提示基于提供设计文档。但是,如何起草一份有用的设计文档呢?为什么不使用GPT-4来帮助创建呢?!?

让我们使用GPT-4生成详细的项目设计描述,然后将其输入GPT-Engineer。这样,您可以确保您的AI编码伙伴拥有构建应用程序所需的所有信息。

例如,让我们使用GPT-4创建一个设计文档的提示,然后用它来提示GPT-Engineer。实际上,只需很少的工作即可让ChatGPT生成一份有用的设计文档,尽管它们可能更复杂,正如您将在下面看到的。这是我们的提示:

我想使用Python实现一个贪吃蛇游戏,使用游戏的经典规则和玩法。它可以使用外部库来完成。为这个项目生成一个设计文档。

 

这是生成的设计文档的前几行,我可以向您保证,在总体上,它很好地概述了需要完成的工作。

介绍本设计文档的目的是概述在Python中创建经典贪吃蛇游戏的实现细节。游戏将遵循传统的规则和玩法,玩家通过吃食物来使蛇的长度增加,同时避免与蛇身和游戏边界发生碰撞。游戏将使用外部库来提供图形和用户输入的功能。

游戏组件贪吃蛇游戏将包括以下组件:a)蛇:一个可以移动的对象,当它吃食物时长度增加,并且如果与自身或游戏边界发生碰撞则输掉游戏。b)食物:随机放置的对象,蛇可以吃掉以增加自己的长度和得分。…

 

现在我们有了一个设计文档提示,我们可以用它来使用GPT-Engineer。

 

使用ChatGPT构建设计文档

 

GPT-Engineer的一个伟大之处在于它的多功能性。它可以实现一个简单的贪吃蛇游戏,就像它可以帮助您构建各种应用程序一样,包括仅使用Python的标准库模块构建一个简单的键值数据库。只需在main.prompt文件中描述项目,GPT-Engineer将要求您提供任何必要的澄清。一旦您提供了详细信息,坐下来观看GPT-Engineer生成您的代码库。

首先,让我们使用ChatGPT-4生成一个设计文档。请记住,您不需要使用ChatGPT来实现此目标。如果您有关于您要构建的软件的详细描述,您可以使用它。但是,为了将设计笔记全面转换为GPT-Engineer易于接受的内容,这是一个合理的途径。

以下是作者使用ChatGPT-4生成设计文档时使用的提示:

生成一份高质量的设计文档,供我们的项目团队用于设计下面描述的软件。它应该是完整的,作为唯一的设计文档,让我们的团队完成项目。

— 使用Python编写的简单键值数据库引擎,仅使用标准库模块(除下面提到的模块)。

当数据库引擎运行时,基本的交互应该通过导入的Python模块进行,具有清晰简洁的库API。

还应该有一个独立的控制台,可以运行作为用于与数据库引擎和数据库进行交互的命令行REPL。

额外的交互方式应包括使用Fast API(外部库)创建的API。

设计规范:

键值数据库是一种NoSQL数据库,它将数据存储为一组键值对。与传统的关系型数据库不同,键值数据库不强制使用严格的模式,为某些用例提供了灵活性和可扩展性。设计键值数据库需要考虑几个重要的规范。

可访问的命令:- 连接到数据库 – 删除数据库 – 获取键 – 插入数据 – 更新数据 – 删除数据 – 搜索键和值的存在

数据模型:每个记录由一个唯一的键和一个关联的值组成。该值可以是简单的标量值或复杂的数据结构(例如JSON或XML)。

键结构:键作为每个数据条目的主要标识符,并且在数据库中必须是唯一的。键可以是字母数字字符串、整数,甚至是组合键(多个值组合形成一个键)。

值结构:与每个键关联的值可以是任何数据类型。它可以是基本数据类型(字符串、数字、布尔值)或更复杂的结构,如嵌套对象或数组。

性能和缓存:应该使用内存缓存技术来加速读操作并减少延迟。

 

以下是ChatGPT-4生成的设计文档:

概述 该项目的主要目标是设计和开发一个

轻量级的键值数据库引擎,使用Python编写,仅使用标准库模块,并使用FastAPI提供HTTP接口。该应用程序将提供键值数据库的基本功能,包括连接到数据库、数据插入、更新、删除和检索,以及对键和值进行搜索的功能。

可通过以下三种方法与数据库进行交互:1. 可以被其他Python程序导入的Python模块;2. 用于手动交互的命令行REPL控制台;3. 使用FastAPI创建的API,用于远程与数据库交互。

组成部分 数据库引擎将具有以下主要

组件:

1. **数据存储**:存储键值对的实际存储。作为一个简单的Python实现,可以使用字典,其中键是唯一标识符,值可以是任何数据类型。数据存储应具有高效的访问、添加、更新和删除数据的方法。2. **数据库引擎**:提供与数据存储交互的方法。这将包括连接到数据库、插入、更新和删除数据的方法,以及按键获取值的方法。它还应包括检查数据存储中特定键或值的存在的方法。3. **内存缓存**:用于保存经常访问的数据以提高读取速度和减少延迟的缓存层。可以使用Python的`functools.lru_cache`装饰器或自定义的缓存解决方案来实现。4. **命令行界面**:用于与数据库引擎手动交互的命令行界面。这将使用Python标准库中的`cmd`或`argparse`模块创建一个REPL界面。5. **HTTP API**:使用FastAPI创建的应用程序,将数据库引擎方法作为HTTP API公开。这将允许通过网络与数据库进行交互。

数据模型 数据库引擎将遵循简单的键值数据

模型。数据库中的每个记录将由唯一的键和关联的值组成。

### 键结构 键可以是字母数字字符串、整数或复合键。它们必须在数据库中是唯一的,并将作为每个数据条目的主要标识符。

### 值结构 与每个键关联的值可以是任何Python数据类型。它可以是基本数据类型(字符串、数字、布尔值)或更复杂的结构,如嵌套对象或数组。

API设计 Python库API、CLI和FastAPI应提供

以下函数:- `connect(database_name: str)`: 连接到数据库。如果数据库不存在,则创建数据库。- `delete_database(database_name: str)`: 删除数据库。- `insert(key: str, value: Any)`: 将新的键值对插入数据库。- `update(key: str, value: Any)`: 更新现有键的值。- `delete(key: str)`: 从数据库中删除键值对。- `get(key: str)`: 从数据库中获取键的值。- `exists_key(key: str)`: 检查数据库中是否存在键。- `exists_value(value: Any)`: 检查数据库中是否存在值。

性能和缓存 将使用内存缓存技术

来加速读取操作并减少延迟。可以使用`functools.lru_cache`装饰器或自定义的缓存解决方案来实现。缓存应具有最大大小,以防止过多的内存使用。

结论 本文档为简单的

使用Python和FastAPI设计的键值数据库引擎提供了一个高层次的设计。通过遵循这个设计,我们可以确保数据库具有灵活性和可扩展性,满足各种应用的需求。

 

这就是全部了。唯一剩下的事情是运行GPT-Engineer并将其指向这些标准。

 

结论

 

那么现在怎么办?我们如何解决生成代码中存在的问题?最近,作者一直在使用GPT-Engineer与Aider一起使用,Aider是另一个能够生成代码的GPT支持软件项目,试图调整结果。然而,随着ChatGPT Code Generator插件的最近公开可用,似乎尝试使用它来生成和修复代码是个好主意。

总之,GPT-Engineer不仅仅是一个工具,它是我们构建应用程序的潜在革命。它证明了人工智能、语言模型和可能预示着编码未来的力量。无论您是有经验的开发者还是刚刚入门,GPT-Engineer绝对值得一看。

愉快的编码提示!