随着拥有10万字上下文窗口的方式的出现,现在每个开发人员都有可能拥有自己的小型开发者。

作者:Sec-Labs | 发布时间:

项目地址

https://github.com/smol-ai/developer

小型开发者

以人为本的、连贯的整体程序合成,也被称为你自己的个人初级开发者

构建构建工具! 为每个开发人员在各种情况下提供一个"小型开发者"(smol dev

这是一个"初级开发者"代理(即"小型开发者")的原型,一旦你提供产品规范,它就能为你搭建整个代码库,但它不会结束世界,也不会过度承诺通用人工智能。与创建和维护特定、僵化、一次性的启动器(如create-react-appcreate-nextjs-app)不同,这基本上是一个create-anything-app,你可以与你的小型开发者一起紧密地开发脚手架提示。

有用、无害和诚实的人工智能与简单、安全和精简的代码库相辅相成 - 不到200行的Python代码和提示,因此易于理解和自定义。

ad1a1b7183101213

以提示为基础进行工程化,而不是基于提示的工程

prompt.md中的演示示例展示了基于人类开发者的工作流程的潜力:

  • 人类编写一个关于他们想要构建的应用程序的基本提示

  • main.py生成代码

  • 人类运行/阅读代码

  • 人类可以:

    • 在发现提示中未明确说明的部分时,简单地添加到提示中

    • 手动运行代码并识别错误

    • 将错误粘贴到提示中,就像提交 GitHub 问题一样

    • 为了获得额外的帮助,他们可以使用debugger.py,它会读取整个代码

    • 库并提出具体的代码更改建议

      循环直到达到满意的结果。请注意,只有在人工智能能够添加价值的情况下才使用它 - 一旦它妨碍你,只需轻松地接管来自你的小型初级开发者的代码库,没有任何麻烦或伤害感。(我们也可以让小型开发者接管现有的代码库并启动自己的提示... 但这是一个未来的方向

      不是无代码,不是低代码,而是某种第三种方式。

      也许这是编程的更高级演变,你仍然需要具备技术性,但不再需要至少实现每个细节以搭建框架。

视频演示

https://i3.ytimg.com/vi/UCo7YeTy-aE/hqdefault.jpg

架构图

使用GPT4自然生成,就像我们为babyagi所做的那样

 

ad1a1b7183103715

创新和见解

请订阅 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中的提示生成的(图片除外),并通过逐步添加更多单词到提示中的迭代过程逐渐构建起来的。

    Smol Dev使用指南

    基础使用

    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.js

    Smol调试器使用指南

    获取生成目录的全部内容作为上下文,输入一个错误,得到一个响应。这基本上利用了更长的(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 PM使用指南

获取生成目录的全部内容作为上下文,并获得一个提示,该提示能够合成整个程序。基本上是smol dev的逆操作。

shellCopy codemodal run code2prompt.py # 大约0.5秒​# 使用gpt4modal run code2prompt.py --model=gpt-4 # 2分钟,结果明显更好

我们已经运行了两者的示例,存储在code2prompt-gpt3.mdcode2prompt-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.mdcontent_script.js.md等等

  • 为现有代码库

    引导

    prompt.md

    -编写一个脚本来读取代码库并编写一个描述性的、用点号分隔的提示,以生成代码库

    • smol pm已经实现了这个功能,但效果还不够好 - 希望有一些有针对性的改进/努力,直到我们拥有能够生成自身的quine小型开发者,哈哈哈

  • 能够安装自己的依赖项

  • 通过运行代码本身并使用错误信息进行重新提示,实现

    自我修复

    • 但是在Chrome扩展程序环境中很难获取错误信息,所以我们没有尝试这个功能

  • 使用Anthropic作为编码层

    • 您可以运行modal run anthropic.py --prompt prompt.md --outputdir=anthropic来尝试

    • 但是它不起作用,因为Anthropic对生成文件代码的指令遵循得不够好。

  • 创建能够自主运行此代码并循环/监视提示文件

    的代理程序,并在每次运行时在一个新的git分支上重新生成代码

    • 可以在5个同时运行的git分支上生成代码,并且检查它们的输出只需切换git分支即可完成

标签:工具分享