GPT Engineer|自动编程

通过GPT Engineer你可以快速生成Github代码库,并学习你的编码风格。指定您想要构建的内容,AI会根据你的要求进行构建。该项目开发者可以在文本文件中提交需求,然后让AI来帮你快速生成代码。

GPT Engineer|代码项目自动生成工具

该插件比较强大,可以快速生成Github代码库,并且可以学习你的编码风格。指定您想要构建的内容,AI会根据你的要求进行构建。

这个项目独特地方在于,开发者在文本文件中提交需求,GPT-Engineer 不是无条件接受这些要求,而是提出许多详细的问题来让程序员澄清缺失的细节。

翻译成人话:可以自己写你想要什么,然后让AI来帮你写代码,期间如果需要调整什么之类的,AI会问你,你根据他的问题进行回复即可生成完整的代码仓库。

项目原理

整个过程分两个阶段执行,即需求细化促进阶段和软件构建阶段。

需求细化促进

用户提供的包含软件需求的文本文件被提交给 GPT-Engineer,并被放置在 OpenAI 的 GPT 的初始消息中,同时还包括确定澄清问题的指示。

GPT-Engineer 系统接收来自 OpenAI GPT-4 的反馈,了解哪些需求需要澄清,并回应提示用户澄清的问题。

GPT-Engineer 会将这一过程循环,直到所有问题澄清到 OpenAI GPT-4 满意为止。

软件构建

前一阶段提炼的需求被打包,并与 OpenAI 的 GPT 指令(即系统提示)和另外一套 GPT-Engineer 希望看到的输出指令(即用户提示)一起包装起来。

GPT-Engineer 收到来自 OpenAI GPT-4 的响应,然后…

GPT-Engineer 为用户提供指令的软件项目创建源代码文件。

项目理念

  • 简单获得价值
  • 灵活且易于添加新的“AI步骤”。
  • 逐步建立以下用户体验:
    • 高级提示
    • 向AI提供反馈,它会随着时间的推移记住
  • AI与人类之间快速交接
  • 简单,所有计算都是“可恢复”的,并持久化到文件系统。

项目仓库

GitHub:AntonOsika/gpt-engineer

网络问题

在安装过程中,你可能即便开启了魔法上网也无法下载一些编程依赖库,关于魔法上网的相关配置问题不方便在站内讲解,请自行查看【魔法上网】的教程内容。

安装教程

如果您是初学者,对于命令行不太理解,那么请按下键盘上的Win键+R键后,在弹出的新窗口内输入CMD并按下回车,打开CMD窗口,按顺序执行如下的每一条命令。

首先我们需要确认一个工作目录,用来存放该项目的相关环境依赖文件。本站所选择的目录为D盘的根目录下openai.wiki文件夹,完整路径为:D:\openai.wiki

检测D盘是否在openai.wiki目录,没有则创建该文件夹。

if not exist D:\openai.wiki mkdir D:\openai.wiki

强制切换工作路径为D盘的openai.wiki文件夹。

cd /d D:\openai.wiki

拉取该项目的Github仓库文件,将其下载至openai.wiki文件夹内。

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

如果您无法完成此步骤,执行后报错或者无法下载,可以下载该文件将其解压至D:\openai.wiki即可。

gpt-engineer-main

提取密码 文件说明 文件大小 38.79KB 文件格式 ZIP 资源价格 免费 下载次数 0

环境部署

在CMD中执行下面的命令行,创建Conda虚拟环境至该项目的目录中,方便日后重装系统也能够正常使用,无需重新部署环境。

conda create -y -p D:\openai.wiki\gpt-engineer\ENV

初始化Conda环境,防止后续操作可能存在报错等问题。

conda init cmd.exe

激活已创建的Conda环境,这样我们可以将我们后续所需要的所有环境依赖都安装至此环境下。

conda activate D:\openai.wiki\gpt-engineer\ENV

执行如下命令,安装访项目的相关依赖库。

pip install gpt-engineer

详细安装过程如下:

(D:\openai.wiki\GPT_Engineer\ENV) D:\openai.wiki\GPT_Engineer>pip install gpt-engineer
Collecting gpt-engineer
  Downloading gpt_engineer-0.0.6-py3-none-any.whl (13 kB)
Collecting ruff==0.0.272
  Downloading ruff-0.0.272-py3-none-win_amd64.whl (5.7 MB)
     |████████████████████████████████| 5.7 MB 726 kB/s
Collecting typer==0.9.0
  Downloading typer-0.9.0-py3-none-any.whl (45 kB)
     |████████████████████████████████| 45 kB 192 kB/s
Collecting termcolor==2.3.0
  Using cached termcolor-2.3.0-py3-none-any.whl (6.9 kB)
Collecting pytest==7.3.1
  Downloading pytest-7.3.1-py3-none-any.whl (320 kB)
     |████████████████████████████████| 320 kB 204 kB/s
Collecting black==23.3.0
  Downloading black-23.3.0-cp39-cp39-win_amd64.whl (1.3 MB)
     |████████████████████████████████| 1.3 MB ...
Collecting mypy==1.3.0
  Downloading mypy-1.3.0-cp39-cp39-win_amd64.whl (8.9 MB)
     |████████████████████████████████| 8.9 MB 656 kB/s
Collecting pre-commit==3.3.3
  Downloading pre_commit-3.3.3-py2.py3-none-any.whl (202 kB)
     |████████████████████████████████| 202 kB 409 kB/s
Collecting openai==0.27.8
  Downloading openai-0.27.8-py3-none-any.whl (73 kB)
     |████████████████████████████████| 73 kB 1.8 MB/s
Collecting platformdirs>=2
  Downloading platformdirs-3.8.0-py3-none-any.whl (16 kB)
Collecting pathspec>=0.9.0
  Downloading pathspec-0.11.1-py3-none-any.whl (29 kB)
Collecting typing-extensions>=3.10.0.0
  Using cached typing_extensions-4.6.3-py3-none-any.whl (31 kB)
Collecting packaging>=22.0
  Using cached packaging-23.1-py3-none-any.whl (48 kB)
Collecting tomli>=1.1.0
  Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting mypy-extensions>=0.4.3
  Downloading mypy_extensions-1.0.0-py3-none-any.whl (4.7 kB)
Collecting click>=8.0.0
  Using cached click-8.1.3-py3-none-any.whl (96 kB)
Collecting aiohttp
  Downloading aiohttp-3.8.4-cp39-cp39-win_amd64.whl (323 kB)
     |████████████████████████████████| 323 kB 261 kB/s
Requirement already satisfied: requests>=2.20 in c:\users\opena\miniconda3\lib\site-packages (from openai==0.27.8->gpt-engineer) (2.25.1)
Requirement already satisfied: tqdm in c:\users\opena\miniconda3\lib\site-packages (from openai==0.27.8->gpt-engineer) (4.61.2)
Collecting pyyaml>=5.1
  Downloading PyYAML-6.0-cp39-cp39-win_amd64.whl (151 kB)
     |████████████████████████████████| 151 kB 328 kB/s
Collecting nodeenv>=0.11.1
  Downloading nodeenv-1.8.0-py2.py3-none-any.whl (22 kB)
Collecting identify>=1.0.0
  Downloading identify-2.5.24-py2.py3-none-any.whl (98 kB)
     |████████████████████████████████| 98 kB 544 kB/s
Collecting cfgv>=2.0.0
  Downloading cfgv-3.3.1-py2.py3-none-any.whl (7.3 kB)
Collecting virtualenv>=20.10.0
  Downloading virtualenv-20.23.1-py3-none-any.whl (3.3 MB)
     |████████████████████████████████| 3.3 MB 364 kB/s
Collecting pluggy<2.0,>=0.12
  Downloading pluggy-1.2.0-py3-none-any.whl (17 kB)
Collecting iniconfig
  Downloading iniconfig-2.0.0-py3-none-any.whl (5.9 kB)
Collecting exceptiongroup>=1.0.0rc8
  Using cached exceptiongroup-1.1.1-py3-none-any.whl (14 kB)
Collecting colorama
  Using cached colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Requirement already satisfied: setuptools in c:\users\opena\miniconda3\lib\site-packages (from nodeenv>=0.11.1->pre-commit==3.3.3->gpt-engineer) (52.0.0.post20210125)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\opena\miniconda3\lib\site-packages (from requests>=2.20->openai==0.27.8->gpt-engineer) (2021.5.30)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in c:\users\opena\miniconda3\lib\site-packages (from requests>=2.20->openai==0.27.8->gpt-engineer) (1.26.6)
Requirement already satisfied: chardet<5,>=3.0.2 in c:\users\opena\miniconda3\lib\site-packages (from requests>=2.20->openai==0.27.8->gpt-engineer) (4.0.0)
Requirement already satisfied: idna<3,>=2.5 in c:\users\opena\miniconda3\lib\site-packages (from requests>=2.20->openai==0.27.8->gpt-engineer) (2.10)
Collecting filelock<4,>=3.12
  Using cached filelock-3.12.2-py3-none-any.whl (10 kB)
Collecting distlib<1,>=0.3.6
  Downloading distlib-0.3.6-py2.py3-none-any.whl (468 kB)
     |████████████████████████████████| 468 kB 312 kB/s
Collecting frozenlist>=1.1.1
  Downloading frozenlist-1.3.3-cp39-cp39-win_amd64.whl (34 kB)
Collecting charset-normalizer<4.0,>=2.0
  Downloading charset_normalizer-3.1.0-cp39-cp39-win_amd64.whl (97 kB)
     |████████████████████████████████| 97 kB 1.1 MB/s
Collecting aiosignal>=1.1.2
  Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting async-timeout<5.0,>=4.0.0a3
  Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting yarl<2.0,>=1.0
  Downloading yarl-1.9.2-cp39-cp39-win_amd64.whl (61 kB)
     |████████████████████████████████| 61 kB 241 kB/s
Collecting attrs>=17.3.0
  Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
Collecting multidict<7.0,>=4.5
  Downloading multidict-6.0.4-cp39-cp39-win_amd64.whl (28 kB)
Installing collected packages: multidict, frozenlist, yarl, platformdirs, filelock, distlib, colorama, charset-normalizer, attrs, async-timeout, aiosignal, virtualenv, typing-extensions, tomli, pyyaml, pluggy, pathspec, packaging, nodeenv, mypy-extensions, iniconfig, identify, exceptiongroup, click, cfgv, aiohttp, typer, termcolor, ruff, pytest, pre-commit, openai, mypy, black, gpt-engineer
Successfully installed aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 black-23.3.0 cfgv-3.3.1 charset-normalizer-3.1.0 click-8.1.3 colorama-0.4.6 distlib-0.3.6 exceptiongroup-1.1.1 filelock-3.12.2 frozenlist-1.3.3 gpt-engineer-0.0.6 identify-2.5.24 iniconfig-2.0.0 multidict-6.0.4 mypy-1.3.0 mypy-extensions-1.0.0 nodeenv-1.8.0 openai-0.27.8 packaging-23.1 pathspec-0.11.1 platformdirs-3.8.0 pluggy-1.2.0 pre-commit-3.3.3 pytest-7.3.1 pyyaml-6.0 ruff-0.0.272 termcolor-2.3.0 tomli-2.0.1 typer-0.9.0 typing-extensions-4.6.3 virtualenv-20.23.1 yarl-1.9.2

执行如下命令,强制切换至项目路径内。

cd /d D:\openai.wiki\gpt-engineer

执行如下代码,自动安装该项目的相关依赖。

pip install .

通过CMD添加关于OPENAI的环境变量API Key密钥。

setx OPENAI_API_KEY "你的API Key"

比如本站使用的Key后的格式如下,请根据自身需求修改:

setx OPENAI_API_KEY "sk-0zzJlU3PmmSy*****WVxT3BlbkFJsNoPyJuo0Yf1E8XxzuZl"

补充说明:官方建议填写GPT-4的API,这样一般来说生成的代码是可以直接跑通的,如果你使用GPT-3.5的API可能无法跑通,需要反正改BUG调试很多次,毕竟GPT-3.5是没有GPT-4智能的。

使用教程|准备阶段

因为这个项目的主要功能是用来写代码,所以我们需要先设置一个目录,用来生成代码,以及设置相关文件,以下是详细的使用方法。

首先我们执行如下代码,将会自动在该目录下创建一个名为Snake的文件夹,用来存放代码贪吃蛇项目的相关文件。

mkdir D:\openai.wiki\gpt-engineer\projects\Snake

在创建完成项目的文件夹之后,我们还需要在该文件夹内创建一个名为prompt的空文件,里面没有任何内容。

fsutil file createnew D:\openai.wiki\gpt-engineer\projects\Snake\prompt 0

运行如下命令,打开我们刚刚创建的空白prompt文件。

start D:\openai.wiki\gpt-engineer\projects\Snake\prompt

此时我们可以在文件内编写想要用代码来完成的内容,越为具体越好,写完之后记得保存文件。

用Python写一个贪吃蛇游戏,游戏规则如下:
1.贪吃蛇由一条蛇组成,最初是由三个方块组成,每个方块都有一个小点。
2.蛇可以通过键盘控制向上、下、左、右方向移动。
3.游戏区域内会有一些食物,当蛇吃到食物时,它就会变长一格,同时得分也会增加。
4.如果蛇撞到墙壁或者它自己的身体,那么游戏就会结束。
5.蛇的长度越长,游戏难度就越大,因为蛇会越来越难控制。 希望这些规则能够帮助你更好地了解贪吃蛇游戏。

好了,我们已经完成了所有的准备工作,下面是生成代码的部分。

使用教程|代码生成

执行以下命令,将会使用gpt-engineer自动按要求生成代码。

gpt-engineer projects/Snake

理论上是直接就可以生成了的,但站长遇到以下报错。大概率是因为类型的问题,但是查了一下官方的仓库问题解决,没有人遇到过这个问题,那站长就手动修改一下吧,将collect.pyfeedback: str | None更改为feedback: str试一下。

(D:\openai.wiki\gpt-engineer\ENV) D:\openai.wiki\gpt-engineer>gpt-engineer projects/Snake
Traceback (most recent call last):
  File "c:\users\opena\miniconda3\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\opena\miniconda3\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\openA\miniconda3\Scripts\gpt-engineer.exe\__main__.py", line 4, in <module>
  File "c:\users\opena\miniconda3\lib\site-packages\gpt_engineer\main.py", line 11, in <module>
    from gpt_engineer.collect import collect_learnings
  File "c:\users\opena\miniconda3\lib\site-packages\gpt_engineer\collect.py", line 19, in <module>
    class Learning:
  File "c:\users\opena\miniconda3\lib\site-packages\gpt_engineer\collect.py", line 25, in Learning
    feedback: str | None
TypeError: unsupported operand type(s) for |: 'type' and 'NoneType'

可以跑通了,但是又遇到了新问题,可能因为站长用的是GPT-3.5的API Key的关系,所以出现如下报错。唉,这个实在是没有办法了,站长具有GPT-4权限的API账号被封了,还在发邮件交涉。

(D:\openai.wiki\gpt-engineer\ENV) D:\openai.wiki\gpt-engineer>gpt-engineer projects/Snake
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

如果你能够正常跑的通,那么将会在项目文件夹下生成相关的代码了,继续往后跑就行,没有什么难度。

总结

其实站长的GPT-4权限账号被封了半个月了,真的烦,好多东西都用不了。正规花钱买充值的,却不能用,真让人心寒啊。

关于这个项目,其实跑个Demo还行,如果用来真的搞项目,可能并不是很好用,而且GPT-4的API额度还挺贵的。本来没想写这个东西的,但是架不住这个项目太火了。几天不见,这个项目已经32K的Star了,这个数字还是非常恐怖的。

以后关于用AI来编程肯定是个趋势,就像这个项目一样,只需要不断对话,告诉项目你想要的是什么就可以了,但这只是趋势,不是现在。

此文章由OpenAI开源维基百科原创发布,如若转载请注明出处:https://openai.wiki/gpt-engineer.html

(0)
上一篇 2023-06-24 15:07
下一篇 2023-06-28 16:09

相关推荐

  • openAI|嵌入超长文本

    本文介绍了两种处理超过OpenAI嵌入模型最大上下文长度的文本的方法,即简单截断文本和分块处理文本。通过本文,您可以了解到如何避免因超过最大长度而导致的错误,同时又不失去可能相关的文本内容。

    ChatGPT 2023-02-20
    002.7K
  • GPT-3|文本编辑示例

    本文介绍了OpenAI提供的编辑API端点及其应用案例,包括指令输入和文本输入等基本操作。然后,本文以翻译任务为例,详细介绍了如何使用编辑API端点进行无监督翻译,并提供了相应的示例和输出结果。

    ChatGPT 2023-02-20
    00823
  • ChatGPT Plus 增值版的申请付费流程

    本文介绍了 ChatGPT Plus 增值版的申请付费流程,包括了申请付费的具体步骤,支付方式,以及申请付费后的注意事项等,帮助用户更好地了解和使用 ChatGPT Plus 增值版。

    2023-02-15
    010318.7K
  • GPT-3|代码编写示例

    本文介绍了使用GPT-3编写代码的示例,包括编写SQL查询等。GPT-3能够自动推断变量名称,提高代码编写的效率和准确性。适用于需要大量代码编写的开发场景,让开发者事半功倍。

    ChatGPT 2023-02-20
    00938
  • ChatGPT|制作清晰有效的Prompt指南

    本文介绍了如何制作清晰有效的ChatGPT提示以推动引人入胜且信息丰富的对话,从ChatGPT的基础知识及其工作原理到制作引人注目的提示和解决常见问题的高级技术的所有内容,本文提供了详细的指南和建议。

    ChatGPT 2023-02-18
    012.4K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

微信