随着拥有10万字上下文窗口的方式的出现,现在每个开发人员都有可能拥有自己的小型开发者。
作者:Sec-Labs | 发布时间:
项目地址
https://github.com/smol-ai/developer
以人为本的、连贯的整体程序合成,也被称为你自己的个人初级开发者
为每个开发人员在各种情况下提供一个"小型开发者"(
smol dev)
这是一个"初级开发者"代理(即"小型开发者")的原型,一旦你提供产品规范,它就能为你搭建整个代码库,但它不会结束世界,也不会过度承诺通用人工智能。与创建和维护特定、僵化、一次性的启动器(如create-react-app或create-nextjs-app)不同,这基本上是一个,你可以与你的小型开发者一起紧密地开发脚手架提示。
有用、无害和诚实的人工智能与简单、安全和精简的代码库相辅相成 - 不到200行的Python代码和提示,因此易于理解和自定义。

以提示为基础进行工程化,而不是基于提示的工程
prompt.md中的演示示例展示了基于人类开发者的工作流程的潜力:
-
人类编写一个关于他们想要构建的应用程序的基本提示
-
main.py生成代码 -
人类运行/阅读代码
-
人类可以:
-
在发现提示中未明确说明的部分时,简单地添加到提示中
-
手动运行代码并识别错误
-
将错误粘贴到提示中,就像提交 GitHub 问题一样
-
为了获得额外的帮助,他们可以使用
debugger.py,它会读取整个代码 -
库并提出具体的代码更改建议
循环直到达到满意的结果。请注意,只有在人工智能能够添加价值的情况下才使用它 - 一旦它妨碍你,只需轻松地接管来自你的小型初级开发者的代码库,没有任何麻烦或伤害感。(我们也可以让小型开发者接管现有的代码库并启动自己的提示... 但这是一个未来的方向)
不是无代码,不是低代码,而是某种第三种方式。
-
视频演示
架构图
使用GPT4自然生成,就像我们为babyagi所做的那样

请订阅 https://latent.space/ 获取完整的文稿、见解和反思
-
只需使用Markdown
- Markdown是提示整体程序合成的完美方式,因为它可以轻松混合英文和代码(无论是
variable_names还是整个代码块)
-
结果证明,你可以在提示中的代码中指定提示,并且GPT4会完全遵守。
-
-
复制粘贴编程
-
通过将
curl输入和输出粘贴到程序中,教会程序如何围绕新的API进行编码(Anthropic的API在GPT3的知识截断之后) -
将错误消息粘贴到提示中,并模糊地告诉程序你希望如何处理。这有点像"基于日志的编程"。
-
-
通过
cat整个代码库进行调试,使用错误消息和获取特定的修复建议 - 特别令人愉快! -
整体程序连贯的技巧
- 我们选择的示例用例是Chrome扩展程序,它在文件之间有许多间接依赖关系。任何关于交叉依赖的错觉都会导致整个程序出错。
-
我们通过添加一个中间步骤,要求GPT在思考
shared_dependencies.md后使用它来生成每个文件。这基本上意味着GPT能够与自己交谈... -
...但它还不完美。
shared_dependencies.md有时在理解文件之间的硬依赖关系方面不够全面。所以我们通过在提示中指定一个特定的name
-
-
我们正在开发一个Chrome扩展程序,其中需要生成图像,因此我们在其中添加了一些特定用例的代码,以跳过销毁/重新生成图像的步骤,我们尚未决定如何泛化这部分代码。
我们没有使用GPT4-32k,但如果有的话,我们会尝试将整个API/SDK文档转储到上下文中。
目前反馈循环非常慢(
time显示使用GPT4生成程序大约需要2-4分钟,即使使用Modal进行并行化(偶尔会有更高的峰值)),但可以肯定的是,随着时间的推移,速度会提高(请参阅下面的"未来方向")。安装
基本上是
git clone,然后安装Python。将.example.env复制为.env,并填写您的API密钥。不幸的是,该项目还使用了3个等待名单中的东西:
-
modal.com(私人测试版 - 请联系Modal团队以获取邀请函并登录)
-
gpt4 api(私人测试版) - 可以使用3.5版本,但显然效果不会那么好
-
(对于演示项目)anthropic claude 100k context api(私人测试版)
是的,作为AI工程师最重要的技能之一就是社交工程,以脱离等待名单。如果您提到关键词"swyx",Modal将让您加入测试版。
如果您希望在其他基础设施上使用此代码,您将需要在分支上进行调整。请提交问题/拉取请求,我将愉快地在此处突出显示您的分支。
尝试示例Chrome扩展程序
/generated和/exampleChromeExtension文件夹中包含了一个Chrome Manifest V3扩展程序,它读取当前页面,并提供一个带有页面标题+内容和用于提示的文本区域的弹出窗口界面(我们指定了默认值)。当用户点击提交时,它会将页面标题+内容与最新的提示一起发送到Anthropic Claude API,以进行摘要。用户可以修改提示并重新发送提示+内容以获得内容的另一个摘要视图。-
在Chrome中进入"管理扩展程序"
-
加载已解压的扩展程序
-
在文件系统中找到相应的文件夹并加载它
-
打开任何内容丰富的网站
-
点击可爱的小鸟图标
-
观察它的工作
整个扩展程序都是根据
prompt.md基础使用
shellCopy codemodal run main.py --prompt "一个Chrome扩展,当点击时,打开一个小窗口,其中包含一个页面,您可以在此页面上输入提示,用于读取当前打开的页面并从openai生成一些响应"在您添加提示一段时间后,您可以将提示提取到文件中,只要您的"提示"以.md扩展名结束,我们就会去查找该文件。
shellCopy codemodal run main.py --prompt prompt.md每次运行此命令时,生成的目录都会被删除(图片除外),所有文件都将从头开始重写。
在
shared_dependencies.md文件中有一个辅助文件,确保文件之间的一致性。如果你对提示进行了微调,只想影响一个文件,保留其余文件,可以指定文件参数:
shellCopy codemodal run main.py --prompt prompt.md --file popup.jsSmol调试器使用指南
获取生成目录的全部内容作为上下文,输入一个错误,得到一个响应。这基本上利用了更长的(32k-100k)上下文,所以我们基本上不需要进行任何源代码的嵌入。
shellCopy codemodal run debugger.py --prompt "Uncaught (in promise) TypeError: Cannot destructure property 'pageTitle' of '(intermediate value)' as it is undefined. at init (popup.js:59:11)"# gpt4modal run debugger.py --prompt "your_error msg_here" --model=gpt-4 -
获取生成目录的全部内容作为上下文,并获得一个提示,该提示能够合成整个程序。基本上是smol dev的逆操作。
shellCopy codemodal run code2prompt.py # 大约0.5秒# 使用gpt4modal run code2prompt.py --model=gpt-4 # 2分钟,结果明显更好
我们已经运行了两者的示例,存储在code2prompt-gpt3.md和code2prompt-gpt4.md中。请注意,gpt4在提示其未来自身的工程设计方面的出色表现。
当然,我们不得不尝试code2prompt2code...
shellCopy code# 添加提示...这需要几次迭代才能正确modal run code2prompt.py --prompt "确保所有DOM元素的id,以及页面内容的数据结构(以{pageTitle, pageContent }存储),由js文件引用/共享的都完全匹配。请注意只使用Chrome Manifest V3 apis。将扩展重命名为code2prompt2code" --model=gpt-4 # 花费4分钟。根据模型生成的对不同代码库描述生成半工作的chrome扩展副本# 必须更深入modal run main.py --prompt code2prompt-gpt4.md --directory code2prompt2code
尝试的事项/愿意接受开放问题讨论和拉取请求:
-
为每个生成的文件指定.md文件
,并在每个文件中进一步指定提示,以调整其输出
-
类似于
popup.html.md和content_script.js.md等等
-
-
为现有代码库
引导
prompt.md-编写一个脚本来读取代码库并编写一个描述性的、用点号分隔的提示,以生成代码库
-
smol pm已经实现了这个功能,但效果还不够好 - 希望有一些有针对性的改进/努力,直到我们拥有能够生成自身的quine小型开发者,哈哈哈
-
-
能够安装自己的依赖项
-
这会依赖于执行环境,我们都知道这会导致依赖关系混乱。如何避免?使用Docker?Nix??
-
Modal有一个有趣的可能性:生成可以使用Modal语言的函数,这也解决了依赖关系的问题https://twitter.com/akshat_b/status/1658146096902811657
-
-
通过运行代码本身并使用错误信息进行重新提示,实现
自我修复
-
但是在Chrome扩展程序环境中很难获取错误信息,所以我们没有尝试这个功能
-
-
使用Anthropic作为编码层
-
您可以运行
modal run anthropic.py --prompt prompt.md --outputdir=anthropic来尝试 -
但是它不起作用,因为Anthropic对生成文件代码的指令遵循得不够好。
-
-
创建能够自主运行此代码并循环/监视提示文件
的代理程序,并在每次运行时在一个新的git分支上重新生成代码
-