多 Agent 串行太慢:用 DAG、并发闸门和 Token 预算拆链路
多 Agent 串行太慢用 DAG、并发闸门和 Token 预算拆链路多 Agent 链路慢先别急着换更快的模型。把路由、规划、检索、执行和审查五段的等待时间、输入 Token 与重试次数分别记下来通常更容易看出问题。如果所有节点串行运行还把完整历史透传给下游延迟会叠加账单也会包含大量重复上下文。能否改成 DAG取决于节点之间是否真的有数据依赖没有依赖的才并行需要审计的只拿最小输入。这篇用一组可替换的测试字段说明怎么比较结论要用自己的模型、请求集和计费规则复跑。1. 多 Agent 串行链条下的延迟与 Token 瓶颈分析初始的 Agent 系统架构通常采用串行逻辑。用户提交复杂需求后系统交给“需求拆解 Agent”拆出若干子任务随后依次调用“数据检索 Agent”、“代码生成 Agent”、“安全审计 Agent”以及“文本汇总 Agent”。用代码逻辑表示这是一个典型的串行调用# 串行调用的示意代码 for step in execution_plan: result call_llm_agent(step, context_history) context_history.append(result)这段代码是否已经构成瓶颈不能只凭调用顺序判断。先给每个节点记录开始时间、结束时间、输入输出 Token、重试次数和依赖节点再用同一批脱敏请求复跑。下面的表格是待采集字段不预填一组貌似真实的结果Agent 节点耗时分位数输入 Token输出 Token需要核对的问题需求拆解 Agent从 Trace 汇总从模型 usage 读取从模型 usage 读取是否包含无关历史数据检索 Agent从 Trace 汇总从模型 usage 读取从模型 usage 读取是否确实依赖拆解输出代码生成 Agent从 Trace 汇总从模型 usage 读取从模型 usage 读取API 文档是否能按需检索安全审计 Agent从 Trace 汇总从模型 usage 读取从模型 usage 读取是否收到与审计无关的检索正文文本汇总 Agent从 Trace 汇总从模型 usage 读取从模型 usage 读取是否重复携带上游全文如果 Trace 显示下游主要在等待前置节点而且输入 Token 随步骤持续累积再分别验证两个假设一是移除虚假依赖二是按字段裁剪上下文。数据检索与代码生成能否并行要看二者的输入契约安全审计需要什么也应由审计规则决定不能预先假定它只需要代码。从底层机制分析大模型的 Prompt Processing首字延迟 TTFT与上下文长度成正比而 Generation生成延迟与输出 Token 数成正比。增加冗余上下文不仅抬高了资金成本也增加了模型首字响应的卡顿时间。2. 基于 DAG 有向无环图的执行解耦与上下文隔离降低延迟的关键在于解耦串行链条将 Agent 间的依赖关系重构为有向无环图DAG。在重构后的架构设计中引入“依赖图解析器”与“上下文隔离屏障”。需求拆解完成后系统分析各个子任务的输入输出契约。只要子任务之间没有数据依赖就通过异步协程并发调度。同时每个 Agent 在被触发时仅接收其特定任务所必需的精简上下文阻断全局历史的盲目透传。重构后应缩短请求链路、明确模块边界并将可复用能力抽到稳定接口中。若数据检索与代码生成没有依赖可以在 DAG 中并行若生成必须引用检索结果就仍应保留依赖。上下文裁剪后还要回归审计召回率和输出质量不能只看 Token 下降。3. 异步并发与 Prompt 裁剪防线代码实现为了在工程中落地 DAG 并行与 Token 隔离机制基于 Python 的asyncio和pydantic实现一套轻量级 Agent 调度框架。代码展示了如何通过异步任务组并发调度无依赖 Agent并通过上下文提取器精简 Promptimport asyncio import time from typing import Dict, Any, List from pydantic import BaseModel, Field class AgentTask(BaseModel): task_id: str agent_type: str dependencies: List[str] Field(default_factorylist) input_payload: Dict[str, Any] Field(default_factorydict) class TokenMetrics(BaseModel): prompt_tokens: int 0 completion_tokens: int 0 total_latency_ms: float 0.0 class AsyncAgentDispatcher: 异步多 Agent 调度器支持依赖解析与上下文隔离裁剪 def __init__(self, llm_client): self.llm_client llm_client self.metrics: Dict[str, TokenMetrics] {} def _prune_context_for_agent(self, agent_type: str, raw_context: Dict[str, Any]) - str: 根据 Agent 职责强制裁剪 Prompt阻断冗余上下文透传 if agent_type security_audit: # 安全审计只需要代码和输入参数裁剪掉无关的检索文档 code raw_context.get(generated_code, ) return f请审计以下代码的安全隐患仅输出风险项\npython\n{code}\n elif agent_type data_retrieval: query raw_context.get(user_query, ) return f根据查询提取关键词并返回检索结果{query} elif agent_type code_generator: spec raw_context.get(spec, ) return f根据以下规格编写 Python 函数\n{spec} else: return str(raw_context) async def _execute_single_agent(self, task: AgentTask, context: Dict[str, Any]) - Dict[str, Any]: start_time time.perf_counter() pruned_prompt self._prune_context_for_agent(task.agent_type, context) # 模拟 LLM 异步调用与 Token 统计 prompt_len len(pruned_prompt) response_text, usage await self.llm_client.async_generate( agent_typetask.agent_type, promptpruned_prompt ) elapsed_ms (time.perf_counter() - start_time) * 1000 self.metrics[task.task_id] TokenMetrics( prompt_tokensusage.get(prompt_tokens, prompt_len // 4), completion_tokensusage.get(completion_tokens, len(response_text) // 4), total_latency_mselapsed_ms ) return {task.task_id: response_text} async def run_dag(self, tasks: List[AgentTask], initial_context: Dict[str, Any]) - Dict[str, Any]: completed_results: Dict[str, Any] dict(initial_context) pending_tasks {t.task_id: t for t in tasks} while pending_tasks: # 筛选出当前依赖已全部就绪的任务 ready_tasks [ task for task in pending_tasks.values() if all(dep in completed_results for dep in task.dependencies) ] if not ready_tasks: raise RuntimeError(DAG 存在循环依赖或未满足的依赖节点) # 并行并发执行所有已就绪的 Agent 任务 coroutines [ self._execute_single_agent(task, completed_results) for task in ready_tasks ] results_list await asyncio.gather(*coroutines) # 更新上下文并移除已完成任务 for res in results_list: completed_results.update(res) for task in ready_tasks: del pending_tasks[task.task_id] return completed_results工程落地的核心在于_prune_context_for_agent方法。这里用字段白名单代替二次模型摘要便于审计输入来源。它是否减少延迟和费用需要用相同请求集比较若裁剪后任务成功率下降应补回必要字段而不是继续压缩。4. 用同一请求集比较延迟与 Token准备一组脱敏或合成请求固定模型版本、并发、缓存状态和重试策略分别运行串行方案与 DAG 方案。请求数量由环境容量决定不预设为固定次数。按任务类型拆分结果避免一个均值掩盖长上下文或工具超时。表格先保留字段运行测试后再填值指标采集来源比较时必须固定的条件P50、P99 与 TTFT入口 Trace、模型调用 Trace请求集、并发、模型版本、缓存和重试Prompt / Completion Token模型 usage 记录Prompt 模板、工具返回与输出质量要求单次费用实际 Token 与当前价格表计费区域、缓存折扣和失败重试完成吞吐与任务成功率负载工具、任务判定器实例资源、到达率和质量门槛只有输出质量与错误率没有退化才能把延迟或费用变化归入收益并行化和裁剪只是待验证的原因。5. 架构治理与工程防线总结AI 应用落地不能只等模型自身提速还要把依赖关系、上下文和预算做成可观测的工程约束。在搭建多 Agent 协作系统时建议遵循以下工程规范阻断无选择的 Context 透传每个 Agent 仅能读取其执行当前任务所必需的最小数据集合。构建基于 DAG 的异步拓扑明确 Agent 之间的依赖关系对于无依赖关系的节点采用异步并发调用。建立 Token 预算与延迟监控告警线上持续监控各个 Agent 节点的 P99 耗时与 Token 输入输出比例当 Prompt Token 出现异常增长时及时触发熔断与排查机制。将延迟、Token、错误率和任务质量放进同一张监控视图才能判断这次改图或裁剪究竟有没有改善。

相关新闻

基于微信小程序的社区维修服务平台系统(毕设源码+文档)

基于微信小程序的社区维修服务平台系统(毕设源码+文档)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/10/17 6:09:50 阅读更多 →
AI Agent开发实战:从零构建具备自主规划与执行能力的智能体

AI Agent开发实战:从零构建具备自主规划与执行能力的智能体

最近在AI领域,一个重磅融资消息引发了广泛关注:AI初创公司River AI宣布完成了高达11亿美元的B轮融资,由知名风投General Catalyst领投。这不仅是今年AI赛道最大规模的融资之一,也标志着AI Agent(智能体)技术…

2026/10/17 6:10:03 阅读更多 →
雨晨 Windows 11 IoT 企业版 LTSC 26H1 特制 28000.2796

雨晨 Windows 11 IoT 企业版 LTSC 26H1 特制 28000.2796

基于UUPDL-28000.1.251103-1709.BR_RELEASE_CLIENTPRO_OEMRET_X64FRE_ZH-CN.ISO镜像离线装载制作,添加Windows11.0-KB5120996-x64.msu更新(通过自制LTSC特征包安装转换,非简单添加SKU,可以通过Dism /Online /Get-CurrentEdition和…

2026/10/17 6:14:22 阅读更多 →

最新新闻

Agent Infra全解析:从智能体基础设施到工程实践

Agent Infra全解析:从智能体基础设施到工程实践

前几年聊AI,所有人都在盯着模型的参数规模和榜单分数,一个模型发布,刷屏的是几个基准测试的涨点。但从去年下半年开始,我明显感觉到风向变了。身边做产品的朋友,不再张口闭口“换个大模型”,而是开始问一些…

2026/10/18 12:12:18 阅读更多 →
STM32Cube_FW_F3固件包安装与HAL工程搭建避坑指南

STM32Cube_FW_F3固件包安装与HAL工程搭建避坑指南

简介:STM32Cube_FW_F3_1.11.0.zip是意法半导体为STM32F3系列微控制器推出的官方HAL封装库软件包,面向基于ARM Cortex-M4内核进行嵌入式开发的工程师与学习者,帮助其摆脱底层寄存器操作,通过标准化API快速驱动GPIO、ADC、DAC、UART…

2026/10/18 12:12:18 阅读更多 →
AI全栈开发工程师修炼指南:技术栈、转型路径与实战复盘

AI全栈开发工程师修炼指南:技术栈、转型路径与实战复盘

1. 角色定位与能力模型解读1.1 什么是AI全栈开发工程师AI全栈开发工程师这个概念,近两年被频繁提起,但很多人的理解还停留在“会调大模型接口的前端后端开发者”。我在实际参与过几个完整的AI项目之后,对这个角色的认知有了明显变化&#xff…

2026/10/18 12:12:18 阅读更多 →
GPT-6.1 Sol Ultrafast 实测:推理速度、成本与API接入全解析

GPT-6.1 Sol Ultrafast 实测:推理速度、成本与API接入全解析

最近这一个来月,我一直在跟新的模型版本较劲。GPT-6.1 Sol Ultrafast 上线那天,我刚跑完一组长上下文压测,本以为又是一次常规迭代,仔细看完文档之后才发现这代模型在推理速度和接口设计上做了些很不一样的东西。很多朋友在后台问…

2026/10/18 12:12:18 阅读更多 →
BIO NIO AIO 区别与原理:一篇文章读懂Java网络IO模型

BIO NIO AIO 区别与原理:一篇文章读懂Java网络IO模型

BIO、NIO、AIO这三个词,但凡做Java后端的人应该都见过,面试八股文里的常客,也是很多人在“阻塞、非阻塞、同步、异步”这几个概念里绕来绕去绕不清的地方。我当年刚接触Netty的时候,也在这上面吃过不少亏,后来把系统调…

2026/10/18 12:12:18 阅读更多 →
贝叶斯网络在电力故障诊断中的实战:小样本与可解释推理

贝叶斯网络在电力故障诊断中的实战:小样本与可解释推理

简介:贝叶斯网络是一种以概率图模型表达变量间因果依赖的数学框架,其核心原理是通过有向无环图与条件概率表来描述不确定性关系。在工程实践中,它尤其擅长处理小样本、高不确定性的归因问题——例如电网调度中保护动作、断路器状态与故障类型…

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

日新闻

基于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/16 14:23:36 阅读更多 →