智能体(Agent)和工作流(Workflow)的区别主要体现在以下几个方面:
在实际应用中,工作流的灵活性和可控性能够将智能体能力的天花板往上顶一大截,例如可以在流程中加入人类 Knowhow、进行专家测试试跑、引入图的概念灵活组织节点等。评价一个 Agent 平台好不好用,可以从基座模型的 function calling 能力、workflow 的灵活性以及平台创作者的 workflow 编写水平等方面考量。
原文地址:[Building effective agents](https://www.anthropic.com/research/building-effective-agents)本文为上文的译文(包括图片汉化)过去一年,我们与多个行业的团队合作,协助他们构建大语言模型(Large Language Model,LLM)智能体。我们发现,最成功的实践并非依赖复杂的框架或专门的代码库,而是采用简单、可组合的模式。本文将分享我们通过与客户合作以及自主构建智能体所获得的经验,并为开发者提供实用的建议。[heading3]什么是智能体?[content]"智能体"(Agent)可以有多种定义。一些客户将智能体定义为能够长期独立运行的全自动系统,它们可以使用各种工具来完成复杂任务。另一些则用这个术语描述更具规范性的实现,即遵循预定义工作流程的系统。在Anthropic,我们将这些变体统称为智能系统(Agentic Systems),但在架构上区分为工作流(Workflows)和智能体(Agents)两种类型:工作流是通过预定义代码路径来编排LLM和工具的系统。智能体则是由LLM动态指导自身流程和工具使用的系统,能够自主控制任务完成方式。下文将详细探讨这两种智能系统。在附录1("智能体的实践应用")中,我们将介绍客户在使用这类系统时发现特别有价值的两个领域。
Coze的Workflow为我们制作Agents/Bots提供很大的灵活性和便捷性。理论上,很多研究论文里面的提示词工程技术都可以通过Workflow实现,然后嵌入到Bot里,快速设计出一个产品。Dr.Know就是一个很好的例子。Workflow是什么?我们再回看一下Dr.Know使用的这个Workflow。这个Workflow里每个组块都可以看成是一个函数,这里面混杂了三类函数:一类是传统函数,像FormatRetrievedResults和GetUserLanguage都可以归为这一类;第二类是调用第三方服务的函数,如SearchWebWithGoogle;第三类程序是基于LLM的函数,如GenerateQueryResponse。我们可以把前一类叫作原生函数(Native Function),第二类叫作远端函数(Remote Function),第三类叫作语义函数(Semantic Function)。原生函数和远端函数是传统程序的基本组块,语义函数则是在LLM诞生之后才有的。这里我们使用了“函数”这个概念对LLM-based的程序做了概括,但是我们应该都清楚语义函数与传统函数在形式和功能上都有根本差异:形式上,它是用自然语言编写的程序;功能上,它可以模拟人的高阶思维,而不仅仅是做一些流程性的操作。既然如此,那么由这三类函数组合而成的Workflow也完全不同于传统函数,我把它们称作超函数(Hyperfuction)。
上图分别是Coze和Dify的workflow可视化编排页面(框架:React Flow),不得不说Coze的确不是最早做编排的,但是集各家之所长,在用户体验上做的的确得人心。再回过头对比一下上节中AutoGPT的实现,我们可能就发现了这个差异:AutoGPT的任务是大模型编排出来的,我们可以理解为自动编排;而Workflow里面的子任务,是我们人为编排的,我们就称为手动编排吧。由此带来的优化也非常明显:1.在流程中加入人类Knowhow,补足模型知识的不足;2.专家测试试跑,减少生产环境中的反复无效反思,至少不会让用户觉得你的Agent真蠢;3.引入图的概念,灵活组织节点,连接各类工具(让你的Agent看起来很牛逼)其实加入了图的概念之后,workflow的天花板也就变得非常高了。因为你可以在这个流程中去任意增加节点,增加各种类型的节点,不仅能套工具,还能套其它agent,你也可以写代码用硬逻辑去处理,你也可以接大模型,让它代替人类进进行判断。能力的上限,很大概率就是你想象力的上限。灵活和可控,把Agent能力的天花板往上顶了一大截。这就是workflow的功劳。我之前评价一个Agent平台好不好用:1看基座模型的function calling能力,2看workflow的灵活性,3看平台创作者的workflow写的牛逼不牛逼哈哈1、2看的是技术能力,其实也没啥门槛