前途科技
  • 科技
  • AI
    • AI 前沿技术
    • Agent生态
    • AI应用场景
    • AI 行业应用
  • 初创
  • 报告
  • 学习中心
    • 编程与工具
    • 数据科学与工程
我的兴趣
前途科技前途科技
Font ResizerAa
站内搜索
Have an existing account? Sign In
Follow US
Copyright © 2024 AccessPath.com, 前途国际科技咨询(北京)有限公司,版权所有。 | 京ICP备17045010号-1 | 京公网安备 11010502033860号
Agent生态

Spring AI Alibaba实践:后台定时Agent深度解析与应用

NEXTECH
Last updated: 2025年10月12日 上午6:57
By NEXTECH
Share
62 Min Read
SHARE

参考Langchain的这篇文章[1],除了目前常见的Chat模式Agent形态以外,Agent还可以充分发挥新的运行形态:

Contents
为什么需要自主运行Agent?如何构建定时运行Agent?基于SAA自主运行Agent展示
  • 自主持续运行Agent: 突破了大部分AI应用依赖用户主动发起对话(Chat)聊天模式的限制。Agent通过监听环境信号(如定时运行、消息事件、上下文变化),作为智能体按计划定时运行,在实际业务场景中非常有用。
  • Agent发起人机交互: 关键在于部分任务需通过“人工确认”机制(如通知、提问、审核)确保与用户目标一致。Agent在自主运行过程中需要一个人机交互窗口,支持人工介入,从而在自主性与可控性间取得平衡。

Spring AI Alibaba(以下简称SAA)为开发上述形态的Agent提供了相应的框架支持,方便业务快速实现这些场景下的Agent开发。

为什么需要自主运行Agent?

通过自主运行的Agent可以充分发挥其执行效率,使其具备按预设规划自主工作的能力,无需每次都等待人类指令运行。可将Agent视为一个能替代部分工作并自主运行的“智能体”。

Agent能力增强和自主能力提升的局面

随着Agent能力和自主性的提升,预计将出现以下局面:

  • 个体创业者的能力边界将被大幅拓宽。
  • 在工程领域,多人协同的工作可拆解为由一个人与多个Agent共同完成,以提高生产效率。

从业务需求的角度看,可以探索和挖掘以下应用场景:

You Might Also Like

语义治理:面向AI时代的企业数据治理新范式
AI驱动支付提效40%:一键接入系统技术架构与大模型优化实践
从99.9%到99.99%:Dify高可用部署的5大实战方案
迈富时副总裁李玠佚:AI原生SaaS将取代传统SaaS,详解企业级智能体中台战略

自动化周期性业务

面向企业经营的业务系统,可构建周期性自动收集分析数据、提取数据核心要素、可视化经营报表生成等场景。通过定时运行的Agent可实现无人值守的自动化执行,显著提升数据分析整理效率。相较于传统经营报表,通过模型对非结构化数据的分析总结能力,可显著提升报告质量。

批量清算处理

部署多个Agent,每个Agent可同时批量并行处理不同维度的数据信息。在金融行业智能投研领域,AI Agent可批量处理来自不同数据源渠道的海量金融数据、新闻资讯和社交媒体信息,借助大模型充分挖掘行业投资机遇和风险事件。

事件应急预案响应

在物联网、安全监控等场景中,系统需对突发消息事件(如设备报警、用户行为、危险事件识别触发)做出自动响应。后台常驻Agent可通过监听消息队列或定时巡检扫描的方式运行,分析识别事件等级并发布相应级别的告警消息。

人类参与决策判断

Agent自动处理任务,仅在需要时提示人类进行决策判断以提升效率。例如,Agent每天固定时间自动采集汇总供应商的新闻、舆情及社交平台讨论,并进行风险分类与情绪分析;当遇到高风险负面事件(如食品安全事故)时,Agent能通知管理人员人工介入判断,选择下一步行动策略,例如生成自检报告、批量通知各网点下架对应供应商产品等。

复杂长周期任务

现阶段,大批量基于模型进行数据分析处理的场景往往执行较慢,不适合构建Chat模式交互。通过任务固定周期触发、涉及跨域和多模态数据分析,Agent可在后台进行数据预加工处理,最终为用户提供加工完成后的数据信息。

周期性任务记忆管理

定时后台运行的Agent在每个周期执行后可管理其对应的多个周期的执行记忆。通过周期执行记录信息,可分析数据随时间周期的变化过程。例如,当出现舆论舆情时,可根据周期变化来分析事件是持续发酵还是逐步消退,并根据变化趋势智能路由下一步决策。

如何构建定时运行Agent?

目前市面上定时AI Task相关的应用,主要分为以下几类:

对比维度 Chat聊天模式 低代码平台 Agent开发框架
代表性产品 ChatGPT Task、Manus Task 百炼、Coze、Dify LangGraph、Spring AI Alibaba
使用方式 通过聊天提示按指定周期执行某项任务 配置定时触发器,或通过第三方定时触发源运行 提供API设置定时执行
特点说明 基于提示词的简单周期性总结提醒 低代码开发场景,依赖外部触发源管理;可通过MSE任务调度产品配置Http任务触发运行 高代码场景,适合开发复杂企业级AI Agent应用;LangGraph CronJob需要对接其专用调度平台支持

接下来重点说明SAA中的定时Agent设计构想。为了支持后台自主执行的Agent,在CompiledGraph上提供了schedule(ScheduleConfig config)方法,可自由设置该Agent定时执行。后台定时运行的Agent任务在设计上都通过ScheduledAgentManager进行注册管理。目前,开源默认实现提供了单机应用进程内的Agent任务运行管理实现。

Spring AI Alibaba定时Agent设计构想

通过上述方式,后续可支持在分布式部署场景下的定时Agent任务运行,同时为自定义Agent任务可视化管理和运行监控提供扩展点。

基于SAA自主运行Agent展示

Spring AI Alibaba作为Agent开发框架,为业务开发Agent提供了便捷的解决方案,同时在框架侧也提供了构建定时运行Agent的能力。后续将通过框架提供的定时调度、人工节点功能,实现两个实践案例:店铺经营分析Agent、评价舆情分析Agent。

店铺经营日报Agent

通过SAA框架可以方便地开发出自定义的Agent(Workflow Agent)。相比于低代码平台的流程构建,通过编码方式定义Agent流程更适合高度定制的场景。例如,当前的Agent需要从多个维度(交易订单、产品说明、客户画像信息、门店基础信息、客户评价反馈等)提取对应的数据信息,通过业务编码结合Prompt模板提供给LLM进行分析处理,在实现上更具灵活性和可控性。

通过这种方式,业务报表既能保持关键数据的准确性,又可结合发挥模型对非结构化数据分析的优势,提炼总结出报告的核心要点和下一步行动方案。

店铺经营日报Agent工作流程图

参考代码

@Bean
public CompiledGraph dailyReportAgent(ChatModel chatModel) throws GraphStateException {
    ChatClient chatClient = ChatClient.builder(chatModel).defaultAdvisors(new SimpleLoggerAdvisor()).build();
    AsyncNodeAction dataLoaderNode = node_async(
        (state) -> {
            /*
             * 业务报告元数据读取,如:指定周期的订单销量数据、
             * 门店产品信息、订单用户反馈信息
             */
        }
    );
    // 定义一个经营日报生成节点,根据提供的原始数据信息结合Prompt生成报告
    LlmNode llmDataAnalysisNode = LlmNode.builder().chatClient(chatClient)
        .paramsKey("data_summary")
        .outputKey("summary_message_to_sender")
        .userPromptTemplate(DAILY_REPORT)
        .build();
    // Agent流程:提取原始数据-->生成经营日报-->发送日报信息
    StateGraph stateGraph = new StateGraph("OperationAnalysisAgent", () -> {
        Map<String, KeyStrategy> strategies = new HashMap<>();
        strategies.put("data_summary", new ReplaceStrategy());
        strategies.put("summary_message_to_sender", new ReplaceStrategy());
        strategies.put("message_sender_result", new ReplaceStrategy());
        strategies.put("access_token", new ReplaceStrategy());
        return strategies;
    }).addNode("data_loader", dataLoaderNode)
    .addNode("data_analysis", node_async(llmDataAnalysisNode))
    .addNode("message_sender", node_async(generateMessageSender()))
    .addEdge(START, "data_loader")
    .addEdge("data_loader", "data_analysis")
    .addEdge("data_analysis", "message_sender")
    .addEdge("message_sender", END);
    CompiledGraph compiledGraph = stateGraph.compile();
    compiledGraph.setMaxIterations(100);
    // 设定当前Agent每天8点执行
    ScheduleConfig scheduleConfig = ScheduleConfig.builder()
        .cronExpression("0 0 8 */1 * ?") // 每天8点
        .build();
    compiledGraph.schedule(scheduleConfig);
    return compiledGraph;
}

经营日报Agent流程图店铺经营日报Agent示例界面

评价舆情分析Agent

此案例主要体现Agent的自主定时运行能力,仅在分析发现必要时提示用户进入“人工决策”。相较于传统的基于数值比较、关键词匹配等监控方式,LLM的接入可为业务监控增加新的维度,使监控面向更泛化的数据场景,包括非结构化的文本数据、图片、影像等,通过各类结构化数据充分挖掘潜在风险。

评价舆情分析Agent流程图

参考代码

@Bean
public CompiledGraph evaluationAnalysisAgent(ChatModel chatModel,
                                             FeedbackMapper feedbackMapper) throws GraphStateException {
    ChatClient chatClient = ChatClient.builder(chatModel).defaultAdvisors(new SimpleLoggerAdvisor()).build();
    EvaluationClassifierNode sessionAnalysis = EvaluationClassifierNode.builder()
        .chatClient(chatClient)
        .inputTextKey("iterator_item")
        .outputKey("session_analysis_result")
        .categories(List.of("yes", "no"))
        .classificationInstructions(List.of("要求返回纯JSON字符串,禁止包含非JSON格式内容,包含字段:user、time、complaint、satisfaction、summary。",
            "complaint: 表示当前评价是否为店铺或产品投诉,取值范围(yes or no).",
            "satisfaction: 表示用户实际的消费满意度",
            "summary: 提炼本条核心吐槽点,以及可以改进的方向"))
        .build();
    StateGraph sessionAnalysisGraph = new StateGraph("session_analysis", subFactory1)
        .addNode("iterator", node_async(sessionAnalysis))
        .addEdge(StateGraph.START, "iterator")
        .addEdge(StateGraph.END, "iterator");
    AsyncNodeAction sessionLoaderNode = node_async((state) -> {
        // 舆情和评价数据加载... ...
        return result;
    });
    // 舆情评价结果分析汇总
    AsyncNodeAction sessionResultSummaryNode = node_async((state) -> {
        // 舆情评价结果分析汇总... ...
        return Map.of();
    });
    // 通过LLM生成告警报告
    LlmNode llmNode = LlmNode.builder().chatClient(chatClient)
        .paramsKey("summary_message")
        .outputKey("summary_message_to_sender")
        .systemPromptTemplate("自定义Prompt")
        .build();
    // 构建Agent运行流程
    StateGraph stateGraph = new StateGraph("ReviewAnalysisAgent", () -> {
        Map<String, KeyStrategy> strategies = new HashMap<>();
        // ... ...
        return strategies;
    }).addNode("session_loader_node", sessionLoaderNode)
    .addNode("iteration_session_analysis_node", iterationNode)
    .addNode("session_result_summary_node", sessionResultSummaryNode)
    .addNode("message_parse", node_async(llmNode))
    .addNode("message_sender", node_async(generateMessageSender()))
    .addNode("human_feedback", node_async(new HumanFeedbackNode()))
    .addNode("human_action", node_async(new HumanActionNode()))
    .addEdge(START, "session_loader_node")
    .addEdge("session_loader_node", "iteration_session_analysis_node")
    .addEdge("iteration_session_analysis_node", "session_result_summary_node")
    .addConditionalEdges("session_result_summary_node", AsyncEdgeAction.edge_async(state -> {
        Integer complaint = state.value("complaint", 0);
        return complaint > 0 ? "message_parse" : StateGraph.END;
    }), Map.of("message_parse", "message_parse", StateGraph.END, StateGraph.END))
    .addEdge("message_parse", "message_sender")
    .addEdge("message_sender", "human_feedback")
    .addConditionalEdges("human_feedback", AsyncEdgeAction.edge_async(state -> {
        boolean ignore = state.value("ignore", true);
        return ignore ? StateGraph.END : "human_action";
    }), Map.of("human_action", "human_action", StateGraph.END, StateGraph.END))
    .addEdge("message_sender", END);
    CompiledGraph compiledGraph = stateGraph.compile();
    compiledGraph.setMaxIterations(1000);
    // 设定当前Agent每小时执行检测一次
    ScheduleConfig scheduleConfig = ScheduleConfig.builder()
        .cronExpression("0 0 */1 * * ?") // 每小时执行检测一次
        .build();
    compiledGraph.schedule(scheduleConfig);
    return compiledGraph;
}

评价舆情分析Agent流程图示例

自主运行的AI Agent开拓了企业智能化场景,通过定时触发、事件响应和人工协同机制,为业务带来高效、精准的自动化能力。借助Spring AI Alibaba框架,开发者可快速构建定制化Agent,实现从数据采集、分析到决策的全流程闭环。

参考链接:

[1] https://blog.langchain.com/introducing-ambient-agents/

TAGGED:Agent生态AI应用Spring AI定时Agent智能体
Share This Article
Email Copy Link Print
Previous Article CodeFuse团队微信群二维码 SOTA级Embedding模型F2LLM:模型、数据、代码全面开源,赋能AI研究与应用
Next Article Google Cloud 重磅发布 Gemini Enterprise:重新定义企业级AI,功能解析与客户证言
Leave a Comment

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

最新内容
20251202135921634.jpg
英伟达20亿美元投资新思科技,AI芯片设计革命加速
科技
20251202130505639.jpg
乌克兰国家AI模型选定谷歌Gemma,打造主权人工智能
科技
20251202121525971.jpg
中国开源AI新突破:DeepSeek V3.2模型性能比肩GPT-5
科技
20251202112744609.jpg
马斯克预言:AI三年内解决美国债务危机,可信吗?
科技

相关内容

RAGFlow 聊天执行过程详情查看
AI 前沿技术

RAGFlow 开源RAG引擎深度解析:功能、部署与优化实践

2025年11月1日
Dify Plugin Daemon 主从热备架构拓扑图
Agent生态

Dify Plugin Daemon高可用部署实践:解决插件不加载与稳定性挑战

2025年11月2日
ChatGPT Atlas愿景:氛围生活
AI 前沿技术

AI巨头正面交锋:OpenAI发布ChatGPT Atlas浏览器,Anthropic推出Claude桌面端

2025年10月23日
ChatGPT用户报告数据图 1
报告

深度解析:ChatGPT如何改变我们的工作与生活?7亿用户数据揭示AI应用新趋势

2025年9月26日
Show More
前途科技

前途科技是一个致力于提供全球最新科技资讯的专业网站。我们以实时更新的方式,为用户呈现来自世界各地的科技新闻和深度分析,涵盖从技术创新到企业发展等多方面内容。专注于为用户提供高质量的科技创业新闻和行业动态。

分类

  • AI
  • 初创
  • 学习中心

快速链接

  • 阅读历史
  • 我的关注
  • 我的收藏

Copyright © 2025 AccessPath.com, 前途国际科技咨询(北京)有限公司,版权所有。 | 京ICP备17045010号-1 | 京公网安备 11010502033860号

前途科技
Username or Email Address
Password

Lost your password?

Not a member? Sign Up