Orchestrator 为什么比 Agentic Loop 快:LLM 决策与执行分离的架构解析

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: Orchestrator模式将LLM角色解耦:仅用两次调用——一次路由决策(定执行策略)、一次结果合成;中间执行由确定性代码完成,支持单Agent、并行扇出、顺序DAG三种模式,成本降70%,延迟减半,更适合高并发生产环境。

一个简单的agentic loop就是一个

while

循环,LLM 在其中决定做什么、执行工具、观察结果、再做决定。

这模式能用是可以用的不过有个最大的问题,就是费钱:

一个三 agent 查询要是用 agentic loop那么7 次 LLM 调用,4.2 秒,0.12 美元。如果用 orchestrator的话 2 次 LLM 调用,1.1 秒只要0.03 美元。同样的 agent同样的答案,却便宜 70%。

循环每转一圈就是一次 LLM 调用。每次调用多花 300-800ms 延迟和钱。简单的"调 check_greeting,再调 handle_hi",两次 LLM 路由没问题,但是

  • 为单个答案并行调三个 agent
  • 执行顺序计划,步骤 2 依赖步骤 1
  • 在生产中扛每秒几百个请求

agentic loop 就撑不住了。LLM 卡在每次决策的关键路径上,每次决策都会延迟。

所以最简单的方法就是,让 LLM 只规划一次然后不靠它执行

Orchestrator 模式只需要两次调用,不是十次

整个架构三步:

 User Query  
    ↓  
[STEP 1: ROUTE]     ← 一次 LLM 调用:"哪些 agent 来处理?"  
    ↓  
[STEP 2: EXECUTE]   ← 无 LLM:确定性调用 agent  
    ↓  
[STEP 3: SYNTHESIZE] ← 一次 LLM 调用:"把结果写成好答案"  
    ↓  
 Final Answer

LLM 两请求——一次定计划,一次写答案。中间全是应用代码在跑。没有循环,也没有不确定性,没有"LLM 会不会又调一个工具?"这样的问题。

一个处理三种查询类型的 orchestrator大概如下:

  1. 单 agent——"当前系统指标?"→ 路由到一个 agent
  2. 并行扇出——"给我指标和趋势分析"→ 同时调两个 agent
  3. 顺序 DAG——"检查异常,有则拉配置"→ 按依赖顺序调 agent

同样的 agent同样的工具,但 LLM 只做一次路由决策,剩下全是应用执行。

Agent 注册表作为发现协议

Agent 用一个简单的字典注册能力。不需要发现协议——你自己部署的 agent,你知道它们能做什么:

 REGISTRY = {  
    "data_agent__get_report": {  
        "agent": "Data Agent",  
        "description": "Fetch the latest report for a given entity",  
        "execute": get_report,  
    },  
    "analytics_agent__get_trends": {  
        "agent": "Analytics Agent",  
        "description": "Get historical trends and anomaly detection",  
        "execute": get_trends,  
    },  
    "config_agent__check_config": {  
        "agent": "Config Agent",  
        "description": "Check system configuration for a given component",  
        "execute": check_config,  
    },  
 }

线上部署时注册表放在 Redis 或数据库里,agent 通过 HTTP POST 注册。模式一样——技能名到执行函数的查找表。

LLM 把 agent 看成工具定义(JSON schema),但关键在第四个元工具

 {  
    "name": "plan_execution",  
    "description": "Use this ONLY when the query requires sequential steps "  
                   "where a later step DEPENDS on the result of an earlier step.",  
    "parameters": {  
        "properties": { "reason": {"type": "string"} },  
        "required": ["reason"]  
    },  
 }

plan_execution 不调任何 agent——它什么都不做。它是一个信号不是函数。LLM 选中它时,orchestrator 知道该切到顺序模式了。一次 LLM 调用、一组工具选择、三种执行策略——单 agent、并行、顺序——全由返回的工具决定。

第一步:一次 LLM 调用统管的路由器

路由器用 temperature=0.0(确定性)做一次 LLM 调用。LLM 唯一的工作是选工具。明确告诉它不要回答问题。

 SYSTEM_PROMPT = """You are a query router. Your ONLY job is to decide which tool(s) to call.  

Rules:  
- If the query needs ONE agent, call that one tool.  
- If the query needs MULTIPLE INDEPENDENT agents, call all of them.  
- If the query needs steps IN ORDER, call plan_execution.  

 Do NOT answer the user's question — just pick tools."""

单次调用:

 response = client.chat.completions.create(  
     model=deployment,  
     messages=[{"role": "system", "content": SYSTEM_PROMPT},  
               {"role": "user", "content": query}],  
     tools=TOOL_DEFINITIONS,  
     tool_choice="auto",  
     temperature=0.0,  
 )

整个路由逻辑非常简单

 tool_names = [tc.function.name for tc in reply.tool_calls]  

 if "plan_execution" in tool_names:   → mode = "sequential"  
 elif len(tool_names) == 1:            → mode = "single"  
 else:                                 → mode = "parallel"

LLM 返回结构化的工具调用,一个工具→单 agent。多个工具→并行。plan_execution 元工具→顺序。一次调用,三种策略。

第二步:不需要 LLM的执行器

这是 orchestrator 真正省成本的地方。执行器是纯 Python——没有 LLM、没有不确定性、没有延迟炸弹。三种模式:

Single——直接跑 agent:

 result = REGISTRY[tool_name]["execute"]()

Parallel——同时跑所有 agent:

 with concurrent.futures.ThreadPoolExecutor() as pool:  
     futures = {name: pool.submit(REGISTRY[name]["execute"]) for name in tool_names}  
     results = {name: f.result() for name, f in futures.items()}

Sequential——按顺序跑,传递上下文:

 for step in plan:  
     results[step["tool"]] = REGISTRY[step["tool"]]["execute"]()

零 LLM 消耗,所以线上部署时换成 asyncio.gather 加 HTTP 调用就行。

路由之后系统就和其他微服务编排没区别。延迟可预测,调试直来直去,可观测性用标准工具就够。"AI"被压到两层(路由和合成)里,中间全是确定性的执行,也方便调试。

第三步:润色答案的合成器

Agent 输出的是 JSON,用户要的是自然语言。再来一次 LLM 调用把数据转成响应:

 response = client.chat.completions.create(  
     model=deployment,  
     messages=[  
         {"role": "system", "content": "Summarize the agent results into a clear, helpful answer."},  
         {"role": "user", "content": f"User asked: {query}\nResults: {json.dumps(results)}"},  
     ],  
     temperature=0.7,  
 )

注意路由用 0.0、合成用 0.7是因为路由要精确,合成要可读。不同的工作所以需要不同参数。

三种查询,三种模式

完整管道就三个函数调用:

 decision = route_query(client, deployment, query)       # LLM 调用 1  
 results  = execute(decision)                            # 无 LLM  
 answer   = synthesize(client, deployment, query, results)  # LLM 调用 2

查询 1——Single:"当前系统指标?"→ 路由器选 data_agent__get_report → 执行器调它 → 合成器写摘要。

查询 2——Parallel:"给我指标和趋势分析"→ 路由器选两个 agent → 执行器同时调 → 合成器合并结果。

查询 3——Sequential:"检查异常,有则拉配置"→ 路由器选 plan_execution → 执行器先跑 analytics 再跑 config → 合成器解释链条。

同一个管道,三种执行策略,始终是两次 LLM 调用。

总结

Agentic loop 把 LLM 同时当大脑和手——每步既决策又执行。Orchestrator 把两者拆开:

  • LLM = 大脑 → 定计划(一次调用)
  • 应用 = 手 → 执行计划(确定性)
  • LLM = 嘴 → 解释结果(一次调用)

这套分离就是 orchestrator 能扩的原因。"大脑"(路由)可以缓存——相同查询在 temperature=0.0 下始终走相同路由。"手"(执行)就是 HTTP 调用。"嘴"(合成)是唯一的创造步骤。线上场景里,API 消费者如果要原始 JSON,连合成那一步都能省——压到每个请求一次 LLM 调用。

所以Agentic loop 适合前期的探索工作,而Orchestrator 适合生产。

https://avoid.overfit.cn/post/8c270e259b2a4172ac95d38d9ab68211

by Amogh Ubale

目录
相关文章
|
1月前
|
人工智能 安全 测试技术
02|Agent Harness 的核心组成:模型、上下文、工具、文件系统和终端
Agent Harness 是AI编程的工程执行系统,不止依赖大模型:模型负责推理,上下文精准供给信息,工具赋予行动力,文件系统承载代码修改,终端闭环验证结果,权限保障安全边界。五者协同,才能真正完成任务而非仅输出建议。(238字)
167 0
|
2月前
|
人工智能 自然语言处理 供应链
为什么 MCP 在协议层会有 prompt injection的问题:工具描述如何劫持 agent 上下文
MCP(Model Context Protocol)虽成AI Agent主流集成标准,但其将工具描述全量注入上下文的设计,导致“Context Poisoning”——恶意指令可借工具元数据污染LLM推理。OWASP将其列为LLM应用头号漏洞,2025年已致超10万站点遭袭。根本风险在于协议层信任模型缺失,非清洗不可用。
215 12
为什么 MCP 在协议层会有 prompt injection的问题:工具描述如何劫持 agent 上下文
|
1月前
|
存储 弹性计算 数据库
阿里云服务器ECS免费试用攻略:0成本试用体验与申请与使用注意事项
阿里云ECS免费试用活动为新手用户提供零成本上云体验。完成实名认证且从未购买过ECS的用户,可申请3个月免费试用:个人用户享300元额度(0.833元/小时),企业用户享660元额度(1.833元/小时),每月另赠20GB国内+200GB海外公网流量,支持华北2、杭州、广州等7大免费地域。试用期内可灵活调整实例配置,适用于网站托管、开发测试、数据库部署等多种场景。超出额度按量计费,到期未释放将自动转为按量付费。
|
1月前
|
存储 SQL 安全
【Java并发编程】JMM Java内存模型:原子性、可见性、有序性、happens-before原则(附《思维导图》+《面试高频考点清单》)
Java内存模型(JMM)是Java并发编程的基石,抽象定义主内存与线程工作内存的交互规则,系统解决可见性、原子性、有序性三大核心问题,并通过happens-before、volatile、synchronized等机制保障多线程安全与跨平台一致性。
|
1月前
|
人工智能 Kubernetes 安全
【重磅】 Blade AI 自主韧性测试智能体正式开源
本次阿里云峰会上发布韧性测试智能体 Blade AI:用自然语言一句话自动完成系统韧性测试全流程。
416 15
|
11天前
|
前端开发 安全 JavaScript
Harness Engineering 实践案例:如何Agent 写一份行为规范
本文展示Harness Engineering落地实践:通过`AGENTS.md`(行为总纲)、`ARCHITECTURE.md`(系统骨架)等结构化文档,为编码Agent建立可追溯、可审计、防幻觉的工作规范,实现RAG+微调系统的可控开发。
133 4
Harness Engineering 实践案例:如何Agent 写一份行为规范
|
1月前
|
弹性计算 监控 Java
Maven 并行构建配置:-T 4C 提速 4 倍实战
本文深入讲解了 Maven 并行构建的核心原理和实战技巧,包含 -T 参数详解、模块并行化改造、性能监控与分析等企业级最佳实践。通过真实案例展示了如何将多模块项目的构建时间从 45 分钟缩短到 11 分钟(提升 4.1 倍),提供完整的性能测试脚本和优化检查清单。掌握这些技能,你将能够充分利用多核 CPU 加速 Maven 构建。适合 Java 开发者、架构师、DevOps 工程师阅读。
|
1月前
|
人工智能 运维 JavaScript
新版实操手册 OpenClaw和Hermes Agent阿里云部署配置与使用详解
随着AI智能体技术不断落地,OpenClaw与Hermes Agent两款开源智能代理工具,凭借私有化部署、功能全面、拓展性强、适配国内大模型等特点,成为开发者、运维人员、办公群体的热门选择。两款工具定位各有侧重,OpenClaw偏向全场景自动化任务执行,支持文件操作、脚本运行、多平台消息联动;Hermes Agent则聚焦智能对话、多轮任务编排、长上下文交互,二者均可依托阿里云服务器实现7×24小时不间断运行。
456 3
|
1月前
|
算法 测试技术 PyTorch
在 AMD ROCm DSW 上部署 Qwen3.6-27B-FP8:vLLM、MTP 解码加速与小并发压测
本文记录一次在 ModelScope DSW AMD GPU 实例上完成的 Qwen3.6-27B-FP8 推理实践。实验重点不是单纯证明模型可以启动,而是围绕 vLLM ROCm 服务、Qwen MTP 投机解码、near-8K 长上下文正确性验证、FP8 KV cache 和小并发 serving 压测,整理一套可复现、可复查、可继续扩展的 AMD GPU 大模型推理 baseline。
695 0
|
20天前
|
监控 算法 安全
跌倒行为目标检测数据集| 5200张 YOLO安防监护数据集
本数据集含5200张YOLO格式标注图像,聚焦跌倒行为检测,覆盖居家、病房等真实场景,支持YOLOv5/v8/v10等主流模型。专为智慧养老、安防监护与目标检测研究设计,具备姿态多样、光照复杂、遮挡丰富、人工精标等优势。