AI Agent核心:Agent vs 传统编程 vs 工作流

AI Agent的核心在于AI自主决策,与传统编程和Workflow相比,更灵活,维护成本更低,用户体验更好。

原文标题:AI Agent系列|深入了解智能体工作流核心:Agent vs 传统编程 vs Workflow 的本质区别

原文作者:阿里云开发者

冷月清谈:

本文深入探讨了AI Agent与传统编程、Workflow工作流的本质区别,指出Agent的核心在于AI能够自主决策,而非像传统编程和Workflow那样由人预先设定逻辑或流程。传统编程需要开发者具备专业的编程技能,Workflow通过图形化界面降低了门槛,但两者都难以应对不确定性和复杂场景。Agent通过自然语言驱动,能够动态调整策略完成任务,降低了开发和维护成本,并为用户带来全新的交互体验。文章还对比了三种方式在开发所需技能、任务完成方式和维护成本上的差异,并分析了各自适用的场景,强调Agent更适合需要处理不确定性、快速迭代和非技术人员参与的创新型产品。

怜星夜思:

1、Agent的决策能力完全依赖于AI和Prompt,那如何保证Agent在复杂场景下的决策是可靠和符合预期的?有没有一些最佳实践来控制Agent的行为?
2、文章提到Agent更适合创新类产品,那么对于传统的、已经有成熟用户群体的产品,如何平滑地引入Agent,既能提升用户体验,又能避免对现有业务造成冲击?
3、文章中对比了传统编程、Workflow和Agent的开发成本,Agent看起来最低,但这是否意味着Agent会取代传统编程和Workflow?或者说,未来这三种方式会如何协同发展?

原文内容

阿里妹导读


本系列文章基于 Lynxe 作者沈询的实战经验,深入浅出解析 ReAct Agent 的核心原理与工程价值,帮助开发者快速掌握从“写流程”到“造智能体”的关键跃迁。

关于这个系列

作为 Lynxe(原JManus)的作者,我花费了很多课余时间来完善这个Func-Agent框架,也因此对于什么是ReAct Based Agent 有了更深一些的理解。

所以想把这些内容总结出来,是因为这个项目本身核心目的就是探索Agent的前沿最佳实践,目前已经有所小成,Lynxe能解决我自己面对的80%以上的问题了,所以我觉得值得把我实验下来有效的东西写出来,方便大家快速入门。

你可以访问 Lynxe(菱科斯) 阅读详细源码来学习agent的一些最佳实践。这是一个非常完善的产品级的 Func-Agent框架。

https://github.com/spring-ai-alibaba/Lynxe

系列计划

      • 深入了解智能体工作流核心:Agent vs 传统编程 vs Workflow 的本质区别(本篇)

      • 深入解析Function Calling、MCP和Skills的本质差异与最佳实践

      • 上下文管理的一些实践

      • 并行执行的最佳实践与我走过的弯路

      在上一篇文章中,我介绍了什么是 ReAct Agent。现在我来聊聊一个更实际的问题:Agent 和传统的编程方式、工作流方式到底有什么本质不同?为什么我需要 Agent?

      一句话总结:传统编程和 Workflow 都是人在做决策、提前设计好所有逻辑,而 Agent 是 AI 在做决策,能够解决原有写程序不能解决的问题,因此更容易做出差异化的体验,也因此更适合作为下一代的用户交互新范式。就像目前大家都在用的coding agent 一样,未来会有更多面向不同领域的agent涌现。

      三种方式的对比

      先看一个直观的对比表:

      维度

      传统编程

      Workflow 工作流

      Agent

      开发所需技能

      需掌握编程语言、算法、系统设计等专业知识

      理解编程原理,理解图形化拖拽产品的能力,以及扩展函数的写法

      自然语言即可完成所有业务逻辑

      完成任务的方式

      完全依赖硬编码规则,难以处理不确定或复杂场景

      固定路径流转,条件判断有限,无法动态调整策略

      在自然语言的引导下,动态调整策略完成任务

      修改与维护成本

      多角色瀑布协作:运营发现问题 -> 产品拆解排期 -> 研发 -> 部署 -> 测试 -> 上线

      基本只能节省部署环节:运营发现问题 -> 产品拆解排期 -> 研发 -> 测试 -> 上线

      业务自闭环:(发现->测试->解决)

      这个表格可能看起来有点抽象,让我用更具体的方式来解释这三种方式的本质区别。

      传统编程:一切都要提前想好

      传统编程就像建房子,你得先把所有图纸都画好,所有材料都准备好,然后严格按照图纸施工。一旦遇到图纸上没有的情况,就得重新设计。

      实际例子

      假设你要做一个"根据天气推荐穿衣"的功能:

      传统编程方式:

      def get_weather_recommendation(city):
          # 1. 查询天气
          weather = query_weather_api(city)
          temperature = weather['temperature']
          condition = weather['condition']
          
          # 2. 根据温度判断
          if temperature < 10:
              return"建议穿厚外套"
          elif temperature < 20:
              return"建议穿薄外套"
          elif temperature < 25:
              return"建议穿长袖"
          else:
              return"建议穿短袖"
          
      

      这种方式的问题很明显:

      • 硬编码规则:所有逻辑都是提前写死的,遇到新情况就得改代码;

      • 异常处理复杂:各种边界情况都要提前考虑,代码会变得很复杂;

      • 修改成本高:改一个小逻辑,需要开发、测试、部署,整个流程走一遍;

      例如:

      # 3. 如果API返回错误怎么办?需要写异常处理

      # 4. 如果数据格式不对怎么办?需要写数据验证

      # 5. 如果用户想要更详细的建议怎么办?需要修改代码

      Workflow 工作流:流程固定,但更灵活一些

      Workflow 工作流就像搭积木,你可以用图形化的方式把不同的"积木"(节点)连接起来,形成固定的流程。比传统编程灵活一些,但本质上还是固定的路径。

      实际例子

      开始 -> 查询天气API -> 判断温度 -> 返回建议 -> 结束

      这种方式比传统编程好一些:

      • 可视化:不需要写代码,拖拽就能完成;

      • 模块化:每个节点是独立的,可以复用;

      • 但问题依然存在:

      • 流程是固定的,如果用户想要"先查天气,再查穿衣建议,最后保存到文件",就需要重新设计整个流程;

      • 条件判断有限,复杂的逻辑还是需要写代码;

      • 复杂流程维护难度也会变大;

      • 修改流程仍然需要开发人员参与;

      例如:

      # 3. 如果API返回错误怎么办?需要写异常处理;

      # 4. 如果数据格式不对怎么办?需要写数据验证;

      # 5. 如果用户想要更详细的建议怎么办?需要修改代码。

      Agent:边走边看,动态调整

      Agent 就像一个有经验的向导,你告诉他目标,他会根据实际情况动态调整路线。不需要提前把所有情况都想好,遇到问题就解决,走不通就换条路。

      实际例子

      同样的"根据天气推荐穿衣"功能,用 Agent 的方式:

      你只需要告诉 Agent:"帮我查一下北京今天天气怎么样,适合穿什么衣服,然后保存到文件。"

      Agent 会自己决定:

      1. 先调用天气查询工具;

      2. 根据天气结果,决定调用穿衣建议工具;

      3. 获取建议后,决定调用文件写入工具;

      4. 如果某个工具失败了,会自动尝试其他方法。

      整个过程是动态的,不需要提前设计好所有步骤。

      本质区别:谁在做决策?

      这三种方式最本质的区别在于:谁在做决策?

      • 传统编程:程序员在做决策,把所有可能的情况都提前想好,写成代码;

      • Workflow:产品/开发在做决策,设计固定的流程路径;

      • Agent:AI 在做决策,根据实际情况动态调整策略;

      也因为决策者不同,所以对于技能的要求就不同:传统编程需要掌握编程语言、算法、系统设计等专业知识,门槛很高;Workflow 需要理解编程原理和图形化工具,门槛中等;而 Agent 只需要会用自然语言描述需求即可,显而易见的 Agent 极大降低了门槛。同时,这也带来了修改和维护成本的巨大差异:传统编程需要多角色瀑布协作(几天到几周),Workflow 只能节省部署环节,而 Agent 可以实现业务自闭环,从发现问题到解决问题只需要几分钟。

      总结

      综合来看,我认为 Agent 是更面向未来的、值得探索和尝试的新应用使用范式。

      主要原因也非常简单: Agent能带来更明显的“新体验”,因此更易于被最终端用户感知。

      Workflow 与传统编程模型 ,  其核心的变化都仅仅在于在固化的流程中适当的增加AI的能力,除了这个差异外,其他部分都是类似的,因此,他们两个从本质来说都是由程序控制的流程流转,他们其实是相互替代关系,在没有 AI 的时代就已经充分竞争过了。

      竞争的结果就是写代码的方案因为其优秀的复用性和扩展性成为了更主流的选择。

      而 Agent 的玩法则完全不同。它的决策权完全下放给了 Agent 和 Prompt,能够解决原有写程序不能解决的问题——比如处理不确定性、动态调整策略、理解自然语言意图等。因此,Agent 不是对传统编程的简单替代,而是一种更有机会的新范式。

      从应用场景来说:

      • 如果你是既有系统要增强 AI 能力,那么完全可以使用代码 + toolcall 来实现,效果是最好的,准确性也有保障。这种方式适合需要精确控制、高性能的场景。

      • 如果你希望用户能明显感觉这是一个 AI 驱动的创新类产品,那么用 AI Agent 是一个更好的选择。这种方式适合需要处理不确定性、快速迭代、让非技术人员也能完成复杂任务的场景。

      关键是要理解每种方式的本质,根据实际场景选择最合适的方式。Agent 的核心价值在于它开辟了新的可能性,让 AI 真正成为决策者,而不仅仅是执行者。

      欢迎关注系列下一篇文章:《AI Agent系列|深入解析Function Calling、MCP和Skills的本质差异与最佳实践

      其实我觉得“自闭环”这个词有点太学术了,说白了就是让AI自己干活,少让人操心。但是,要实现真正的自闭环,我觉得有两个坑要特别注意:

      1. 数据质量:AI再聪明,也得喂给它干净的数据才能做出正确的判断。如果数据里全是噪音,那Agent就只能瞎指挥了。
      2. 风险控制:AI毕竟不是人,它可能会做出一些意想不到的决策。所以,一定要设置好安全阀,防止Agent失控。比如,可以设置一个阈值,当Agent的决策可能导致重大损失时,就暂停执行,让人工介入。

      总的来说,业务自闭环Agent系统是个好东西,但也要小心使用,别让AI把你给“优化”掉了。

      我觉得要让用户信任Agent,最重要的是让Agent的决策过程透明化。不能让用户觉得Agent是个黑盒子,什么都不知道就给出了一个结果。可以考虑以下几个方面:

      1. 解释性:Agent要能够解释自己的决策依据,比如“我推荐这件商品是因为它和你之前买的商品很相似”。
      2. 可控性:用户要能够干预Agent的决策过程,比如可以手动调整Agent的参数,或者选择不同的决策策略。
      3. 可追溯性:用户要能够查看Agent的历史决策记录,了解Agent是如何一步步做出决策的。

      其实,就像医生给病人看病一样,医生要告诉病人为什么要做这个检查,为什么要吃这个药,这样病人才能信任医生。Agent也一样,要告诉用户为什么会做出这个决策,这样用户才能信任Agent。

      入门Agent开发,我觉得最重要的是保持好奇心和动手能力。可以先从学习Python等编程语言入手,了解Agent的基本原理和框架。网上有很多免费的教程和开源项目,可以跟着学习。同时,积极参与社区讨论,与其他开发者交流经验,共同进步。我最近就在看langchain,感觉还不错。

      我推荐从LangChain或者AutoGen等成熟的 Agent 框架入手。这些框架封装了很多底层细节,让你可以更专注于业务逻辑的实现。同时,多看一些Agent相关的论文和博客,了解最新的技术动态。最重要的是,多做项目实践,在实践中学习和成长。可以尝试用Agent解决一些实际问题,比如自动生成新闻摘要、智能客服等。

      评估既有系统改造的成本和收益,这是一个复杂的工程问题。首先,要对既有系统进行全面的评估,了解其架构、性能、数据质量等方面的情况。其次,要明确改造的目标和范围,例如希望提升哪些方面的AI能力,需要集成哪些toolcall工具。然后,可以采用一些量化的方法,例如ROI(投资回报率)、NPV(净现值)等,对改造方案进行评估。选择合适的toolcall工具,要考虑以下几个方面:1. 功能:toolcall工具需要满足既有系统的需求,例如提供自然语言处理、图像识别、数据挖掘等功能。2. 性能:toolcall工具需要具备良好的性能和稳定性,能够处理大量的并发请求。3. 易用性:toolcall工具需要易于集成和使用,能够降低开发和维护成本。4. 安全性:toolcall工具需要具备良好的安全性,能够保护用户数据和系统安全。最后,要进行充分的测试和验证,确保改造后的系统性能和稳定性。

      我觉得风险主要在于数据质量和算法偏差!如果训练Agent的数据本身就有问题,或者算法存在偏见,那Agent做出的决策肯定也会受到影响。另外,Agent的决策过程可能不够透明,难以解释。

      我认为可以从两个方面入手:一方面,要建立完善的数据治理机制,确保数据的质量和合规性;另一方面,要加强算法的伦理审查,避免算法歧视和偏见。同时,还要引入用户反馈机制,让用户参与到AI的决策过程中。

      我有一个大胆的想法!未来会不会出现一种“混合编程”模式?开发者可以使用自然语言编写Agent,然后Agent会自动将自然语言翻译成代码或Workflow,最终实现业务逻辑。这样既能降低开发门槛,又能保证代码的质量和Workflow的效率。当然,这需要解决很多技术难题,但我觉得这是未来的一个发展方向。

      别想那么多复杂的,直接用Agent做一个“彩蛋”功能!比如,在某个隐藏的入口,用户可以通过Agent来完成一些有趣的任务,或者获取一些额外的奖励。这样既能让用户体验到Agent的魅力,又不会对现有业务造成任何冲击。记住,惊喜永远是最好的营销手段!

      这个问题问得好!Agent的决策确实依赖AI和Prompt,所以可靠性是一个关键问题。我的理解是,一方面,需要精心设计Prompt,明确Agent的目标和约束,比如使用更具体的指令、提供示例等。另一方面,可以通过引入一些监督机制,比如让人工审核Agent的决策过程,或者设置一些硬性的规则来限制Agent的行为。当然,最终还是要通过大量的测试和迭代来不断优化Agent的性能。

      想在成熟产品中引入Agent,确实需要小心谨慎。我的建议是,可以先从小范围的灰度测试开始,比如只针对一部分用户开放Agent的功能,观察用户的反馈和系统的运行情况。另外,可以考虑将Agent作为一个可选的功能,让用户自主选择是否使用,这样可以避免对现有用户造成干扰。总之,平稳过渡是关键。

      与其说是取代,不如说是融合。未来的趋势可能是,将Agent嵌入到传统编程和Workflow中,作为一种增强能力。比如,在传统编程中,可以使用Agent来自动生成代码;在Workflow中,可以使用Agent来智能优化流程。这样既能发挥Agent的优势,又能保留传统方式的优点,实现更好的效果。

      可靠性的确是Agent落地的一大挑战。我觉得可以借鉴软件工程中的一些方法,比如单元测试,针对Agent的各个功能模块进行测试,确保它们在各种情况下都能正常工作。另外,还可以引入一些监控指标,比如Agent的成功率、错误率等,及时发现和解决问题。当然,最好的方法还是不断地训练Agent,让它在实际应用中学习和适应。

      要我说,对于复杂场景,光靠Prompt和AI是不够的,还得加点“人为干预”。可以考虑引入一个“决策委员会”,当Agent遇到无法处理的情况时,就提交给委员会进行人工决策。这样既能保证Agent的灵活性,又能避免出现一些意想不到的错误。当然,这个委员会的成本可能会比较高,需要根据实际情况进行权衡。

      取代?我觉得不太可能。传统编程在性能和控制力方面还是有优势的,Workflow在流程管理方面也很方便。Agent的优势在于灵活性和易用性。所以,我的看法是,未来这三种方式会并存,根据不同的场景选择最合适的方式。比如,对于需要高性能的底层系统,还是会选择传统编程;对于需要流程管理的业务,可以选择Workflow;而对于需要灵活应对用户需求的场景,可以选择Agent。

      我觉得可以从Agent能解决的“痛点”入手。先调研用户在使用现有产品时遇到的问题,然后针对这些问题,开发一些Agent的功能,解决用户的实际需求。比如,如果用户经常忘记设置提醒,就可以开发一个Agent,自动分析用户的日程,并智能地设置提醒。这样既能提升用户体验,又能让用户更容易接受Agent。