代码生成 AI

GPT PILOT:一个真正的AI程序员

一个可以从头开始编写可扩展的应用程序的开发工具,由开发人员监督。

2024年1月9日
分享

GPT Pilot 是真正的 AI 程序员,可以编写代码、调试代码、在需要帮助时与您交谈等。

您指定要构建哪种类型的应用程序。然后,GPT Pilot 会提出具体问题,创建产品和技术的要求,设置环境,并开始逐步编写应用程序,就像在现实生活中一样,而您则监督开发过程。它要求您检查其完成的每项任务或在遇到困难时提供帮助。这样,GPT Pilot 充当编码员,而您则是负责审查代码并在需要时提供帮助的主程。

GPT Pilot 是 VS Code 扩展的核心技术,旨在提供第一个真正的 AI 开发伙伴。不仅仅是一个自动完成功能或 PR 消息的助手,而是一个真正的 AI 程序员,可以编写完整的功能、调试它们、与您讨论问题、请求审核等。

如果您想获取未来版本的更新或取得联系,您可以在此处添加您的电子邮件

GPT Pilot 旨在研究在开发人员监督实施的同时,可以多大程度利用 GPT-4 来生成完全可用、可投入生产的应用程序。

主要思想是人工智能可以为应用程序编写大部分代码(也许 95%),但对于其余的 5%,在我们获得完整的 AGI 之前,现在和将来都需要开发人员

我在以下博客文章中详细介绍了 GPT Pilot 背后的想法及其工作原理:

[第 1/3 部分] 高层概念 + 直至编码部分的 GPT Pilot 工作流程

[第2/3部分] GPT Pilot编码工作流程

[第3/3部分]其他重要概念和未来计划(待完成)

GPT Pilot 编写的应用程序示例

要求

  • Python 3.9+
  • PostgreSQL(可选,默认数据库是SQLite)
    • 需要数据库有多种原因,例如持续的应用程序开发。如果您必须在任何时候停止或应用程序崩溃,请返回到特定步骤,以便您可以更改开发中的一些后续步骤,并且更容易调试,将来我们将添加更新项目的功能(更改现有项目中的一些内容)或向项目添加新功能等)。

如何开始使用gpt-pilot?

如果您使用 VS Code 作为 IDE,最简单的方法是下载GPT Pilot VS Code 扩展

或者,您可以使用 CLI 工具。

安装 Python 和(可选)PostgreSQL 后,请按照以下步骤操作:

  1. git clone https://github.com/Pythagora-io/gpt-pilot.git(克隆仓库)
  2. cd gpt-pilot
  3. python -m venv pilot-env(创建虚拟环境)
  4. source pilot-env/bin/activate(或在 Windows 上执行pilot-env\Scripts\activate)(激活虚拟环境)
  5. pip install -r requirements.txt(安装依赖项)
  6. cd pilot
  7. mv .env.example .env(或在 Windows 上执行copy .env.example .env)(创建 .env 文件)
  8. 将您的环境添加到.env文件中:
    1. LLM 提供商(OpenAI/Azure/Openrouter)
    2. 您的 API 密钥
    3. 数据库设置:SQLite/PostgreSQL(从SQLite更改为PostgreSQL,只需设置DATABASE_TYPE=postgres
    4. 可以选择为工作区中 GPT Pilot 不应跟踪的文件夹设置 IGNORE_FOLDERS,可用于忽略编译器创建的文件夹(即IGNORE_FOLDERS=folder1,folder2,folder3
  9. python db_init.py(初始化数据库)
  10. python main.py(启动 GPT pilot)

之后,您只需按照终端中的说明操作即可。

所有生成的代码将存储在workspace子文件夹中。

如何在docker中启动gpt-pilot?

  1. git clone https://github.com/Pythagora-io/gpt-pilot.git(克隆仓库)
  2. 更新docker-compose.yml环境变量,这可以通过docker compose config命令。如果您想使用本地模型,请访问https://localai.io/basics/getting_started/
  3. 默认情况下,GPT Pilot 将在您的计算机上读取和写入到~/gpt-pilot-workspace,您也可以在docker-compose.yml配置中更改。
  4. 执行docker compose build。这将为您构建一个 gpt-pilot 容器。
  5. 执行docker compose up
  6. 访问web终端port 7681
  7. python db_init.py(初始化数据库)
  8. python main.py(启动 GPT pilot)

这将启动两个容器,一个是由Dockerfile构建的新镜像,另一个是 Postgres 数据库。新镜像还安装了ttyd,以便您可以轻松地与 gpt-pilot 交互。镜像上还安装了 Node,并且开启了端口 3000。

CLI 参数

app_typename

如果未提供,ProductOwner 将要求提供以下值:

app_type用作向 LLM 提示适用哪种架构、语言选项和约定。如果没有提供,prompts.prompts.ask_for_app_type()将要求提供。

请参阅const.common.APP_TYPES:'Web App', 'Script', 'Mobile App', 'Chrome Extension'

app_idworkspace

使用app_id继续开发现有应用程序

python main.py app_id=<ID_OF_THE_APP>

workspace路径:

python main.py workspace=<PATH_TO_PROJECT_WORKSPACE>

每个用户可以为每个应用程序使用独有的工作区路径。

user_idemail, 和password

这些值将保存到数据库中的用户表中。

python main.py user_id=me_at_work

如果未指定,user_id则默认为操作系统用户名,但如果您的操作系统用户名与 GitHub 或工作用户名不同,则可以显式提供。当提供了workspace时,该值用于加载App配置。

如果未指定,email将从~/.gitconfig文件(如果存在)中解析。

另请参阅arguments.password / User.password 的用途是什么?

advanced

默认情况下,架构倾向于采用某些特定技术,包括:

  • Node.JS
  • MongoDB
  • PeeWee ORM
  • Jest 和 PyUnit
  • Bootstrap
  • 普通 JavaScript
  • Socket.io

如果您有自己的喜好,可以与架构进行更深入的对话。

python main.py advanced=True

step

从特定step(例如:user_tasks)继续开发现有应用程序

python main.py app_id=<ID_OF_THE_APP> step=<STEP_FROM_CONST_COMMON>

skip_until_dev_step

从特定的开发步骤继续开发现有应用程序

python main.py app_id=<ID_OF_THE_APP> skip_until_dev_step=<DEV_STEP>

这与step的情况基本相同,但是是在开发过程中。如果您想使用 gpt-pilot,这可能是您经常使用的标志。

删除之前完成的所有开发步骤,并从开发一开始就继续处理现有的应用程序。

python main.py app_id=<ID_OF_THE_APP> skip_until_dev_step=0

theme

python main.py theme=light
gptpilot1
python main.py theme=dark
gptpilot2

delete_unrelated_steps

update_files_before_start

示例

以下是 GPT Pilot 自己创建的几个示例应用程序:

实时聊天应用程序

Markdown 编辑器

计时器应用程序

GPT Pilot 是如何工作的?

以下是 GPT Pilot 创建应用程序所需的步骤:

gptpilot3
  1. 您输入应用程序名称和说明。
  2. 产品负责人代理会问几个问题以更好地理解需求。
  3. 产品负责人代理编写用户故事并询问您它们是否都正确(这有助于它稍后创建代码)。
  4. 架构师代理编写将用于应用程序的技术。
  5. DevOps 代理检查计算机上是否安装了所有技术,如果没有则安装它们。
  6. 技术主管代理编写开发人员必须实施的开发任务。这是一个重要的部分,因为对于每个步骤,技术主管都需要指定用户(现实世界的开发人员)如何检查任务是否完成(例如打开 localhost:3000 并执行某些操作)。
  7. 开发人员代理接受每项任务并写下实施该任务所需执行的操作。该描述采用人类可读的形式。
  8. 最后,程序猿代理获取开发人员的描述和现有文件并实施更改。我们意识到这比立即将其交给开发人员实施更改要有效得多。

有关 GPT Pilot 雇用的代理角色的更多详细信息,请查看AGENTS.md

gptpilot4

GPT Pilot 与开发人员GPT 工程师有何不同?

  • GPT Pilot 与开发人员合作创建一个完全可用于生产的应用程序 - 我认为人工智能无法(至少在不久的将来)在没有开发人员参与的情况下创建应用程序。因此,GPT Pilot会像开发人员在现实生活中一样逐步对应用程序进行编码。这样,它可以调试在整个开发过程中出现的问题。如果遇到问题,您(负责的开发人员)可以检查代码并解决问题。其他类似的工具一次性提供整个代码库 - 这种方式,对于人工智能和作为开发人员的您来说,修复错误要困难得多。
  • 大规模工作 - GPT Pilot 并不是为了创建简单的应用程序,而是为了让它可以在任何规模上工作。它具有过滤代码的机制,因此在每个 LLM 对话中,它不需要在上下文中存储整个代码库,但它只向 LLM 显示其正在处理的当前任务的相关代码。应用程序完成后,您可以通过编写有关要添加哪些功能的说明来继续开发它。

来自:https://github.com/Pythagora-io/gpt-pilot

更多文章

OpenVoice是一种多功能的即时语音克隆方法,只需要参考说话者的一个简短的音频剪辑即可复制他们的声音并生成多种语言的语音。

2024年1月8日 · AI
magicanimate
一种基于扩散的人体图像动画框架,旨在增强时间一致性、忠实地保留参考图像并提高动画保真度。
2024年1月4日 · 论文 AI 动画
shadcn-ui
一套设计精美的组件,您可以将其复制并粘贴到您的应用程序中,可定制。
2024年1月3日 · UI 前端
movie-web
一个用于观看电影和节目的小型网络应用程序。
2024年1月3日 · 视频