开发人员监督实施时,用于从头开始编写生产的应用程序的可扩展开发工具的MVP
在这篇博客文章中,我将解释GPT Pilot背后的技术 - 一种使用GPT-4代码整个生产的应用程序的开发工具。
主要的前提是AI现在可以为应用程序编写大部分代码,甚至95%。
听起来很棒,对吧?
好吧,除非所有代码都完全有效,否则应用程序不会工作。,您如何实现这一目标?好吧,这篇文章是我研究项目的一部分,以查看AI是否真的可以完成95%的开发人员编码任务。我决定使用GPT-4来制作一个通过开发人员的监督编写可扩展应用程序的工具。
我将向您展示GPT飞行员的主要思想,其建立的关键概念以及其工作流程直到编码部分。
。
目前,它在早期阶段,只能创建简单的Web应用程序。尽管如此,我仍将介绍它如何大规模工作的整个概念,并证明AI可以执行的编码任务,而开发人员充当了负责监督整个开发过程的技术领导。
这是我创建的一些示例应用程序:
好吧,让我们潜水。
GPT飞行员如何工作?
首先,您输入要构建的应用程序的描述。然后,GPT Pilot与LLM(目前GPT-4)合作以阐明应用程序要求,最后,它写了代码。它使用许多模仿开发机构工作流程的AI代理。
-
描述应用程序后,产品所有者代理 '分解业务规格,并要求您解决任何不清楚的领域。
然后, -
,软件架构师代理分解了技术要求,并列出了将用于构建应用程序的技术。
-
然后, devops代理基于体系结构在机器上设置环境。
-
然后,技术团队负责人将应用程序开发过程分解为每个任务都需要具有的开发任务:
- 任务的描述â(这是开发人员稍后将创建代码的主要描述)
- 自动测试的描述 需要编写,以便GPT飞行员可以遵循TDD原则
- 对人类验证的描述,这基本上是您,人类开发人员可以检查任务是否成功实施的方式
-
最后,开发人员 - 代码猴子'代理人逐一执行任务并开始编码应用程序。开发人员将每个任务分解为较小的步骤,这是低级技术要求,可能不需要由人类审查或通过自动测试进行测试(例如,安装一些软件包)。
在下一篇博客文章中,我将更详细地详细介绍开发人员和代码猴子的工作方式(here's a sneak peek diagram显示了编码工作流程),但是现在,让我们看看构建GPT Pilot的主要支柱。
3 GPT飞行员的主要支柱
我称这些支柱是因为这是一个研究项目,所以我想让他们想起他们在GPT飞行员工作时。我想探索AI可以提高开发人员生产率的最多方法,因此我需要实现的所有进步来实现该目标,而不是创建简单,完全有效的应用程序但无法大规模运行的内容。
支柱#1。开发人员需要参与应用程序创建过程
正如我上面提到的,我认为我们仍然远离可以将其连接到CLI并自行工作以自己创建任何应用程序的LLM。但是,编写代码时,GPT-4的工作效果非常好。我一直在使用Chatgpt来加快开发过程 - 尤其是当我需要使用一些新技术或API或需要创建独立脚本时。我第一次意识到它的功能是在几个月前,当时我花了2个小时才能与Chatgpt创建Redis代理,通常需要20个小时才能从头开始发展。我写了一篇关于here的帖子。
因此,为了使AI生成一个完整的应用程序,我们需要允许其与监督开发过程并充当技术团队领导的开发人员紧密合作,而AI则编写了大多数代码。因此,开发人员需要随时更改代码,GPT Pilot需要继续使用这些更改(例如,如果AI被卡住,请添加API密钥或解决问题)。
这是开发人员可以干预开发过程的领域:
-
每个开发任务完成后,开发人员应对其进行审核并确保其工作原理(这是您通常会进行最新更改的点)
-
在每次失败的测试或命令运行 - - 开发人员可能会更容易调试某些内容(例如,如果保留机器上的端口,但生成的应用程序正在尝试尝试使用它 - 然后您需要硬编码其他端口)
-
如果AI无法访问外部服务 - 例如。如果您需要获取并在环境中添加API密钥
支柱#2。该应用需要逐步编码
假设您想创建一个简单的应用程序,并且您知道编码所需的所有内容并将整个体系结构都放在脑海中。即使那样,您也不会完全编码它,然后第一次运行它,然后一次调试 。取而代之的是,您将把应用程序开发分为较小的任务,实现一个(例如添加路由),运行它,调试,然后转到下一个任务。这样,您可以解决问题时解决问题。
在AI代码的情况下,也应该相同。
像人类一样,它会肯定会犯错误,因此要使它更轻松地调试,并且要使开发人员了解生成的代码中发生的事情,AI不应该一次吐出整个代码库。取而代之的是,应该像开发人员那样逐步生成并逐步调试应用程序 - 例如。设置路由,添加数据库连接等
其他代码生成器,例如SMOL开发人员和GPT Engineer,以您编写有关要构建的应用的提示的方式,他们尝试编码整个应用程序,并立即为您提供整个代码库。虽然AI很棒,但它仍然远离第一次尝试编码一个正常工作的应用程序,因此这些工具为您提供了很难进入的代码库,更重要的是,调试非常困难。
我认为,如果GPT Pilot逐步创建应用程序,AI和开发人员都可以更轻松地解决问题,整个开发过程将更加顺利地流动。
支柱#3。 GPT飞行员需要可扩展
GPT Pilot必须能够创建大型生产的应用程序,而不仅仅是在整个代码库都可以适合LLM上下文中的小应用程序上。问题在于,所有学习LLM都已完成的内容都是在中下文中完成的。也许有一天,每个特定项目可以微调LLM,但是现在,这似乎是一个非常缓慢而多余的过程。
GPT飞行员解决此问题的方式是上下文倒带,递归对话和 tdd 。
上下文倒带
上下文背后的想法相对简单 - 用于解决每个开发任务,向LLM的第一个消息的上下文大小必须相对相同。例如,实施开发任务5时,第一个LLM消息的上下文大小在开发任务50时必须与第一个消息或多或少相同。因此,对话需要在每个任务上回到第一个消息。
对于GPT飞行员以相同的方式解决任务#5和#50,它必须了解到目前为止编码的内容以及当前编写的所有代码背后的业务环境,以便它只能为目前正在求解而不是重写整个应用程序的任务。
我将在下一篇博客文章中更深入地研究这个概念,但是从本质上讲,当GPT Pilot创建代码时,它会为每个代码块 对每个文件和文件夹的描述 '需要创建。因此,当我们需要在单独的对话中实现每个任务时,我们将显示LLM当前文件夹/文件结构;它仅选择与当前任务相关的代码,然后,我们仅将该代码添加到原始对话中,以编写任务的实际实现。
递归对话
递归对话是与LLM的对话,以“递归”使用的方式设置。例如,如果GPT飞行员检测到错误,则需要调试它,但假设在调试过程中发生了另一个错误。然后,GPT Pilot需要停止调试第一个问题,修复第二期,然后重新解决第一个问题。我认为,这是一个至关重要的概念,我需要努力使AI构建大型且可扩展的应用程序。它通过倒带上下文并分别解释递归中的每个错误来起作用。一旦固定了最深的级别错误,我们就会在递归中移动并继续修复错误,直到整个递归完成为止。
TDD(测试驱动开发)
为了使GPT Pilot扩展代码库,改进它,更改要求并添加新功能,它需要能够创建新代码而无需破坏先前书面的代码。没有比使用TDD方法更好的方法了。对于GPT Pilot撰写的所有代码,它需要编写测试,以检查代码是否按预期工作,以便每当进行新的更改时,都可以运行所有回归测试以检查是否有任何断裂。
我将在下一篇博客文章中深入研究这三个概念,其中我将分解GPT Pilot的整个开发过程。
接下来
在第一篇博客文章中,我讨论了GPT Pilot的工作原理的高级概述。在帖子2和3中,我向您展示:
-
开发人员和代码猴子代理如何共同实现代码(编写新文件或更新现有文件)。
-
递归对话 context Rewinding 在实践中工作。
-
我们如何倒带应用程序开发过程并从任何开发步骤恢复。
-
所有代理如何结构化 - 您可能已经注意到,有GPT飞行员的代理商,现在有些可能是多余的,但是我认为这些代理会随着时间的推移而发展,所以我想在模块化的方式,就像常规代码一样。
但是,当您等待时,前往Github,Clone GPT Pilot repository,然后进行实验。让我知道您是否成功,而当您在那里,不要忘记出演仓库 - 对我来说意义重大。
感谢您阅读ð,我会在下一篇文章中见到您!
如果您有任何反馈或想法,请在评论中告诉我或通过zvonimir@pythagora.ai给我发送电子邮件,如果您想在下一个博客文章发布时获得通知,则可以add your email here。
。。