GPT-Engineer:你的新的AI编程助手
GPT-Engineer Your new AI programming assistant
介绍
想象一下有一个编码伙伴,永不疲倦,全天候工作,并且可以根据一个项目描述生成整个代码库。这就是一个名为GPT-Engineer的新项目的意图,它是一种新兴的AI驱动的编码工具之一。它是一个使用GPT的AI驱动的应用程序构建器,可以帮助您构建应用程序。GPT-Engineer由Anton Osika开发,是AI辅助开发领域的一次重大突破。您可以在这里查看GPT-Engineer的GitHub存储库,以了解它的运作方式。
- OmniSpeech成为Cadence Tensilica音频软件合作伙伴,为下一代人工智能语音算法提供更好的汽车、移动、消费者和物联网客户服务
- 联合国教科文组织对人工智能芯片植入提出隐私担忧
- 麻省理工学院和加州大学伯克利分校的研究人员引入了一个框架,使人类能够用最少的努力迅速教会机器人他们想要它做什么
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绝对值得一看。
愉快的编码提示!