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 工作流程
[第3/3部分]其他重要概念和未来计划(待完成)
要求
- Python 3.9+
- PostgreSQL(可选,默认数据库是SQLite)
- 需要数据库有多种原因,例如持续的应用程序开发。如果您必须在任何时候停止或应用程序崩溃,请返回到特定步骤,以便您可以更改开发中的一些后续步骤,并且更容易调试,将来我们将添加更新项目的功能(更改现有项目中的一些内容)或向项目添加新功能等)。
如何开始使用gpt-pilot?
如果您使用 VS Code 作为 IDE,最简单的方法是下载GPT Pilot VS Code 扩展。
或者,您可以使用 CLI 工具。
安装 Python 和(可选)PostgreSQL 后,请按照以下步骤操作:
git clone https://github.com/Pythagora-io/gpt-pilot.git
(克隆仓库)cd gpt-pilot
python -m venv pilot-env
(创建虚拟环境)source pilot-env/bin/activate
(或在 Windows 上执行pilot-env\Scripts\activate
)(激活虚拟环境)pip install -r requirements.txt
(安装依赖项)cd pilot
mv .env.example .env
(或在 Windows 上执行copy .env.example .env
)(创建 .env 文件)- 将您的环境添加到
.env
文件中:- LLM 提供商(OpenAI/Azure/Openrouter)
- 您的 API 密钥
- 数据库设置:SQLite/PostgreSQL(从SQLite更改为PostgreSQL,只需设置
DATABASE_TYPE=postgres
) - 可以选择为工作区中 GPT Pilot 不应跟踪的文件夹设置 IGNORE_FOLDERS,可用于忽略编译器创建的文件夹(即
IGNORE_FOLDERS=folder1,folder2,folder3
)
python db_init.py
(初始化数据库)python main.py
(启动 GPT pilot)
之后,您只需按照终端中的说明操作即可。
所有生成的代码将存储在workspace
子文件夹中。
如何在docker中启动gpt-pilot?
git clone https://github.com/Pythagora-io/gpt-pilot.git
(克隆仓库)- 更新
docker-compose.yml
环境变量,这可以通过docker compose config
命令。如果您想使用本地模型,请访问https://localai.io/basics/getting_started/。 - 默认情况下,GPT Pilot 将在您的计算机上读取和写入到
~/gpt-pilot-workspace
,您也可以在docker-compose.yml
配置中更改。 - 执行
docker compose build
。这将为您构建一个 gpt-pilot 容器。 - 执行
docker compose up
。 - 访问web终端
port 7681
python db_init.py
(初始化数据库)python main.py
(启动 GPT pilot)
这将启动两个容器,一个是由Dockerfile
构建的新镜像,另一个是 Postgres 数据库。新镜像还安装了ttyd,以便您可以轻松地与 gpt-pilot 交互。镜像上还安装了 Node,并且开启了端口 3000。
CLI 参数
app_type
和name
如果未提供,ProductOwner 将要求提供以下值:
app_type
用作向 LLM 提示适用哪种架构、语言选项和约定。如果没有提供,prompts.prompts.ask_for_app_type()
将要求提供。
请参阅const.common.APP_TYPES
:'Web App', 'Script', 'Mobile App', 'Chrome Extension'
app_id
和workspace
使用app_id
继续开发现有应用程序
python main.py app_id=<ID_OF_THE_APP>
或 workspace
路径:
python main.py workspace=<PATH_TO_PROJECT_WORKSPACE>
每个用户可以为每个应用程序使用独有的工作区路径。
user_id
,email
, 和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
python main.py theme=dark
delete_unrelated_steps
update_files_before_start
示例
以下是 GPT Pilot 自己创建的几个示例应用程序:
实时聊天应用程序
- 💬提示:
A simple chat app with real-time communication
- ▶️ 应用程序创建过程的视频
- 💻️ GitHub 仓库
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 创建应用程序所需的步骤:
- 您输入应用程序名称和说明。
- 产品负责人代理会问几个问题以更好地理解需求。
- 产品负责人代理编写用户故事并询问您它们是否都正确(这有助于它稍后创建代码)。
- 架构师代理编写将用于应用程序的技术。
- DevOps 代理检查计算机上是否安装了所有技术,如果没有则安装它们。
- 技术主管代理编写开发人员必须实施的开发任务。这是一个重要的部分,因为对于每个步骤,技术主管都需要指定用户(现实世界的开发人员)如何检查任务是否完成(例如打开 localhost:3000 并执行某些操作)。
- 开发人员代理接受每项任务并写下实施该任务所需执行的操作。该描述采用人类可读的形式。
- 最后,程序猿代理获取开发人员的描述和现有文件并实施更改。我们意识到这比立即将其交给开发人员实施更改要有效得多。
有关 GPT Pilot 雇用的代理角色的更多详细信息,请查看AGENTS.md
GPT Pilot 与开发人员和GPT 工程师有何不同?
- GPT Pilot 与开发人员合作创建一个完全可用于生产的应用程序 - 我认为人工智能无法(至少在不久的将来)在没有开发人员参与的情况下创建应用程序。因此,GPT Pilot会像开发人员在现实生活中一样逐步对应用程序进行编码。这样,它可以调试在整个开发过程中出现的问题。如果遇到问题,您(负责的开发人员)可以检查代码并解决问题。其他类似的工具一次性提供整个代码库 - 这种方式,对于人工智能和作为开发人员的您来说,修复错误要困难得多。
- 大规模工作 - GPT Pilot 并不是为了创建简单的应用程序,而是为了让它可以在任何规模上工作。它具有过滤代码的机制,因此在每个 LLM 对话中,它不需要在上下文中存储整个代码库,但它只向 LLM 显示其正在处理的当前任务的相关代码。应用程序完成后,您可以通过编写有关要添加哪些功能的说明来继续开发它。