微信扫码
添加专属顾问
我要投稿
Spring AI Alibaba带你探索Agent新形态:定时运行+人机交互,让AI真正成为你的智能助手! 核心内容: 1. 自主运行Agent的三大优势:突破对话限制、提升执行效率、拓展能力边界 2. 五大典型应用场景:自动化报表、批量清算、应急响应、人机协同、长周期任务 3. Spring AI Alibaba框架如何简化Agent开发
参考Langchain的这篇文章[1],面对目前我们常见Chat模式的Agent形态以外,还可以充分发挥Agent新的运行形态:
Spring AI Alibaba(以下简称SAA)为开发上述形态的Agent提供了相应的框架支持,方便业务快速实现上述场景需求下的Agent开发。
为什么需要自主运行Agent
通过自主运行的Agent可以充分发挥其执行效率,让其具备按预设规划自主工作的能力,无需每次都等待人类指令运行,可将Agent作为一个能替代你部分工作自主运行的“人”来看待。
由此我们可以看到,随着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任务运行管理实现。
通过上述方式,后续可支持在分布式部署场景下的定时Agent任务运行,同时为自定义Agent任务可视化管理和运行监控提供扩展点。
基于SAA自主运行Agent展示
Spring AI Alibaba作为Agent开发框架,可方便地为业务开发Agent提供了对应解决方案,同时在框架侧也提供了构建定时运行的Agent能力。后续将通过框架提供的定时调度、人工节点功能,实现两个实践案例:店铺经营分析Agent、评价舆情分析Agent。
店铺经营日报Agent
通过SAA框架可以方便的开发出自定义的Agent(Workflow Agent),相比于低代码平台的流程构建,通过编码方式定义Agent流程会更适合高度定制的场景。比如当前的这个Agent我们需要从多个维度(交易订单、产品说明、客户画像信息、门店基础信息、客户评价反馈等)去提取对应的数据信息,通过业务编码再结合Prompt模版提供给LLM进行分析处理在实现上更具灵活性和可控性。
通过这个方式,让业务报表既能保持关键数据的准确性,又可结合发挥模型对非结构化数据分析,提炼总结出报告的核心要点和下一步行动方案。
参考代码
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自主定时运行,仅在分析发现必要时提示用户进入“人工决策”。相比较于传统的基于数值比较、关键词匹配等监控方式,通过LLM接入可增加业务监控新的维度,让监控面向更加泛化的数据场景,包括非结构化的文本数据、图片、影像等等,通过各类型结构数据充分挖掘出潜在风险。
参考代码
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("iterator", StateGraph.END);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;}
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-30
Cursor 2.0的一些有趣的新特性
2025-10-30
Anthropic 发布最新研究:LLM 展现初步自省迹象
2025-10-30
让Agent系统更聪明之前,先让它能被信任
2025-10-30
Rag不行?谷歌DeepMind同款,文档阅读新助手:ReadAgent
2025-10-29
4大阶段,10个步骤,助你高效构建企业级智能体(Agent)
2025-10-29
DocReward:让智能体“写得更专业”的文档奖励模型
2025-10-29
沃尔沃RAG实战:企业级知识库,早就该放弃小分块策略
2025-10-29
大模型的Funcation Calling是什么?
2025-08-21
2025-08-21
2025-08-19
2025-09-16
2025-10-02
2025-09-08
2025-09-17
2025-08-19
2025-09-29
2025-08-20
2025-10-29
2025-10-29
2025-10-28
2025-10-28
2025-10-27
2025-10-26
2025-10-25
2025-10-23