LiteFlow LiteFlow
首页
  • v2.16.0 (当前版本)
  • What's New

    • What' s New In LiteFlow v2.15.3?
  • 历史版本

    • v2.15.X
    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
AI Agent
IDEA 插件
  • 答疑解惑

    • 常见问题
    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念?
  • 项目与社区

    • 项目介绍
    • 项目成员
    • 更新记录
    • 参与开发
    • 加入群聊
    • 谁在使用
赞助
GitHub (opens new window)

广告采用随机轮播方式显示 ❤️成为赞助商
首页
  • v2.16.0 (当前版本)
  • What's New

    • What' s New In LiteFlow v2.15.3?
  • 历史版本

    • v2.15.X
    • v2.13.X
    • v2.12.X
    • v2.11.X
    • v2.10.X
    • v2.9.X
    • v2.8.X
  • 升级指南

    • 2.13.0升级指南
    • 2.12.4升级指南
    • 2.12.0升级指南
    • 升级到2.9.3说明
    • 升级到2.9.X说明
    • 升级到2.8.X说明
    • 升级到2.7.X说明
AI Agent
IDEA 插件
  • 答疑解惑

    • 常见问题
    • 如何理解上下文这个概念?
    • Slot是一个什么样的概念?
  • 项目与社区

    • 项目介绍
    • 项目成员
    • 更新记录
    • 参与开发
    • 加入群聊
    • 谁在使用
赞助
GitHub (opens new window)
  • 🤖 什么是 Re-Act Agent
  • 快速开始

    • 📦 引入依赖
    • ⚙️ 基本配置
    • 🧩 编写 Agent 组件
    • 📤 获取 Agent 结果
    • 🌊 流式输出
  • 🏪 模型配置
  • 会话与记忆

    • 💬 会话标识
    • 🧠 记忆持久化
    • 🔄 多轮对话
  • 工作空间与工具

    • 📂 Workspace 配置
    • 📄 文件工具
    • 🐚 Shell 工具
    • 🔧 自定义工具
  • 🎯 Skills 技能系统
  • 高级编排

    • 🔀 条件路由与并行调用
      • 用 IF 做条件路由
      • 用 WHEN 并行调用多个模型
      • 复杂编排模式
    • 🤝 多 Agent 协作
  • 运行机制与可观测

    • 🔁 迭代次数与 Summary
    • 📋 Re-Act 事件日志
    • 🪝 自定义 Hook
  • 📖 扩展点速查
  • ⚡ 配置速查
  • 🛡️ 安全建议
  • 🔍 故障排查
  • 🎬 演示项目
  • AI Agent编排
  • 高级编排
铂赛东
2026-05-23
目录

🔀 条件路由与并行调用

# 用 IF 做条件路由

根据业务条件选择不同的 Agent 处理请求:

<chain name="routerChain">
    THEN(
        prepare,
        IF(isMath, mathAgent, deepseekAgent),
        recordReply
    );
</chain>

isMath 是普通的 NodeBooleanComponent,mathAgent 和 deepseekAgent 都是 ReActAgentComponent 子类。

@LiteflowComponent("isMath")
public class IsMathCmp extends NodeBooleanComponent {
    @Override
    public boolean processBoolean() throws Exception {
        String input = (String) this.getSlot().getChainReqData(getSlot().getChainId());
        return input != null && input.contains("计算");
    }
}

# 用 WHEN 并行调用多个模型

同时调用多个模型的 Agent 进行分析:

<chain name="parallelChain">
    THEN(
        prepare,
        WHEN(deepseekAgent, dashscopeAgent).maxWaitSeconds(60),
        recordReply
    );
</chain>

默认情况下,同一条 chain 内的多个 Agent 共享同一个 conversationId,但因为 agentKey() 默认是各自的 nodeId,所以它们会使用不同的 Session、不同的锁和不同的 memory,可以并行执行。

并行注意事项

如果多个 Agent 覆写为相同的 agentKey(),它们会因为同一把 Session 锁而串行执行。要真正隔离并行,确保 (conversationId, agentKey) 组合不同:

@Override
protected String agentKey() {
    return getNodeId() + "-" + getSlot().getRequestId();
}

# 复杂编排模式

<!-- 准备 → 并行分析 → 汇总决策 → 后处理 -->
THEN(
    prepare,
    WHEN(analyzerAgent, riskAgent),
    summaryAgent,
    notify
);

<!-- 根据条件选择不同处理链 -->
SWITCH(routeCmp).to(
   THEN(agentA, processA),
    THEN(agentB, processB),
    THEN(agentC, processC)
);

<!-- 循环处理直到满足条件 -->
FOR(processAgent).doWhile(checkResult);
帮助我们改善此文档 (opens new window)
上次更新: 2026/05/24, 14:26:24
🎯 Skills 技能系统
🤝 多 Agent 协作

← 🎯 Skills 技能系统 🤝 多 Agent 协作→

Theme by Vdoing | Copyright © 2020-2026 铂赛东 | MIT License
沪ICP备18012955号-2