惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
Arctic Wolf
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Google Online Security Blog
Google Online Security Blog
Help Net Security
Help Net Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
T
The Exploit Database - CXSecurity.com
Application and Cybersecurity Blog
Application and Cybersecurity Blog
S
Security Affairs
N
News and Events Feed by Topic
Forbes - Security
Forbes - Security
月光博客
月光博客
博客园 - Franky
The GitHub Blog
The GitHub Blog
O
OpenAI News
The Cloudflare Blog
Google DeepMind News
Google DeepMind News
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
H
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
V
Visual Studio Blog
爱范儿
爱范儿
S
Secure Thoughts
T
The Blog of Author Tim Ferriss
SecWiki News
SecWiki News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
J
Java Code Geeks
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
博客园_首页
Cisco Talos Blog
Cisco Talos Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
Cisco Blogs
博客园 - 三生石上(FineUI控件)
Hacker News: Ask HN
Hacker News: Ask HN
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
人人都是产品经理
人人都是产品经理
腾讯CDC
Know Your Adversary
Know Your Adversary
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
博客园 - 叶小钗
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Hugging Face - Blog
Hugging Face - Blog
PCI Perspectives
PCI Perspectives
罗磊的独立博客
有赞技术团队
有赞技术团队
B
Blog RSS Feed
L
LINUX DO - 最新话题

XINDOO

关于内卷,几个值得深想的洞察 当创作被 Skill 化:我用 AI 写了一部 320 章的长篇网文 AI第一剑,先斩程序员 AI 也会偷懒?这个 PUA 工具专治“摸鱼式编程” Gstack 深度解析:YC CEO 开源的 AI 工程团队 GitHub Trending霸榜!深度解析AI Coding辅助神器 Superpowers 深度探讨:从 OpenClaw 爆火,看 AI Agent 的真相与程序员的未来 我复刻了NotebookLM的信息图功能 我用AI写了部小说,这里是整个过程 [翻译]我在谷歌14年学到的21堂课 2万字吊打40万字:为什么我的“牛马Agent”比“数字分身”更聪明? 最近AI领域爆火的 Agent Skills 是什么? 从计算机科学的视角来看拖延症 一周改6个库后我悟了:AI时代,程序员正在退化成“甲方” 使用n8n做一个自动同步更新的Github项目问答机器人 Agent设计模式——第 20 章:优先级排序 Agent设计模式——第 1 章:提示词链 Agent设计模式——附录 D - 使用 AgentSpace 构建 Agent Agent设计模式——第 19 章:评估和监控 Agent设计模式——第 10 章:模型上下文协议 (MCP) Agent设计模式——第 21 章:探索和发现 Agent设计模式——智能体设计模式 Agent设计模式——第 11 章:目标设定和监控 Agent设计模式——第 9 章:学习和适应 Agent设计模式——第 16 章:资源感知优化 Agent设计模式——附录 G - 编码 Agent Agent设计模式——第 13 章:人机协同 Agent设计模式——第 17 章:推理技术 Agent设计模式——附录 F - 深入剖析:Agent 推理引擎的内部运作机制 Agent设计模式——章节目录 Agent设计模式—— Agent设计模式——第 7 章:多 Agent 协作 Agent设计模式——附录 E - 命令行界面中的 AI Agent Agent设计模式——附录 C - Agentic 框架快速概览 Agent设计模式——第 3 章:并行化 Agent设计模式——**常见问题解答:Agentic 设计模式** Agent设计模式——第 14 章:知识检索(RAG) Agent设计模式——第 18 章:Guardrails/安全模式 Agent设计模式——第 15 章:Agent 间通信(A2A) Agent设计模式——第 8 章:内存管理 Agent设计模式——第 12 章:异常处理和恢复 Agent设计模式——第 4 章:反思 Agent设计模式——附录 B - AI Agentic 交互:从图形界面到现实世界环境 Agent设计模式——第 5 章:工具使用(函数调用) Agent设计模式——结论 Agent设计模式——第 6 章:规划 Agent设计模式——第 2 章:路由 从经验主义到贝叶斯理论:如何排查线上问题 我用AI为自己造了一把安全的开发者“瑞士军刀”” 从LLM和MCP的协同过程看如何做优化 打通Dify与AI工具生态:将Workflow转为MCP工具的实践 一文了解知识库背后的技术RAG AI应用的五个级别:从入门到专家的进阶之路 一文入门AI圈最近爆火的MCP协议 HTTP/3:性能改进(第 2 部分) deepseek-r1祛魅:从过度热捧到理性认知⁠ 如何用GPT-4o解读视频 json命令行处理神器jq介绍 OpenAI的结构化浅析 从大模型的原理到提示词优化 从经济学原理看团队分工合作 [翻译]关于人工智能的30个思考 从马斯洛需求层次理论谈职场激励 知识与智慧 如何使用大语言模型绘制专业图表 两个开源项目打造自己的大模型聚合平台 我让gpt4o给我推荐了一千多次书 得到了这些数据 用Langchain创建一个可以总结网页内容的Agent 推荐一个好用的命令行工具ShellGPT 关于ffmpeg height not divisible by 2的错误 使用Certbot解决https证书自动更新的问题 Spring Cache简明教程 软件开发中的抓大放小vs极致细节思维 OpenAI Assistants-API简明教程 OpenAI的多函数调用(Multiple Function Calling)简介 如何使用ffmpeg制作透明背景的视频 spring-kafka中ContainerProperties.AckMode详解 如何在地图上寻找最密集点的位置? IO密集型服务提升性能的三种方法 职场中的基本归因错误和自利归因 使用javax.validation.constraints校验参数合法性 Java Optional:让你的代码更优雅 ChatGPT函数调用初体验:让ChatGPT具备抓取网页文本的能力 如何使用ChatGPT提升自己的“码”力? 使用ffmpeg拼接两张图片 ThreadPoolExecutor——高效处理并发任务的必备良器 从CPU的视角看 多线程代码为什么那么难写! 使用ffmpeg缩小视频体积的几种方式 Linux parallel 命令使用手册 为什么说过早优化是万恶之源? Linux xargs命令介绍 深入理解Spring的事件通知机制 Java高并发之CyclicBarrier简介 聊一聊过度设计! 详解Redisson分布式限流的实现原理 Java中使用HashMap时指定初始化容量性能一定会更好吗? 如何用ffmpeg截取视频片段&截取时间不准确的坑 XINDOO的2022年年终总结 使用ffmpeg将视频转成HLS(m3u8)格式 谷歌Guava LoadingCache介绍
为什么AI智能体需要工作流
xindoo · 2024-12-21 · via XINDOO

  在上一篇文章《大模型原理到提示词优化》中,我介绍了几种优化LLM回答效果的方法(建议没看过的读者去看看)。这些方法运用得当,能显著提升LLM回答的质量,特别是思维链和多轮交互的方式。虽然这些优化方法可以提升单个LLM的表现,但要解决更复杂的实际问题,我们需要一个更系统化的方法。——通过合理的任务拆分和流程设计,我们可以让AI更好地服务于复杂的业务场景。
  如果说上篇文章是探讨如何提升单个LLM模型的能力和表现的方法,那这篇文章则着重讨论如何通过工作流的设计和实现来提升整个AI系统的协同工作效率。就像一个优秀的团队不仅需要每个成员都很强,更需要有效的协作机制一样,我们不仅需要优化单个AI组件的性能,还需要建立起完善的工作流程来实现更大的价值。
  在深入探讨工作流的具体设计和实现方法之前,我们需要先理解工作流的必要性及其为AI应用带来的关键价值。只有明确了工作流的目的和价值,我们才能设计出真正满足实际需求的解决方案。

工作流的核心目的

  我认为工作流的设计主要服务于两个核心目的:提升质量和处理更复杂的任务。通过将复杂任务拆分为多个独立且可控的步骤,我们不仅能在每个环节实现精确的质量控制,还能更有效地组织和协调多个AI组件,从而解决更具挑战性的问题。

提升问题解决的质量

  在工作流的设计中,我们可以通过预设的引导步骤来逐步优化大模型的输出。这类似一个循序渐进的对话过程:每个步骤中,我们都会引入新的上下文信息或具体要求,从而引导模型朝着预期的方向思考和输出。这种渐进式的引导不仅确保结果更符合预期,还让整个生成过程更加可控和透明。这个过程就像是让LLM用思维链或者是多轮对话的方式提升回答质量,只不过工作流中的对话步骤是我们预先设计好的。

解决更复杂的问题

  单个LLM的能力其实有限,难以处理复杂任务。这是因为复杂任务通常涉及多个相互关联的子任务和决策点,超出了单个AI模型的处理范围。通过工作流,我们可以将复杂问题分解为一系列较小且可管理的子任务,每个子任务都由专门的AI组件或规则负责处理。这种模块化方法不仅让问题解决更加系统化,还能确保每个环节都得到最优处理。
现在我们已经了解了工作流的两个关键作用:提升质量和解决更复杂的问题。这些功能是普通agent目前无法实现的。接下来,让我们探讨如何设计工作流。

工作流应该怎么设计

  工作流的设计本质反映了我们如何科学地进行任务拆分和组织。就像处理复杂项目时会将其分解成更小、更易管理的部分,工作流设计也遵循相似的逻辑原则,通过系统化的任务划分来提升效率和可控性。这种拆分方法不仅让我们能更清晰地理解整个流程,还能帮助我们更有效地分配资源和监控进度。工作流主要有两种基本设计方式:水平拆分、垂直拆分,这两种方式各有其适用场景和优点。但是,在实际应用中,我们通常不会单独选择其中一种,而是采用混合拆分的方式。

水平拆分

在这里插入图片描述

  水平拆分是一种适用于大规模任务处理的策略,它将一个复杂的大任务分解成多个平行的、同级别的小任务,最后将所有子任务结果进行汇总。我们采用水平拆分主要有两个原因:首先,LLM的输入上下文长度有限,无法一次性处理所有内容;其次,即使在允许范围内,LLM处理长上下文时也会出现明显的性能下降。因此,在实际应用中我们常常需要对任务进行合理拆分。
我们来看下需要做任务拆分的一些具体例子:

  • 长文本处理: 比如一本书有几百页,我们需要对其内容进行总结或分析时,就需要先将内容按章节或段落进行拆分,每个部分独立处理后再整合结果。这种方式不仅能确保每个部分都得到充分的处理,还能通过并行处理提高效率。同样的策略也适用于其他长文本处理场景,如论文分析、新闻聚合等。
  • 大规模数据处理: 在处理海量数据时,如用户行为分析或日志处理,我们可以按时间段、地域或用户群体等维度进行水平拆分,每个部分独立分析后再汇总结果。这种方式不仅能提高处理效率,还能更好地发现数据中的特定模式和趋势。
      以上是水平拆分在实际应用中的典型场景。通过合理的任务划分和并行处理,我们可以有效地处理那些规模较大或数据量庞大的任务。接下来让我们看看另一种重要的拆分方式——垂直拆分,它适用于那些需要按照特定顺序执行的任务流程。

    垂直拆分

    在这里插入图片描述

  垂直拆分是将一个长流程任务拆分成多个按顺序执行的短任务。这种方式特别适用于需要多个步骤依次完成的任务,每个步骤都以前一步骤的结果为基础。垂直拆分的主要目的是降低任务复杂性。通过将复杂任务分解为一系列清晰的步骤,不仅让每个环节更容易理解和执行,也便于进行质量控制和错误排查。这种方式既降低了单个步骤的复杂度,又能确保整个流程的稳定性和可靠性。
在这里插入图片描述

  这就像工厂里的月饼生产线,每个工序都很简单明确——和面、填馅、压模、烘烤、打包,通过这些简单工序的组合,工厂就可以快速高质量的生产月饼。
  相信通过月饼的例子,垂直拆分的概念就变得清晰易懂:每个步骤的输出会自然成为下一步骤的输入。这种串行处理方式虽然简单直接,但在处理复杂任务链时非常有效。在很多场景中,我们都可以使用垂直拆分来显著提升AI的处理能力和效果。
我们还是来看下具体的一些场景:

  • AI内容生产: 以写一篇完整的博客文章为例,我们可以将任务垂直拆分为以下步骤:主题研究和大纲规划、初稿撰写、内容优化和润色、SEO优化、最终审核。每个步骤都可以由专门的AI模型或工具来完成,确保最终输出的内容质量。
  • 数据分析和报告生成: 数据分析任务也可以进行垂直拆分,包括数据清洗和预处理、初步分析、深度挖掘、可视化图表生成、报告撰写等步骤。每个步骤都需要特定的专业知识和工具,通过垂直拆分可以确保每个环节都得到专业处理,最终生成高质量的分析报告
  • AI辅助决策系统: 在构建复杂的AI决策支持系统时,垂直拆分可以将决策过程分解为数据收集、风险评估、方案生成、结果预测和建议输出等步骤。每个步骤都可以使用专门的AI模型或算法来处理,通过严格的流程控制确保决策的准确性和可靠性。
      在实际的AI决策系统中,这种垂直拆分的方式不仅能提高决策的准确性,还能让整个过程更加透明和可控。每个步骤的输出都可以被记录和验证,便于追踪决策链并进行必要的调整和优化。这种系统化的处理方式为复杂决策提供了可靠的框架支持。

    混合拆分


      在实际应用中,我们通常会结合水平拆分和垂直拆分的优势,构建混合拆分的工作流方案。这种混合模式不仅能灵活应对复杂的业务场景,还能在保证处理效率的同时确保质量控制。
    我们看一些混合拆分的典型应用场景:

  • 大规模文档处理系统: 首先通过水平拆分将文档分成多个部分,然后每个部分都经过垂直的处理流程(如文本提取、格式转换、内容分析、质量检查等)。这种方式既解决了处理规模的问题,又保证了处理质量。
  • 智能客服系统: 系统可以水平拆分处理多个用户的请求,而每个请求都需要经过垂直的处理流程(意图识别、信息提取、答案生成、情感分析等)。这样既能并行处理多个用户的需求,又能确保每个用户得到完整的服务流程。
  • 数据分析平台: 可以按照不同的数据源或时间段进行水平拆分,每个分片数据再经过垂直的分析流程(数据清洗、特征提取、模型分析、可视化等)。这种方式既能处理海量数据,又能保证分析的深度和质量。

  混合拆分的关键在于找到合适的平衡点,既要考虑任务的并行处理效率,又要确保每个处理环节的质量和连贯性。通过合理的混合拆分设计,我们可以构建出既高效又可靠的AI应用系统。
  简单总结下,水平拆分是为了解决规模性问题,垂直拆分是为了解决复杂性问题,而混合拆分二者兼而有之。

实践

  现在我们已经掌握了工作流拆分的理论知识,让我们通过一个具体的实践案例来加深理解。我将使用Dify搭建一个超长文本分析的工作流,展示如何运用混合拆分方法来处理长文本。这个案例会清晰地演示如何将大型文本处理任务拆分为多个可管理的子任务,并通过合理的工作流设计来提高处理效率。
  这里我找到了古腾堡上的《爱丽丝梦游仙境》英文版(https://www.gutenberg.org/cache/epub/11/pg11.txt ),由于其内容长度超出了大模型的输入限制,直接尝试总结全文,提交会直接报错。
  如果我直接把url给大模型,很多模型其实并不支持主动抓取网页内容,也没法直接识别,即便支持主动抓取,它也会对文本内容做截断,导致信息损失。
  虽然长文本总结这个任务表面上看起来简单,但实际实现时面临两个主要挑战:首先是需要多个处理步骤,其次是由于数据规模过大需要进行拆分处理。 这里很明显就需要用到混合拆分的策略,我这里拆分构思的整体的流程如下图:
在这里插入图片描述

最终在Dify中构建出来的workflow如下,很明确和上面的流程图有一致性:
在这里插入图片描述
  文本下载和切分是一个代码执行模块,其中包含一段Python代码,用于从URL下载文本内容,并将其按字数分段后输出为数组。 这里我用了工作流中的迭代模块来对切分后的文档完成分段总结。 结果汇总是一个模板转换模块,作用就是将所有分段的结果简单粗暴拼接起来,然后给到最后的汇总总结节点。

结语

  善于沟通的人能充分发挥 LLM 的潜力,因为和LLM沟通和与人沟通并没有本质的区别。同样,那些擅长解决复杂问题的人往往具备出色的系统思维,能设计出高效实用的工作流程,将复杂任务分解为可管理的步骤。
  最后总结下本文的核心观点,在AI应用中,合理的工作流设计是提升系统效能的关键,通过任务的水平拆分和垂直拆分,我们可以构建出既能处理大规模数据又能保证质量的混合工作流体系。工作流不仅仅是一种技术实现方式,更是一种系统化思维的体现,它能帮助我们更好地应对复杂的AI应用场景,实现更高效的任务处理和更可靠的质量控制。