gpt-pilot - 可扩展开发工具的 PoC,该工具从头开始编写整个应用程序,同时开发人员监督实施

Created at: 2023-08-16 19:56:07
Language: Python
License: MIT

🧑 ✈️ GPT试点

毕达哥拉斯-io%2Fgpt-pilot |趋势转变

GPT Pilot 是一个真正的 AI 开发人员,可以编写代码、调试代码、在需要帮助时与你交谈等。

你可以指定要构建的应用类型。然后,GPT Pilot 提出澄清问题,创建产品和技术要求,设置环境,并像在现实生活中一样逐步开始对应用程序进行编码,同时你监督开发过程。它要求你查看它完成的每项任务,或者在遇到困难时提供帮助。这样,GPT Pilot 就充当编码员,而你是审查代码并在需要时提供帮助的首席开发人员。


毕达哥拉斯-io%2Fgpt-pilot |趋势转变

GPT Pilot 是 VS Code 扩展的核心技术,旨在提供第一个真正的 AI 开发人员伴侣。不仅仅是一个自动完成或公关消息的助手,而是一个真正的人工智能开发人员,可以编写完整的功能,调试它们,与你讨论问题,要求审查等。


📫 如果你想获得有关未来版本的更新或只是取得联系,你可以在此处添加你的电子邮件。📬



GPT Pilot 旨在研究在开发人员监督实施的同时,可以利用多少 GPT-4 来生成完全正常工作的生产就绪应用程序。

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

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

[第 1/3 部分]高级概念 + GPT Pilot 工作流程,直到编码部分

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

[第 3/3 部分]其他重要概念和未来计划(即将到来)



https://github.com/Pythagora-io/gpt-pilot/assets/10895136/0495631b-511e-451b-93d5-8a42acf22d3d

🔌 要求

  • 蟒蛇 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 上)(创建 .env 文件)
    copy .env.example .env
  8. 将环境添加到文件:
    .env
    • LLM 提供程序 (OpenAI/Azure/Openrouter)
    • 你的 API 密钥
    • 数据库设置:SQLite/PostgreSQL(要从 SQLite 更改为 PostgreSQL,只需将
      DATABASE_TYPE=postgres
      )
    • (可选)为不应在工作区中由 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. 更新环境变量,这可以通过 完成。如果你想使用本地模型,请转到 https://localai.io/basics/getting_started/
    docker-compose.yml
    docker compose config
  3. 默认情况下,GPT Pilot 将在你的计算机上读取和写入,你也可以在
    ~/gpt-pilot-workspace
    docker-compose.yml
  4. 跑。这将为你构建一个 gpt-pilot 容器。
    docker compose build
  5. 跑。
    docker compose up
  6. 访问 web 终端
    port 7681
  7. python db_init.py
    (初始化数据库)
  8. python main.py
    (启动 GPT Pilot)

这将启动两个容器,一个是由 构建的新映像,另一个是 Postgres 数据库。新映像还安装了 ttyd,以便你可以轻松地与 gpt-pilot 进行交互。节点也安装在映像上,并且端口 3000 公开。

Dockerfile

🧑 💻️ CLI 参数

app_type
name

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

app_type
用作对 LLM 的提示,说明将适用什么样的架构、语言选项和约定。如果没有提供,将要求它。
prompts.prompts.ask_for_app_type()

请参阅:“Web 应用程序”、“脚本”、“移动应用程序”、“Chrome 扩展程序”

const.common.APP_TYPES

app_id
workspace

继续使用 app_id 处理现有应用

python main.py app_id=<ID_OF_THE_APP>

工作区路径:

python main.py workspace=<PATH_TO_PROJECT_WORKSPACE>

每个用户都可以为每个应用程序拥有自己的工作区路径。

user_id
email
password

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

python main.py user_id=me_at_work

如果未指定,则默认为 OS 用户名,但如果 OS 用户名与 GitHub 或工作用户名不同,则可以显式提供。此值用于在提供 arg 时加载配置。

user_id
App
workspace

如果未指定,则从文件存在时进行解析。

email
~/.gitconfig

参见 arguments.password / User.password 的目的是什么?

advanced

默认情况下,架构师支持某些技术,包括:

  • 节点.JS
  • MongoDB数据库
  • PeeWee ORM
  • Jest 和 PyUnit
  • 启动
  • Vanilla JavaScript
  • Socket.io

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

python main.py advanced=True

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>

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

step

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

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

theme

python main.py theme=light

屏幕截图 2023-10-15 103907

python main.py theme=dark
  • 深色模式。屏幕截图 2023-10-15 104120

delete_unrelated_steps

update_files_before_start

🔎 例子

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

📱 实时聊天应用程序

📝 Markdown 编辑器

  • 💬 提示:
    Build a simple markdown editor using HTML, CSS, and JavaScript. Allow users to input markdown text and display the formatted output in real-time.
  • ▶️ 应用创建过程的视频
  • 💻️ GitHub 存储库

⏱️ 计时器应用

  • 💬 提示:
    Create a simple timer app using HTML, CSS, and JavaScript that allows users to set a countdown timer and receive an alert when the time is up.
  • ▶️ 应用创建过程的视频
  • 💻️ GitHub 存储库

🏗 GPT Pilot 如何工作?

以下是 GPT Pilot 创建应用的步骤:

GPT Pilot 工作流程

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

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

GPT 试点编码工作流程


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

  • GPT Pilot 与开发人员合作创建一个完全可用的生产就绪应用程序——我认为 AI 不能(至少在不久的将来)在没有开发人员参与的情况下创建应用程序。因此,GPT Pilot 可以像开发人员在现实生活中一样逐步对应用程序进行编码。这样,它可以在整个开发过程中出现问题时对其进行调试。如果它卡住了,你(负责的开发人员)可以查看代码并解决问题。其他类似的工具可以一次为你提供整个代码库 - 这样,对于 AI 和开发人员来说,错误更难修复。

  • 大规模工作 - GPT Pilot 并不意味着创建简单的应用程序,而是它可以在任何规模下工作。它具有过滤掉代码的机制,因此在每个 LLM 对话中,它不需要将整个代码库存储在上下文中,但它只向 LLM 显示它正在处理的当前任务的相关代码。应用程序完成后,你可以通过编写有关要添加的功能的说明来继续使用它。

🍻 贡献

如果你有兴趣为 GPT Pilot 做出贡献,我非常乐意让你加入并帮助你入门。请随时 ping zvonimir@pythagora.ai,我将帮助你入门。

🔬️ 研究

由于这是一个研究项目,因此在实践和理论层面上都需要研究许多领域。我们很高兴听到如何改进整个 GPT Pilot 概念。例如,如果我们以不同的方式构建功能需求,或者可能需要以不同的方式指定技术需求,也许效果会更好。

🖥 发展

除了研究之外,GPT Pilot 还需要调试才能在不同的场景中工作。例如,我们意识到生成的代码的质量对开发任务的大小非常敏感。当任务太宽时,代码有太多难以修复的错误,但当开发任务太窄时,GPT 似乎也很难将任务实现到现有代码中。

📊 遥测

为了改进 GPT Pilot,我们正在跟踪一些事件,你可以随时选择退出。你可以在这里阅读更多关于它的信息。

🔗 联系我们

🌟 作为一个开源工具,如果你给 GPT-pilot repo 🌟 加星标,它对我们来说意味着世界

💬 加入 Discord 服务器以取得联系。

🌟 明星历史

星史图