《Agentic Design Patterns》第 3 章导读:并行化(Parallelization)
《Agentic Design Patterns》第 3 章导读并行化Parallelization本文是对开源书籍《Agentic Design Patterns》第 3 章的解读与导读内容忠实呈现原文并附个人思考。原书在线阅读https://adp.xindoo.xyz/ 翻译项目代码仓库https://github.com/xindoo/agentic-design-patterns前两章我们讲了提示词链顺序工作流和路由动态分流。但现实中的很多复杂智能体任务其实藏着大量可以同时做、没必要排队等的子任务。比如要调研一个主题明明可以同时去搜多个来源要分析一批客户反馈明明可以同时跑情感分析、关键词提取、分类……这时候一条道走到黑的顺序执行就是在白白浪费时间。这正是第 3 章**并行化Parallelization**模式的价值把互相独立的任务并发执行显著压缩总耗时。一、什么是并行化让独立任务同时跑并行化指的是并发执行多个组件——可以是多个 LLM 调用、多次工具使用甚至是整个子智能体。它不是串行等待每一步完成再走下一步而是让独立任务一起开工。书中用一个调研并总结的例子对比了两种做法顺序方法慢搜索来源 A总结来源 A搜索来源 B总结来源 B基于摘要 A 和 B 合成最终答案并行方法快同时搜索来源 A 和来源 B两个搜索完成后同时总结来源 A 和来源 B合成最终答案这一步通常仍需顺序执行要等前面的并行步骤走完核心思想一句话找出那些不依赖彼此输出、可以齐头并进的环节把它们并行掉。这在对方是 API、数据库这类有延迟的外部服务时尤其划算——多个请求同时发出去等回来的总时间就摊薄了。图 1带有子智能体的并行化示例——多个研究员智能体被并发调度。二、7 个典型应用场景书中给出了 7 个很接地气的用例我整理成速览表场景并行任务收益信息收集与研究同时搜新闻、取股票数据、监控社媒、查数据库更快拿到全面视图数据处理与分析对反馈条目同时做情感分析、关键词提取、分类、紧急识别快速输出多维分析多 API / 工具交互同时查航班价、酒店、当地活动、餐厅推荐更快拼出完整旅行方案多组件内容生成同时生成邮件主题、正文、配图、行动号召按钮高效组装成品验证与核实同时校验邮箱、手机号、地址库匹配、不当内容检测更快给出有效性反馈多模态处理同时分析文本情感词 图像对象场景更快速整合多模态洞察A/B 测试 / 多选项用不同提示词/模型同时生成多个标题变体便于快速对比选优这些场景有个共同点子任务之间彼此独立、且都受外部 I/O 或算力延迟的影响。它们是并行化的最佳土壤。三、代码实战一用 LangChainRunnableParallel并行LangChain 并行执行的基石是LangChain 表达式语言LCEL。方法是在一个字典或列表结构里组织多个可运行组件当这些组件被喂给链条后续环节时LCEL 就并发执行它们。对应构造叫RunnableParallel。importosimportasynciofromtypingimportOptionalfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParserfromlangchain_core.runnablesimportRunnable,RunnableParallel,RunnablePassthrough llm:Optional[ChatOpenAI]ChatOpenAI(modelgpt-4o-mini,temperature0.7)## --- 定义三个可并行执行的独立链 ---summarize_chain:Runnable(ChatPromptTemplate.from_messages([(system,简洁地总结以下主题),(user,{topic})])|llm|StrOutputParser())questions_chain:Runnable(ChatPromptTemplate.from_messages([(system,生成关于以下主题的三个有趣问题),(user,{topic})])|llm|StrOutputParser())terms_chain:Runnable(ChatPromptTemplate.from_messages([(system,从以下主题中识别 5-10 个关键术语用逗号分隔),(user,{topic})])|llm|StrOutputParser())## --- 1. 并行任务块三个链同时跑原始 topic 透传 ---map_chainRunnableParallel({summary:summarize_chain,questions:questions_chain,key_terms:terms_chain,topic:RunnablePassthrough(),})## --- 2. 综合提示词把三个并行结果汇总 ---synthesis_promptChatPromptTemplate.from_messages([(system,基于以下信息 摘要{summary} 相关问题{questions} 关键术语{key_terms} 综合一个全面的答案。),(user,原始主题{topic})])## --- 3. 完整链并行块 → 综合提示词 → LLM → 输出解析 ---full_parallel_chainmap_chain|synthesis_prompt|llm|StrOutputParser()asyncdefrun_parallel_example(topic:str)-None:responseawaitfull_parallel_chain.ainvoke(topic)print(response)if__name____main__:asyncio.run(run_parallel_example(太空探索的历史))逻辑拆解map_chain用RunnableParallel把总结、提问、提术语三条链并发跑起来同时用RunnablePassthrough保留原始主题三个结果齐了之后再交给一个综合提示词做最终的整合——这就是典型的“并行收集 串行综合”结构。技术提示书里特别点明asyncio提供的是并发concurrency而非真正的并行parallelism——它靠事件循环在单线程上等网络请求时切换任务制造同时进行的效果仍受 Python GIL 限制。所以这里的加速大多来自等待外部 API 时别空转。四、代码实战二用 Google ADKParallelAgent SequentialAgentGoogle ADK 提供了更原生的多智能体并行机制其中两个关键原语是ParallelAgent并发跑子智能体和SequentialAgent按序拼流水线。fromgoogle.adk.agentsimportLlmAgent,ParallelAgent,SequentialAgentfromgoogle.adk.toolsimportgoogle_search GEMINI_MODELgemini-2.0-flash## --- 1. 三个研究员子智能体各自负责一个主题分支---researcher_agent_1LlmAgent(nameRenewableEnergyResearcher,modelGEMINI_MODEL,instruction研究可再生能源的最新进展用 Google 搜索1-2 句话总结你的主要发现*只*输出摘要。,tools[google_search],output_keyrenewable_energy_result)researcher_agent_2LlmAgent(nameEVResearcher,modelGEMINI_MODEL,instruction研究电动汽车技术的最新发展用 Google 搜索1-2 句话总结*只*输出摘要。,tools[google_search],output_keyev_technology_result)researcher_agent_3LlmAgent(nameCarbonCaptureResearcher,modelGEMINI_MODEL,instruction研究碳捕获方法的当前状态用 Google 搜索1-2 句话总结*只*输出摘要。,tools[google_search],output_keycarbon_capture_result)## --- 2. 并行执行三个研究员 ---parallel_research_agentParallelAgent(nameParallelWebResearchAgent,sub_agents[researcher_agent_1,researcher_agent_2,researcher_agent_3],description并行运行多个研究智能体以收集信息。)## --- 3. 合并智能体把并行结果综合成结构化报告 ---merger_agentLlmAgent(nameSynthesisAgent,modelGEMINI_MODEL,instruction 综合以下研究摘要清楚地将发现归属于其来源领域。 输入摘要可再生能源{renewable_energy_result} 电动汽车{ev_technology_result} 碳捕获{carbon_capture_result} *只*基于上面提供的信息输出结构化报告不要添加外部知识。,description将并行智能体的研究发现组合成结构化报告。)## --- 4. 顺序流水线先并行研究再综合报告 ---sequential_pipeline_agentSequentialAgent(nameResearchAndSynthesisPipeline,sub_agents[parallel_research_agent,merger_agent],description协调并行研究并综合结果。)root_agentsequential_pipeline_agent关键点三个研究员用ParallelAgent并发跑各自通过output_key把结果写进会话状态等全部完成后merger_agent再读出状态、把它们拼成一份带归属的报告最后SequentialAgent把先并行、后合并两端串成一个整体流程。这再次印证了**“并行收集、串行综合”**的经典编排思路。五、速览问题背景很多智能体工作流包含多个必须完成才能达成目标的子任务。纯顺序执行每个任务都要等前一个完成通常低效又慢当任务依赖外部 I/O调不同 API、查多个库时延迟成为主要瓶颈——总耗时等于所有单任务耗时之和。解决方案识别工作流中不依赖彼此输出的组件工具使用或 LLM 调用让它们并发执行。框架LangChain、Google ADK提供内置构造来定义管理这些并发操作如主进程并行调多个子任务等全部完成再继续。实践建议当工作流包含多个可同时运行的独立操作时使用此模式例如从多个 API 取数据、处理不同数据块、或生成多个内容片段供后续综合。可视化总结图 2并行化设计模式——独立子任务并发执行待全部完成后汇聚到下游。关键要点并行化是通过并发执行独立任务来提升效率的模式在处理涉及等待外部资源如 API 调用的任务时尤其有效并发/并行架构会引入显著复杂性和成本影响设计、调试与系统日志等关键环节——不是免费的午餐LangChain 用RunnableParallel、LCEL 提供并行支持Google ADK 则通过 LLM 驱动的多智能体委托协调器识别独立子任务并触发子智能体并发处理实现并行并行化有助于减少整体延迟让系统在处理复杂任务时更具响应性。结语与个人思考第 3 章其实是前两章的提速器顺序用链条、分流用路由、能并行的就并行。把这三种控制流结合起来就能搭出既有条理、又高性能的复杂系统——这句话几乎是全书方法论的一条主线后面很多高级模式都是它的变体。但也要清醒地看到并行的代价这正是书中诚实指出的地方收益有边界并行只对彼此独立的任务有效。一旦某个步骤必须依赖前面跑完的结果比如综合报告必须等三个研究员都出结论就得停下来等——所以现实中几乎都是并行 顺序混合编排。成本很真实并发引入的竞态、状态同步、日志错乱、调试复杂度都会随着子任务数量上升。并行不是越多越好而是要该并行才并行。别混淆并发与并行像 Python 的asyncio本质是并发单线程事件循环对 I/O 等待型任务友好真要吃满多核做 CPU 密集计算还得靠多进程或专门的并行运行时。下一步建议阅读第 4 章反思Reflection——从怎么把任务编排得更快、更顺转向怎么让模型自己审一遍再交付是提升输出质量的关键一环。本文基于开源书籍《Agentic Design Patterns》https://github.com/xindoo/agentic-design-patterns 在线阅读 https://adp.xindoo.xyz/ 整理供学习交流版权归原作者所有。

相关新闻

Linux 6.12 源码深度剖析: update_entity_lag

Linux 6.12 源码深度剖析: update_entity_lag

Linux 6.12 内核深度解析:update_entity_lag 与 EEVDF 调度算法的核心机制 📌 技术点速览 在 Linux 6.6 内核中,传统的 CFS(Completely Fair Scheduler,完全公平调度器)被全新的 EEVDF(Earliest Eligible Virtual Deadline First,最早合格虚拟截止时间优先) 算法正式…

2026/10/18 23:40:27 阅读更多 →
LLM上下文模式实战:滑动窗口、摘要压缩与语义检索的选型与实现

LLM上下文模式实战:滑动窗口、摘要压缩与语义检索的选型与实现

从去年开始把十几个业务模块从单轮问答改造成带上下文记忆的对话形态,又在一家创业公司帮忙搭过完整的上下文管理中间层,我想我可以说说这个话题了。这里不聊那些浮在纸面上的概念,直接拆解我在真实项目里怎么理解、怎么选型、怎么写代码的。…

2026/10/12 8:23:43 阅读更多 →
Linkerd2 从源码构建与开发指南:仓库结构、本地开发环境与 Helm Chart 工程实践

Linkerd2 从源码构建与开发指南:仓库结构、本地开发环境与 Helm Chart 工程实践

服务网格云原生可观测性 【免费下载链接】linkerd2 Ultralight, security-first service mesh for Kubernetes. Main repo for Linkerd 2.x. 项目地址: https://gitcode.com/gh_mirrors/li/linkerd2 点击查看 免费下载 Linkerd2 是一个面向 Kubernetes 的 ultralig…

2026/10/12 16:08:12 阅读更多 →

最新新闻

大麦网自动抢票脚本:从配置到下单的完整使用教程

大麦网自动抢票脚本:从配置到下单的完整使用教程

大麦网自动抢票脚本:从配置到下单的完整使用教程 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 开票倒计时归零那一秒,页面已弹出"缺货登记&quo…

2026/10/18 23:40:36 阅读更多 →
Vosk C API 编译避坑指南:Linux/ARM/Windows 三平台源码构建实战

Vosk C API 编译避坑指南:Linux/ARM/Windows 三平台源码构建实战

简介:本资源为已编译完成的Vosk语音识别C语言调用库,专为嵌入式开发、边缘计算及低功耗平台(如树莓派、Windows桌面应用)开发者设计,解决C项目中集成离线语音识别时需自行编译Vosk源码的复杂问题。压缩包共6个文件&…

2026/10/18 23:40:36 阅读更多 →
如何把加密视频真正存到本地:res-downloader 抓包下载与解密实战

如何把加密视频真正存到本地:res-downloader 抓包下载与解密实战

如何把加密视频真正存到本地:res-downloader 抓包下载与解密实战 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader …

2026/10/18 23:40:36 阅读更多 →
Java医药进销存系统:Spring Boot+MyBatis-Plus实战全链路

Java医药进销存系统:Spring Boot+MyBatis-Plus实战全链路

简介:这是一套面向计算机专业本科生毕业设计与Java Web开发初学者的医药行业进销存管理系统源码,聚焦药品采购、销售、库存三大核心业务场景,助力药店、医院药房及小型批发商实现业务流程数字化。资源共944个文件,涵盖105个Java后…

2026/10/18 23:40:36 阅读更多 →
皮尔逊III型曲线拟合实战:从实测流量到设计洪水频率分析

皮尔逊III型曲线拟合实战:从实测流量到设计洪水频率分析

简介:一份用于皮尔逊III型曲线拟合与绘图的MATLAB代码包,面向水文学、统计学及工程防灾领域的研究人员、学生和工程师,解决流量、降雨等自然数据的频率分析问题。压缩包共三个文件,均为MATLAB脚本,整体大小仅3KB&#…

2026/10/18 23:40:36 阅读更多 →
三则AI新闻揭示应用临界点:轻量模型、免费旗舰与团队回迁

三则AI新闻揭示应用临界点:轻量模型、免费旗舰与团队回迁

10月8日早上,我的朋友圈和几个技术群几乎同时被三则AI新闻刷屏:一家主流模型厂商发布了新的轻量快速模型H 5.5,另一家巨头把第六代旗舰模型向普通用户免费开放,还有一个此前把部分团队搬到外地的智能体产品团队,宣布要…

2026/10/18 23:39:35 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →