当前位置: 首页 > news >正文

LangGraph4j 学习系列(3)-循环工作流

接上节继续,本节将演示条件工作流如何用langgraph4j实现。

image

注:循环工作流可以看成 条件工作流的一个变种。node1 -> node2 -> node1 这样就形成了1个死循环(loop),为了能跳出死循环,用条件边来判定跳出时机。

 

一、定义节点
public class Node1Action implements NodeAction<AgentState> {@Overridepublic Map<String, Object> apply(AgentState state) throws Exception {System.out.println("current Node: node-1");return Map.of("myData", "node1-my-value","node1Key", "node1-value");}
}

  

public class Node2Action implements NodeAction<AgentState> {@Overridepublic Map<String, Object> apply(AgentState state) throws Exception {System.out.println("current Node: node-2");return Map.of("myData", "node2-my-value","node2Key", "node2-value");}
}

  

二、完整示例

public class LoopGraphApplication {public static void main(String[] args) throws GraphStateException {StateGraph<AgentState> sequenceGraph = getLoopGraph();System.out.println(sequenceGraph.getGraph(GraphRepresentation.Type.MERMAID, "loop Graph", true).content());sequenceGraph.compile().invoke(Map.of("loopCount", 0L)).ifPresent(c -> {System.out.println(c.data());});}private static final int MAX_LOOP_ITERATIONS = 3;public static StateGraph<AgentState> getLoopGraph() throws GraphStateException {return new StateGraph<>(AgentState::new).addNode("node-1", node_async(new Node1Action())).addNode("node-2", node_async(new Node2Action())).addEdge(GraphDefinition.START, "node-1").addEdge("node-2", "node-1")//循环的跳出条件比较简单,3次后退出,这里就不单独定义EdgeAction类了,用lambda表达式.addConditionalEdges("node-1", state -> {long count = getLoopCount(state);System.out.println("loop Count: " + count);if (count >= MAX_LOOP_ITERATIONS) {return CompletableFuture.completedFuture("exit");}return CompletableFuture.completedFuture("continue");}, Map.of("exit", GraphDefinition.END,"continue", "node-2"));}private static long getLoopCount(AgentState state) {Optional<Object> loopCount = state.value("loopCount");if (loopCount.isEmpty()) {return 0L;}Object v = loopCount.get();if (v instanceof Number n) {return n.longValue();}return Long.parseLong(v.toString());}}

  

三、运行结果

current Node: node-1
loop Count: 0
current Node: node-2
current Node: node-1
loop Count: 1
current Node: node-2
current Node: node-1
loop Count: 2
current Node: node-2
current Node: node-1
loop Count: 3
{node1Key=node1-value, loopCount=3, node2Key=node2-value, myData=node1-my-value}

  

示例代码:https://github.com/yjmyzz/langgraph4j-study/tree/main/src/main/java/org/bsc/langgraph4j/agent/_08_loop
http://www.jsqmd.com/news/424152/

相关文章:

  • 新手也能上手!专科生专属的降AIGC工具 —— 千笔·降AIGC助手
  • 【电力】IEEE33节点配电网系统simulink仿真模型-带数据参考文献(可以应用于潮流计算,网络重构,新能源等)
  • 【电力系统】VSG低电压穿越(LVRT)检测+限流控制+电流平衡控制有功调频、无功励磁双闭环仿真
  • JAVA WEB学习20
  • JAVA WEB学习19
  • 嵌入模型与Chroma向量数据库 - Chroma 集合查询操作 - AI大模型应用开发必备知识
  • 大家觉得windows系统的更新有必要每次都更新吗?会不会系统越高,越卡顿?
  • 通信工程毕业设计最新方向怎么选
  • 2026年杰家板材厂靠谱吗,探讨其行业认可度、环保性与交货及时性 - myqiye
  • 父系指数和母系指数
  • 探寻2026年粉末压机优质源头,这些厂家不容错过,伺服热压机/平板油压机/伺服油压机/粉末压机,粉末压机厂家哪家好 - 品牌推荐师
  • LangGraph4j 学习系列(2)-条件工作流
  • 2026年选购指南:主流摩擦系数仪厂家综合对比,摩擦系数仪/检测仪/试验机/分析仪/测试仪/测量仪,摩擦系数仪工厂选哪家 - 品牌推荐师
  • 聊聊江西初中毕业选院校的经验,江西新华电脑学院口碑怎么样? - 工业品牌热点
  • 2026年市面上优秀的自立袋销售厂家推荐,中封袋/四边封包装袋/八边封包装袋/三边封包装袋,自立袋生产商排行榜 - 品牌推荐师
  • 三菱FX5U伺服机器人程序开发指南
  • 2026年市场口碑佳的ISO认证公司TOP榜,助力企业品质提升,知识产权认证/3C认证,ISO认证公司哪家好 - 品牌推荐师
  • 分析江苏数控折弯机质量可靠的厂家排名,有哪些上榜? - 工业推荐榜
  • 论云原生架构在高并发系统中的设计与实践
  • 2026年全国上诉律师服务费用大汇总,专业上诉律师哪家权威怎么选 - 工业品网
  • YOLOv13涨点改进| CVPR 2026 |独家创新首发、特征融合改进篇 | 引入 LFSB 差分双维注意融合模块,通过交替特征融合与分离策略,能够精准区分目标特征,顶会助力YOLOv13有效涨点
  • free AI Music Generator All In One
  • 国产化编辑器怎样兼容Word复杂格式导入?
  • 讲讲泰艺包装有实力吗,在深圳地区口碑怎么样 - 工业品牌热点
  • CO-STAR提示词模板深度解析:从冠军框架到实战应用
  • 2026年广州热门除甲醛产品年度排名靠谱的品牌口碑佳 - mypinpai
  • 日本数学教育家“dy/dx不是分数”谬论使学生不能正确认识导数概念
  • 别再瞎找了!降AIGC软件 千笔·降AIGC助手 VS 学术猹,本科生专属神器!
  • Rust开发必备:深入解析标准库与第三方Derive宏的核心差异与应用实践
  • 农业系统如何集成Word文档样式解析组件?