全自然语言编程。
没有后端逻辑,全部交给大模型处理。
也没有前端渲染,全部实时生成。
也许这种感觉就像当年第一个www网站诞生时的感觉。我把它看做是一个Super Agent 应用的萌芽,ta会持续学习我们的使用习惯、思维逻辑,并与我们进行更自然的人机交互。
但今天更重要的是想和大家聊聊支撑这个super Agent的Software2.0架构,以及我们如何用Software2.0的思维来构建AI agent。
简单来说,Software2.0就是完全基于神经网络的软件。
2017年, OpenAI 创始人Karpathy 在博客中第一次提到Software2.0的概念,他说
People refer to neural networks as just “another tool in your machine learning toolbox”… Unfortunately, this interpretation completely misses the forest for the trees….they represent the beginning of a fundamental shift in how we develop software. They are Software 2.0.
在软件1.0,源代码是由程序员编写,这些源代码经过编译,最终转换成一个二进制文件,这个文件能够执行有用的工作。在软件2.0中,源代码就是数据集和神经网络,而数据集定义了神经网络的参数,也定义了期望的行为。
In Software 1.0, human-engineered source code (e.g. some .cpp files) is compiled into a binary that does useful work. In Software 2.0 most often the source code comprises 1) the dataset that defines the desirable behavior and 2) the neural net architecture that gives the rough skeleton of the code, but with many details (the weights) to be filled in.
原文:https://karpathy.medium.com/software-2-0-a64152b37c35
100% Fully Software 2.0 computer. Just a single neural net and no classical software at all.
如果把软件当做一个函数,在Software1.0时代,我们用if.. else.. 的规则来定义函数,比如if 红灯: then stop;else if 绿灯: then Go。在过去的几十年中,无数程序员在代码中定义了无数个类似的规则。
而在Software2.0 时代,所有的软件都拥有同一个结构,即神经网络。程序员们无需再在函数内部写逻辑,而是用一万个诸如“ red:Stop;green:Go” 这样的数据对喂养给软件,使ta自己能习得“红灯停,绿灯行”的认知,在这里,软件是被数据和神经网络定义,而不再是被代码规则定义。
这种范式的改变,衍生出以下一些零散的、不成框架的思考。
套用函数思维,我们可以把软件当做一个函数Y=F(x),如果想控制软件的输出值Y:
在Software1.0,我们通过更新代码完成。
在Software2.0,需要通过控制提示词和数据来完成。
提示词方法包括更新提示词的内容、形式、顺序,ta比我们想象中重要。
数据方法就是通过合理、有效的数据来改变参数,这便是微调。
如果你接纳或者选择跟随Software 2.0观点,那么构建数据集会变得非常重要。
对于Agent开发者来说,我们也多了一项控制Agent的方法,那就是通过构建面向Agent开发的数据集来提升Agent的专项能力。
而这三种形式的数据逐步让神经网络拥有了识别能力→对话能力→工作执行能力;
也对应着三种产品形态:识别式产品 → ChatBot对话类产 → Agent思考+执行类产品。
其中Agent workflow式的数据集是专为Agent而生,用Agent workflow式的微调称为”Agent tuning”。如果说Agent是比Chatbot更具想象力空间,那么Agent tuning在不久的将来也可能会成为提高Agent能力的主流手段之一,之所以说可能,是因为目前Agent tuning主要在学术界活跃,还没有什么实际应用(已经整理好的Agent tuning相关论文、代码、数据集等资料,公众号回复“Agent微调”即可获得飞书链接)。
那么Agent tuning的数据长什么样呢,我们把上图的数据样例理解一下:User 与 Assistant 之间产生了多轮对话,最后一次回答就是这组数据的标签。而这种对话正是遵循着Re-Act模式展开(什么是Re-Act模式参考产品经理研读:Agent的九种设计模式)。
数据集来自:https://huggingface.co/datasets/THUDM/AgentInstruct/viewer/default/webshop
实际上Agent workflow式的数据集里,每一组训练数据就是提示词中的one shot。当你有1000个类似的样本时,就可以把它作为训练数据集来微调模型。
那么,Agent tuning的效果如何呢?在查阅了相关的论文和开源项目后发现:
2. 然而,这样的小模型效果仍然比不上最好的大模型(GPT4o)
在我们的实践中,Agent tuning的效果也是忽上忽下,这一进程仍然在艰难的探索之中,只能说目前没有定论:按照Software 2.0的理论是正确的,但这往往需要时间来实证,也可能我们还没有找到正确的方法。
如果你或者你所在的企业恰好也在探讨这一块,欢迎评论区留言一起来聊一下。
最后附上已经整理好的Agent tuning相关论文、代码、数据集等资料,公众号回复“Agent微调”即可获得飞书链接,希望能为你的前沿探讨省点力。
好,今天就到这里了,如果觉得文章有用,就关注、转发、点赞、点在看、加星标。