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

    • What' s New In LiteFlow v2.16.2?
    • What' s New In LiteFlow v2.16.1?
    • What' s New In LiteFlow v2.16.0?
  • 历史版本

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

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

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

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

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

    • What' s New In LiteFlow v2.16.2?
    • What' s New In LiteFlow v2.16.1?
    • What' s New In LiteFlow v2.16.0?
  • 历史版本

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

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

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

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

    • 📦 引入依赖
    • ⚙️ 基本配置
    • 🧩 编写 Agent 组件
    • 📤 获取 Agent 结果
    • 🌊 流式输出
      • 接收增量并获取最终结果
      • 启动与验证
      • 展示执行状态
  • 🎬 演示项目
  • 🏪 模型配置
  • 📐 结构化输出
  • Jev 智能选择组件

    • Jev 模型与模块介绍
    • 依赖与配置
    • 编写选择组件
    • 置信度与异常处理
    • 客服演示与测试
  • Jev 布尔判断组件

    • Noul 与布尔判断组件
    • 编写布尔组件
  • 会话与记忆

    • 💬 会话标识
    • 🧠 会话存储
    • 🔄 多轮对话
    • 🗂️ 聊天历史
    • 📝 长对话与长期记忆
  • 工作空间与工具

    • 📂 工作区与执行环境
    • 📄 文件工具与产物
    • 🐚 Shell 工具
    • 🐳 Docker 沙箱
    • 🔧 Java 业务工具
    • 🔌 MCP 工具
  • 🎯 Skills 技能系统
  • 高级编排

    • 🔀 条件路由与并行调用
    • 🤝 多 Agent 协作
    • 🙋 工具调用前人工确认
    • 🧭 子代理与计划
    • 🌐 远程 A2A 调用
  • 运行机制与可观测

    • 🔁 迭代次数与超时
    • 📋 执行日志与事件
    • 🪝 中间件扩展
  • 📖 扩展点速查
  • ⚡ 配置速查
  • 🛡️ 执行与访问边界
  • 🔍 故障排查
  • ⬆️ 升级到 2.16.2
  • AI Agent编排
  • 快速开始
铂赛东
2026-09-19
目录

🌊 流式输出

沿用快速开始组件,在模型 Spec 上设置 .stream(true),再通过 ExecuteOption.eventListener(...) 接收事件。

# 接收增量并获取最终结果

.stream(true) 开启模型流式响应。创建以下服务,通过 agent.text.delta 事件接收文本增量,执行成功后返回完整回复:

import com.yomahub.liteflow.core.ExecuteOption;
import com.yomahub.liteflow.core.FlowExecutor;
import com.yomahub.liteflow.flow.LiteflowResponse;
import org.springframework.stereotype.Service;
import java.util.function.Consumer;

@Service
public class ChatService {
    private final FlowExecutor flowExecutor;

    public ChatService(FlowExecutor flowExecutor) {
        this.flowExecutor = flowExecutor;
    }

    public String chat(String input) {
        return chat(input, delta -> {});
    }

    public String chat(String input, Consumer<String> onTextDelta) {
        LiteflowResponse response = flowExecutor.execute2Resp(
                "chatChain", input,
                ExecuteOption.of().eventListener(event -> {
                    if ("agent.text.delta".equals(event.getType())
                            && event.getText() != null) {
                        onTextDelta.accept(event.getText());
                    }
                }));
        if (!response.isSuccess()) {
            throw new IllegalStateException("Agent 执行失败", response.getCause());
        }
        return response.getSlot().getResponseData();
    }
}

在注入 ChatService 的 Controller、测试或其他业务代码中调用:

String answer = chatService.chat("介绍一下 LiteFlow", System.out::print);
System.out.println();

运行时,控制台会随着模型生成逐段输出文本;方法返回后,answer 是完整回复。只需要完整回复时调用 chatService.chat("介绍一下 LiteFlow"),无需提供回调。

execute2Resp(...) 会等待执行结束,但事件回调在执行过程中触发。已经展示了增量内容后,不要再把完整回复追加一次。

前端流式展示时,把回调接到应用的 SSE 或 WebSocket 发送逻辑。普通 Controller 等方法结束后才返回 answer,浏览器就只能收到最终结果。更多事件见本页下方的“展示执行状态”。

# 启动与验证

以上示例依赖现有 Spring Boot 启动类及组件扫描。运行项目前,在同一启动环境中配置 API Key:

export DEEPSEEK_API_KEY='替换为你的 API Key'
mvn spring-boot:run

调用上面的服务,应看到流式回复,并在进程工作目录下生成 data/agent-state。此时每次调用都是新对话;连续对话见多轮对话。

# 展示执行状态

快速开始已展示 agent.text.delta 的监听方式。同一个监听器还可以根据事件类型显示执行状态:

事件 常见用途
agent.text.delta 正文增量,读取 event.getText()
agent.tool.call.start/agent.tool.call.end 工具调用开始/参数接收结束
agent.tool.result.end 工具结果完成
agent.confirm.required/agent.confirm.result 人工确认请求/结果
agent.result 当前 Agent 的结果
agent.error 执行错误

多 Agent 流程可通过事件的节点和请求标识区分来源。agent.result 不代表整条链结束,最终仍应检查 response.isSuccess()。监听器异常默认会中断调用;允许展示事件丢失时,才设置 event.listener-failure-mode=LOG_AND_CONTINUE。

帮助我们改善此文档 (opens new window)
上次更新: 2026/09/20, 11:49:27
📤 获取 Agent 结果
🎬 演示项目

← 📤 获取 Agent 结果 🎬 演示项目→

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