🧑✈️ GPT PILOT 🧑✈️
GPT Pilot 不仅仅生成代码,它还构建应用程序!
GPT Pilot 是 Pythagora VS Code 扩展 的核心技术,旨在提供第一个真正的AI开发者伙伴。不仅仅是自动补全或PR消息助手,而是一个真正的AI开发者,可以编写完整的功能,调试,与你讨论问题,请求审查等。
📫 如果你希望获取未来发布的更新,或只是想联系我们,请加入我们的Discord 服务器或者你可以在这里添加你的电子邮件。📬
- 🔌 系统要求
- 🚦如何开始使用 gpt-pilot?
- 🔎 示例
- 🐳 如何在docker中启动gpt-pilot?
- 🧑💻️ CLI 参数
- 🏗 GPT Pilot 如何工作?
- 🕴 GPT Pilot 与 Smol developer 和 GPT engineer 有何不同?
- 🍻 贡献
- 🔗 联系我们
- 🌟 Star 历史
GPT Pilot 的目标是研究大型语言模型在多大程度上可以用于生成完全可用的生产级应用程序,同时开发者监督实施。
主要想法是AI可以为应用程序编写大部分代码(可能是95%),但剩下的5%,需要开发者,直到我们实现完全的通用人工智能。
如果你对我们在这个项目中的学习感兴趣,可以查看我们最新的博客文章。
🔌 系统要求
- Python 3.9+
🚦如何开始使用 gpt-pilot?
👉 如果你使用 VS Code 作为你的IDE,最简单的开始方式是下载 GPT Pilot VS Code 扩展。👈
否则,你可以使用CLI工具。
如果你是GPT Pilot的新用户:
在安装了Python和(可选的)PostgreSQL后,请按以下步骤操作:
git clone https://github.com/Pythagora-io/gpt-pilot.git
(克隆仓库)cd gpt-pilot
(进入仓库文件夹)python3 -m venv venv
(创建虚拟环境)source venv/bin/activate
(在Windows上使用venv\Scripts\activate
) (激活虚拟环境)pip install -r requirements.txt
(安装依赖)cp example-config.json config.json
(创建config.json
文件)- 在
config.json
文件中设置你的密钥和其他设置:- LLM 提供商(
openai
、anthropic
或groq
)密钥和端点(保留null
为默认设置)(注意,Azure和OpenRouter通过openai
设置支持) - 你的API密钥(如果为
null
,将从环境变量中读取) - 数据库设置:默认使用sqlite,也支持PostgreSQL
- 可选更新
fs.ignore_paths
,并添加不应由GPT Pilot跟踪的文件或文件夹,适用于忽略由编译器创建的文件夹
- LLM 提供商(
python main.py
(启动 GPT Pilot)
所有生成的代码将存储在 workspace
文件夹中,该文件夹位于你启动 pilot 时输入的应用程序名称命名的文件夹内。
如果你正在从 GPT Pilot v0.1 升级
假设你已经有一个早期版本的git仓库:
git pull
(更新仓库)source pilot-env/bin/activate
(在Windows上使用pilot-env\Scripts\activate
) (激活虚拟环境)pip install -r requirements.txt
(安装新依赖)python main.py --import-v0 pilot/gpt-pilot
(这将导入你的设置和现有项目)
这将创建一个新的数据库 pythagora.db
并导入所有来自旧数据库的应用程序。对于每个应用程序,
它将导入你正在处理的最新任务的开始部分。
要验证导入是否成功,可以运行 python main.py --list
查看你已创建的所有应用程序,
并检查 config.json
以确保设置已正确转换为新配置文件格式(并根据需要进行调整)。
🔎 示例
点击这里查看所有使用 GPT Pilot 创建的示例应用。
🐳 如何在 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
。 - 通过
7681
端口访问 Web 终端。 - 运行
python main.py
(启动 GPT Pilot)。
这将启动两个容器,一个是通过 Dockerfile
构建的新镜像,另一个是 Postgres 数据库。新镜像中还安装了 ttyd,以便你可以轻松地与 gpt-pilot 互动。镜像中还安装了 Node 并暴露了 3000 端口。
PostgreSQL 支持
GPT Pilot 默认使用内置的 SQLite 数据库。如果你想使用 PostgreSQL 数据库,需要额外安装 asyncpg
和 psycopg2
包:
pip install asyncpg psycopg2
然后,你需要更新 config.json
文件,将 db.url
设置为 postgresql+asyncpg://<user>:<password>@<db-host>/<db-name>
。
🧑💻️ CLI 参数
列出已创建的项目(应用)
python main.py --list
注意:对于每个项目(应用),它还列出了“分支”。目前我们只支持一个分支(称为“main”),未来我们计划增加对多个项目分支的支持。
从项目(应用)的最新步骤加载并继续
python main.py --project <app_id>
从项目(应用)的特定步骤加载并继续
python main.py --project <app_id> --step <step>
警告:这将删除指定步骤后的所有进度!
删除项目(应用)
python main.py --delete <app_id>
删除指定 app_id
的项目。警告:此操作无法撤销!
从 v0.1 导入项目
python main.py --import-v0 <path>
这将从旧版 GPT Pilot v0.1 数据库导入项目。路径应为旧版 GPT Pilot v0.1 数据库的路径。对于每个项目,它将导入你正在进行的最新任务的起始步骤。如果项目已导入,导入过程将跳过它(不会覆盖数据库中的项目)。
其他命令行选项
还有其他几个命令行选项,主要用于从我们的 VSCode 扩展调用 GPT Pilot。要查看所有可用选项,请使用 --help
标志:
python main.py --help
🏗 GPT Pilot 如何工作?
以下是 GPT Pilot 创建应用程序的步骤:
- 输入应用名称和描述。
- 产品负责人代理 就像在现实生活中一样,什么也不做。:)
- 规范编写代理 如果项目描述不够详细,会提出几个问题以更好地理解需求。
- 架构师代理 编写将用于应用的技术,并检查机器上是否已安装所有技术,如未安装则会安装。
- 技术主管代理 编写开发者必须实现的开发任务。
- 开发者代理 逐一完成每个任务,并编写实施所需的内容。描述是人类可读的形式。
- 代码猴子代理 根据开发者的描述和现有文件实现更改。
- 审查员代理 审查任务的每一步,如果有错误,审查员会将其返回给代码猴子。
- 故障排除代理 在出现问题时帮助你向 GPT Pilot 提供良好的反馈。
- 调试代理 不想见到他,但他是你出问题时最好的朋友。
- 技术文档编写代理 为项目编写文档。
🕴GPT Pilot 与 Smol developer 和 GPT engineer 有何不同?
- GPT Pilot 与开发者合作创建完全可投入生产的应用 - 我认为 AI(至少在不久的将来)无法在没有开发者参与的情况下创建应用。因此,GPT Pilot 会像现实中的开发者一样逐步编写代码。这样,它可以在开发过程中出现问题时进行调试。如果它遇到障碍,负责的开发者可以审查代码并修复问题。其他类似工具会一次性给出整个代码库——这样一来,AI 和你作为开发者都更难修复其中的错误。
- 支持大规模开发 - GPT Pilot 并非用于创建简单应用,而是可以支持任何规模的开发。它具有过滤代码的机制,因此在每次 LLM 对话中,它无需将整个代码库存储在上下文中,而是仅向 LLM 显示当前任务所需的相关代码。一旦应用完成,你可以通过编写指令继续开发,添加所需的功能。
🍻 贡献
如果你有兴趣为 GPT Pilot 做贡献,加入 我们的 Discord 服务器,查看开放的 GitHub 问题,看看是否有你感兴趣的内容。我们非常欢迎你帮助解决其中的任何问题。最好的开始方式是阅读上面提到的博客文章,以了解架构是如何工作的,然后再深入代码库。
🖥 开发
除了研究外,GPT Pilot 还需要调试以在不同场景下工作。例如,我们发现生成的代码质量对开发任务的大小非常敏感。当任务太宽泛时,代码中会有太多难以修复的错误,但当开发任务过于狭窄时,GPT 似乎也难以将任务实现到现有代码中。
📊 遥测
为了改进 GPT Pilot,我们正在跟踪一些事件,你可以随时选择退出。你可以在 这里 阅读更多相关内容。
🔗 与我们联系
🌟 作为一个开源工具,如果你能给 GPT-pilot 仓库加星标,我们将不胜感激 🌟
💬 加入 Discord 服务器 以取得联系。