AI项目博客
记录 AI 工程实践与大模型应用

Spring AI Alibaba 100|Graph Core · 子图作为 CompiledGraph · 完整示例

// 1. 定义数据验证子图
public CompiledGraph createValidationGraph() {
  KeyStrategyFactory keyFactory = () -> {
      HashMap<String, KeyStrategy> strategies = new HashMap<>();
      strategies.put("data", new ReplaceStrategy());
      strategies.put("isValid", new ReplaceStrategy());
      return strategies;
  };

  StateGraph graph = new StateGraph(keyFactory)
      .addNode("validate", nodeasync(state -> {
          String data = (String) state.value("data").orElse("");
          boolean valid = data != null && !data.isEmpty();
          return Map.of("isValid", valid);
      }))
      .addEdge(StateGraph.START, "validate")
      .addEdge("validate", StateGraph.END);

  return graph.compile();
}

// 2. 定义数据转换子图
public CompiledGraph createTransformGraph() {
  KeyStrategyFactory keyFactory = () -> {
      HashMap<String, KeyStrategy> strategies = new HashMap<>();
      strategies.put("data", new ReplaceStrategy());
      strategies.put("transformed", new ReplaceStrategy());
      return strategies;
  };

  StateGraph graph = new StateGraph(keyFactory)
      .addNode("transform", nodeasync(state -> {
          String data = (String) state.value("data").orElse("");
          return Map.of("transformed", data.toUpperCase());
      }))
      .addEdge(StateGraph.START, "transform")
      .addEdge("transform", StateGraph.END);

  return graph.compile();
}

// 3. 组合使用
CompiledGraph validationGraph = createValidationGraph();
CompiledGraph transformGraph = createTransformGraph();

StateGraph mainGraph = new StateGraph(keyFactory)
  .addNode("validate", nodeasync(state -> {
      String data = (String) state.value("input").orElse("");
      OverAllState result = validationGraph.invoke(Map.of("data", data));
      return Map.of("isValid", result.value("isValid").orElse(false));
  }))
  .addNode("transform", nodeasync(state -> {
      String data = (String) state.value("input").orElse("");
      OverAllState result = transformGraph.invoke(Map.of("data", data));
      return Map.of("output", result.value("transformed").orElse(""));
  }))
  .addEdge(StateGraph.START, "validate")
  .addConditionalEdges("validate",
      edgeasync(state -> {
          Boolean valid = (Boolean) state.value("isValid").orElse(false);
          return valid ? "continue" : "error";
      }),
      Map.of("continue", "transform", "error", StateGraph.END))
  .addEdge("transform", StateGraph.END);

CompiledGraph main = mainGraph.compile();

// 执行
OverAllState result = main.invoke(Map.of("input", "test data"));
System.out.println("Output: " + result.value("output").orElse(""));

png

png

  • 子图作为 NodeAction – 节点包装方式
  • 子图作为 StateGraph – 直接嵌入方式
  • 快速入门 – Graph 基础使用

本文整理自 Spring AI Alibaba 官方文档《子图作为 CompiledGraph》:https://java2ai.com/docs/frameworks/graph-core/examples/subgraph-as-compiledgraph

赞(0)
未经允许不得转载:AI项目博客 » Spring AI Alibaba 100|Graph Core · 子图作为 CompiledGraph · 完整示例

评论 抢沙发

AI项目博客

专注 AI 工程化落地 —— 覆盖智能体、大模型、Java AI 与 Python 的学习笔记,以及 AI 平台的项目实战记录。

关于本站文章归档

登录

找回密码

注册