声明:本文来自于微信公众号 新智元(ID:AI_era),作者:新智元,授权站长之家转载发布。
【新智元导读】开发者的效率倍增工具来了。AI开发者伴侣GPT Pilot可以让95%的开发者实现自动编码。
又一个明星项目诞生了!
GPT Pilot,一个AI开发者伴侣,可以从0开始构建应用程序,可以自己编写代码、配置开发环境、管理开发任务、调试代码。
甚至,你可以随时和它聊天提问,帮你解决开发难题。
项目体验网址:https://top.aibase.com/tool/gpt-pilot
发布三个月,Github的热度不断增加,现在已经有19k星。
代码开发,95%交给AI
在项目主页的介绍中,GPT Pilot的目的是研究在开发人员监督实施的同时,GPT-4可在多大程度上用于生成可完全正常运行、可投入生产的应用程序。
主要的想法是,人工智能可以为应用程序编写大部分代码(可能是95%),但对于其余的5%,在我们获得完整的AGI之前,现在和将来都需要开发人员。
那么它是具体如何工作的呢?开发者在一篇文章中具体介绍GPT Pilot工作流程。
GPT Pilot工作流程
首先,你需要输入想要构建的应用程序的描述。
然后,GPT Pilot与GPT-4合作,明确应用程序的要求,最后编写代码。它使用许多人工智能智能体,模仿开发机构的工作流程。
- 在您描述完应用程序后,「产品负责人」智能体会分解业务规格,并向你提问,以澄清任何不清楚的地方。
- 然后,「软件架构师」智能体分解技术要求,并列出将用于构建应用程序的技术。
- DevOps智能体根据体系结构在机器上配置环境。
- 「技术团队首席」智能体将应用程序开发流程分解为开发任务,每个任务需要具备:
最后,开发人员和Code Monkey智能体一个接一个地处理任务,开始编写应用程序。
开发人员将每个任务分解为较小的步骤,这些步骤是较低级别的技术要求,可能不需要人工审查或使用自动测试(如安装一些程序包)。
GPT Pilot三大支柱
支柱1:开发人员需要参与应用程序的创建过程
当前,我们离可以连接到CLI,并自行创建任何应用程序的LLM还很遥远。
因此,为了让AI生成一个完全正常工作的应用程序,我们需要允许它与负责监督开发过程的开发人员密切合作,并在AI编写大部分代码的同时担任技术团队负责人。
因此,开发人员需要能够随时更改代码,而GPT Pilot需要继续处理这些更改。
以下是开发人员可以干预开发过程的领域:
在每个开发任务完成后,开发人员应该检查它并确保它按预期工作。
在每次失败的测试或命令运行之后-开发人员可能更容易调试一些东西。
支柱2:应用程序需要一步一步地进行编码
和人类一样,AI编码肯定会犯错误,所以为了让它更容易地进行调试,并让开发人员了解生成的代码中发生了什么,AI不应该只是一次吐出整个代码库。
相反,应用程序应该像开发人员一样一步一步地生成和调试。
如果GPT Pilot一步一步地创建一款应用程序,人工智能和监督它的开发人员都将能够更容易地解决问题,整个开发过程也将更加顺利。
支柱3:GPT Pilot需要具有可扩展性
GPT Pilot必须能够创建可投入生产的大型应用程序,而不仅仅是小型应用程序,在小型应用程序中,整个代码库都可以融入LLM环境。
问题是,LLM 的所有学习都是在上下文中完成的。也许有一天,LLM可以针对每个具体项目进行微调,但现在看来,这将是一个非常缓慢和冗余的过程。
GPT Pilot解决这个问题的方式是使用上下文回溯(context rewinding)、递归对话和TDD。
上下文回溯
上下文回溯背后的想法相对简单,对于解决每个开发任务,给LLM发送的第一条消息的上下文大小必须相对相同。
例如,在实现开发任务#5时,大模型的第一条信息上下文大小必须与开发任务#50时的第一条信息大致相同。
因此,在执行每项任务时,对话都需要回溯到第一条信息。
从本质上讲,当GPT Pilot创建代码时,它会为编写的每个代码块生成伪代码,并为它需要创建的每个文件和文件夹创建描述。
递归对话
递归对话是与LLM的对话,如果GPT Pilot检测到一个错误,它需要对其进行调试,但假设在调试过程中发生了另一个错误。
然后,GPT Pilot需要停止调试第一个问题,修复第二个问题,然后重新开始修复第一个问题。
开发者认为,这是一个关键的概念,需要努力让人工智能构建大型且可扩展的应用程序。它的工作原理是回溯上下文,并分别解释递归中的每个错误。
一旦修复了最深层的错误,我们就在递归中向上移动,并继续修复错误,直到整个递归完成。
TDD(测试驱动开发)
GPT Pilot要扩展代码库、改进代码库、更改需求和添加新功能,它需要能够在不破坏以前编写的代码的情况下创建新代码。
没有比使用TDD方法更好的方法了。
对于GPT Pilot编写的所有代码,它需要编写检查代码是否按预期工作的测试,以便无论何时进行新的更改,都可以运行所有回归测试,以检查是否有任何故障。
【查看完整讨论话题】 | 【用户登录】 | 【用户注册】