Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LLM就是框架,Agent就是应用,Workflow就是架构

LLM就是框架,Agent就是应用,Workflow就是架构

作者头像
否子戈
发布于 2024-04-12 08:59:58
发布于 2024-04-12 08:59:58
7000
举报
文章被收录于专栏:

很多人都在思考,LLM-based时代的应用应该怎么去开发。然而,时代的惯性会束缚我们的思维,就像iphone颠覆式出现一样,在它成为市场主流之前,我们根本想不出在手机屏幕上的软件会如此不同。这让我想到那句著名的论断,汽车出现之前,人们对交通工具的究极想象都是围绕马展开,给马带上昂贵的装备,给马车装上牛逼的助推器,而当汽车出现时,人们才恍然大悟,原来交通工具可以不需要马。AI时代的到来,新的iphone时刻,是否会改变人们使用信息技术的方式?人机的交互方式,还会永远和当下一样吗?计算机上的各种功能,将会以怎样的方式在我们的工作和生活中提供能力?本文将详细聊一聊这个话题。

LLM是基础设施

前段时间,英伟达发布了自己的本地大模型服务,购买它的显卡,可以直接在硬件上运行一个LLM。马斯克开源了迄今为止开源界参数最大的Grok,有人将它的源代码整理成一个可视化的3D模型,用以演示Grok的神经网络,人们发现Grok的架构如此复杂,层数如此之多,以完全超出现代工程的人力承受范围。大语言模型已经成为一种价格昂贵但唾手可得的基础设施。

去年大家都在讨论LLM的能力涌现,例如推理能力,当然,也无法避开它的幻觉。然而,今年,世界似乎已经发生了翻天覆地的变化。市场上的大模型应用越来越多,但目前来看,很多都是类Chat类应用,要说出现井喷式爆发,还为时尚早。

当然,现在仍然有非常多的人对LLM的理解还停留在ChatGPT的形式上,他们把大模型等同于和ChatGPT形式一模一样的聊天机器人。只有较少的人会把LLM理解为更底层的工具,它用以支撑和驱动新能力的开发,这类工具我们常常称为框架。简单讲,框架就是一系列工具的集合,以提升开发效率,让开发形成一种范式。而在AI领域做应用开发,在LLM之前有各种模式,现在LLM已经一统江湖,任何的AI应用,都可以用LLM来开发,这让我们的智能化应用(或者说需要智能化的功能)开发变得极为简单了。

举个例子,前几天,我在公众号 wwwtangshuangnet 中讲了自己利用AI来设计自己的DSL,里面除了借助chat来获得灵感外,另一个重要的点,就是直接利用LLM将自然语言生成DSL。

这在以前几乎是不可能的,也就意味着如果用户没有掌握平台定制的DSL,就无法使用某些功能,而在LLM成为基础设施之后,我们的开发更加贴近用户,更容易把用户的想法放到产品中去执行。而在这个过程中,我们甚至可以减少编程中间过程,因为现在很多大模型都有了直接执行代码的能力(functional calling)。这也代表着,必须一个字一个字准确编程的时代过去了,新的基于LLM的编程,可以在模糊的表达下完成编程过程,因此,也有人说,“面向对象”将会消失,“面向目标”将会爆发,以描述目标(而非机器执行)为编程内容的范式会逐渐兴起,这和SQL的设计极为相似,恰巧的是,有一个叫Chat2DB的项目,可以实现智能的数据查询和报表能力,直接用自然语言替代了SQL。

此外,LLM自身的封装性良好,这也就意味着,我们切换底层框架的灵活性大大提升。当我们发现更好更智能的LLM的时候,我们可以用非常小的代价切换底层设施到新的依赖上,这也使得我们的架构设计更加灵活,安全性更强,可持续迭代的能力更可靠。

Agent是AI时代的主角

之前的文章中,我有讲过,Agent作为AI时代功能搭建的基本单位,会出现真正的百花齐放。在移动互联网时代,APP是我们享受信息网络的入口,而到了AI时代,Agent就会替代APP,成为新时代的信息网络入口。

AI时代的核心使命,是极速的提升人们获取信息的效率和质量。人类获取信息的模式经历了很多次变革,从口口相传到结绳记事,从档案文书到信息管理,今天,我们将面临着走向知识管理的终极——智慧发掘。LLM-based AI把这种信息获取的难度拉的极低,以前我们要了解一个知识,需要从一部百科全书图书中去查找,效率和质量都很低,而在LLM的加持下,我们可能只需要10秒钟就可以获得高质量的知识内容。接下来的时代,我们需要把这一智能利用往前推一部,让人类突破信息传递的次元壁,能够让人类借助AI的力量,在有限的人类脑力前提下,获得最大程度的智力加持

过去,我们有一个说法,手机是人类身体长出来的第三器官。因为人类已经无法离开手机了,所以它就像器官一样被我们需要和使用。而我相信,AI会成为人类的第二大脑,同时,人类还会长出第四器官。作为第三器官,手机智能在虚拟层面帮助人们解决一些效率问题,作为第四器官,Agent将会借助各种硬件,直接在现实中增强人类的生理极限。过去,让人长出第三只手,或者让人长出一对翅膀,人类的大脑是无法承受的,过去通过脑电波的形式来实现人体外肢的实践,即使再过几十年也不会有大的进展。而在大模型加持下,自适应的外肢并不需要大脑的直接控制,而是可以由大模型为大脑的AI系统控制,与人体的其他系统协调工作,就像人的淋巴系统、内分泌系统一样,与大脑协同工作。

AI系统是由Agent作为最小单元分工协作构成的,我们需要井喷式的Agents来为我们的创意提供原材料,就像开放世界游戏一样,只有当能满足我们创意的原材料都具备的时候,我们才能快速实现它,而当下,Agent还是太匮乏。

我认为很多人把Agent的设计看的太过复杂,我认为Agent就是非常简单的输入输出模式,对于我们现有的很多功能,都是可以重新设计为Agent的,甚至有时候不一定需要LLM,只要它能按照某种Agent协议,实现输入输出接口,就可以被用到AI系统中,作为组成宏大目标的一部分。

这个图是我提出来的一种设计模式,感知Agent和行动Agent本身通过事件协议与中枢部分沟通,通过端口与外界的硬件、软件联系。一旦这种通用的协议形成共识,我们的Agent市场将会很快丰富起来。有了足够多的Agent,我们接下来要办的事,就是让这些Agent能够协同工作。

Agent Workflow会是终极吗?

工作流是串联一系列单元,使它们能够按照开发者目标完成动作的有效方式。这些工作单元,如果独立去看,可能与我们最终的目标相去甚远,但是我们通过工作流,把这些看上去相去甚远的单元组织在一起,有效的分配任务,就可以实现我们自己的目标。世界上很多事情都是这样,看上去相去甚远的部件,可能在系统中起着关键作用,就像制作钓鱼竿的碳纤维材料成为我国航天公关中的关键突破,就像我们平时写的代码分看来每个语法都平平无奇,组合在一起却功能强大。

对应到我们的编程中,Workflow就是架构,即用以实现我具体目标的整体AI工作系统,与构成该系统的Agent工作单元之间的交互、联系、调度等等。

前几天,我看到一则消息,国外某实验室正在尝试让AI训练AI。当我们允许AI在解决我们提出的具体需求时,且它自己认为自己无法满足该需求的情况,可以通过训练一个具有针对性的AI来解决该问题时,AI就实现了自举。当这一现象产生时,意味着真正的AGI时刻到来了。那么这里有个问题,AI训练AI是我们的设定,还是AI自己的决策呢?如果在我们的设计中,没有这种设计,AI是否有能力自己想到要去训练一个AI来解决具体问题?

所以,当我们去设计Agent工作流时,我们应该换一个角度,即每一个Agent都是一个举足轻重的角色,就像工作中的同事,如果屏蔽了具体形象,只要它能完成工作流中的环节任务,那么无论他有没有实体生命,都需要在工作中被平等看待。

上图是一种拟人化的Agent工作流设计,这种设计把Agent作为工作环节上的角色,完成特定工作内容。虽然这些角色可以由人来代替,但是我们现在是在讨论AI系统,我们作为用户,期望得到的是结果。

从上面的设计来看,AI系统本身并不具备自举的潜力,因为我们往往只会根据当下的业务需要来设计工作流。即使我们在工作流环节中,允许AI进行AI训练,也会是把AI训练交给具体的Agent来完成,而Agent本身并不是主动决策自己要进行AI训练,它更多的是承担“人力”而非“人才”的角色。至于整套系统来说,就更不存在自己训练AI的说法。(当然,我们并不排除有人就是要设计一个可以训练AI的AI系统,而且据我所知,现在头部的大厂们,确实就是在用AI来训练大模型。)

结语

本文从思考AI时代的人机交互形式出发,提出了AI时代的Agent等效于移动互联网时代的APP的观点。手机上的APP是软件,而Agent则不局限于软件,还可以是硬件等。过去我们比较关注代码实现,“面向对象”是最流行的编程范式。但在以LLM为基础设施的时代,我们可以大幅减少对代码实现的依赖,比如一些算法、提取、转化、分析等,一起我们可能需要写大段代码,甚至搭建一套系统来实现,而现在,基于LLM的能力,可以直接获得结果。目前来说,其实我们的LLM基础设施已经很强了,比较欠缺的是Agent,现在的Agent实在是太少了,想要构建AI系统,任何功能(Agent)都需要自己从0去造。当然,或许这也是机会。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 唐霜 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java异常处理机制
本文从Java异常最基本的概念、语法开始讲述了Java异常处理的基本知识,分析了Java异常体系结构,对比Spring的异常处理框 架,阐述了异常处理的基本原则。并且作者提出了自己处理一个大型应用系统异常的思想,并通过设计一个异常处理的框架来论述此思想。
用户7886150
2021/04/07
1.5K0
Java异常总结和Spring事务处理异常机制浅析
Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常,这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。
IT大咖说
2020/02/25
1.3K0
Java基础巩固——异常
  在Java程序运行时,常常会出现一些非正常的现象,这种情况称为运行错误。根据其性质可以分为错误和异常。
Janti
2018/08/01
4770
Java异常处理和设计
在程序设计中,进行异常处理是非常关键和重要的一部分。一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。试想一下,如果一个项目从头到尾没有考虑过异常处理,当程序出错从哪里寻找出错的根源?但是如果一个项目异常处理设计地过多,又会严重影响到代码质量以及程序的性能。因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。
Java团长
2018/08/07
6380
来了!令人头疼的 Java 异常面试总结
从结构图可以看出,所有异常均继承自 Throwable 类,它有两个重要的子类:Exception 和 Error ,各自又包含大量子类。
村雨遥
2021/07/07
6510
Java Exception
异常指不期而至的各种状况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通 过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件。当条件生成时,错误将引发异常。 Java异常类层次结构图:
conanma
2021/12/06
8840
Java基础——异常体系
在Java中,异常对象都是派生于Throwable类的一个实例,Java的异常体系如下图所示:    所有的异常都是由Throwable继承而来,在下一层立即分解为两个分支,Error和Excepti
mukekeheart
2018/02/27
7290
Java基础——异常体系
Java基础:Java异常机制
异常是程序运行过程中出现的错误。Java 把异常当作对象来处理,把异常信息封装成了一个类,并定义一个基类java.lang.Throwable作为所有异常的超类
栗筝i
2022/12/02
3350
java异常知识
error通常是灾难性的致命错误,是无法控制和处理的,当出现这些异常时,Java虚拟机一般会选择终止线程;Exception通常情况下是可以被程序处理的,并且程序中应该尽可能的去处理这些异常。
用户7043603
2022/02/23
5360
java异常处理
java把异常当作对象来处理,并定义了一个基类java.lang.Throwable作为所有异常的超类
秋落雨微凉
2022/10/25
5010
java异常处理
Java基础系列6:深入理解Java异常体系
该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架。
说故事的五公子
2019/11/15
6070
Java异常处理扫盲贴
Throwable类是Java语言所有错误或异常的超类(两个直接子类:Error和Exception)
全菜工程师小辉
2019/08/16
5330
Java异常处理扫盲贴
Java异常面试问题
异常是在程序执行期间可能发生的错误事件,并且会中断它的正常流程。异常可能来自不同类型的情况,例如用户输入的错误数据,硬件故障,网络连接故障等。
用户1257393
2018/09/30
1.1K0
Java异常是Java提供的一种识别及响应错误的一致性机制
Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。在有效使用异常的情况下,异常能清晰的回答what, where, why这3个问题:异常类型回答了“什么”被抛出,异常堆栈跟踪回答了“在哪“抛出,异常信息回答了“为什么“会抛出。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例。   Java异常机制用到的几个关键字:try、catch、finally、throw、throws。
用户7365393
2021/10/07
6680
Java的异常处理
1. Java 中异常分为哪些种类 按照异常需要处理的时机分为编译时异常(CheckedException)和运行时异常(RuntimeException)。只有java语言提供了Checked异常, Java 认为Checked异常都是可以被处理的异常,所以Java程序必须显式处理Checked异常。如果程序没有处理Checked异常,该程序在编译时就会发生错误无法编译。这体现了Java的设计哲学:没有完善错误处理的代码根本没有机会被执行。对Checked异常处理方法有两种: 1当前方法知道如何处理该异常,则用try…catch块来处理该异常。 2当前方法不知道如何处理,则在定义该方法是声明抛出该异常。 运行时异常只有当代码在运行时才发行的异常,编译时不需要try catch。Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所以由系统自动检测并将它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。
海拥
2021/08/23
7030
Java之异常处理
异常是程序中的一些错误,但并不是所有的错误都是异常,也就是在的程序中,不存在所谓的“异常”,只存在错误并且错误有时候是可以避免的。
用户5224393
2019/08/20
9800
Java之异常处理
Java异常面试题(2020最新版)
Java异常架构与异常关键字Java异常简介Java异常架构1. Throwable2. Error(错误)3. Exception(异常)运行时异常编译时异常
用户7886150
2020/12/18
8290
基础篇:深入解析JAVA异常
Java异常面试题: https://thinkwon.blog.csdn.net/article/details/104390689
潜行前行
2020/12/11
3990
基础篇:深入解析JAVA异常
Java的异常处理机制
java异常指在程序运行时可能出现的一些错误,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,中断了正在执行的程序的正常指令流。Java通过API中Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。
全栈程序员站长
2022/08/30
3890
Java的异常处理机制
Java异常Error和Exception的区别「建议收藏」
Exception 和 Error 都是继承了 Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。
全栈程序员站长
2022/09/14
2K0
Java异常Error和Exception的区别「建议收藏」
相关推荐
Java异常处理机制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档