SAA (Spring AI Alibaba) Graph Composer 是 Spring AI Alibaba Graph 的声明式编排扩展,将复杂的底层流式构建转化为优雅的注解驱动开发。
在使用原生 Spring AI Alibaba Graph 开发复杂的 Agent 流程时,你可能会面临以下工程挑战:
- 构建逻辑繁琐:大量的
builder.addNode()和builder.addEdge()过程式代码堆叠在构建方法中,导致核心业务流程难以直观呈现,维护成本高。 - 关注点混合:节点的具体业务逻辑与图的结构定义交织在一起,既降低了代码的可读性,也增加了复用难度。
- 集成体验非原生:缺乏对 Spring 容器的深度支持,无法像管理普通 Service Bean 那样便捷地进行自动装配与配置注入。
- 声明式开发:通过注解直观定义节点职责与流转路径,而无需在代码中堆砌
addNode()和addEdge()。 - Spring 深度集成:遵循 Spring 标准开发模式。图定义类与编译后的图实例均被托管为标准 Bean,支持原生依赖注入与配置。
- 灵活的混合构建:针对复杂的动态连线,可通过生命周期钩子访问底层 API 补全逻辑,实现静态定义与动态构建的结合。
- 多样的编译方式:既支持通过
@EnableGraphComposer自动扫描注册,也支持在不启动 Spring 上下文的情况下利用GraphCompiler手动构建。
引入 saa-graph-composer-spring-boot-starter 依赖:
<dependency>
<groupId>cn.teacy.ai</groupId>
<artifactId>saa-graph-composer-spring-boot-starter</artifactId>
<version>0.3.2</version>
</dependency>通过 @GraphComposer 定义蓝图,框架会自动扫描并注册 CompiledGraph Bean:
@GraphComposer
public class HelloGraphComposer {
@GraphKey
public static final String KEY_GREETING = "greeting";
@GraphNode(id = "hello", isStart = true, next = StateGraph.END)
final NodeAction helloAction = state ->
Map.of(KEY_GREETING, "Hello, Graph Composer!");
}完全等效的原生代码:
@Bean
public CompiledGraph helloGraph() {
StateGraph builder = new StateGraph(() -> {
Map<String, KeyStrategy> map = new HashMap<>();
initialState.put("greeting", new ReplaceStrategy());
return map;
});
NodeAction helloAction = state ->
Map.of("greeting", "Hello, Spring AI Alibaba!");
builder.addNode("hello", AsyncNodeAction.node_async(helloAction))
.addEdge(StateGraph.START, "hello")
.addEdge("hello", StateGraph.END);
return builder.compile();
}通过 Intellij IDEA 插件,你可以实时预览你的图编排:
SAA Graph Composer 不是 替代品,而是 扩展包。
- 它的底层完全基于 Spring AI Alibaba 的
StateGraph构建。 - 生成的
CompiledGraph是原生的对象,你可以无缝使用原生的所有功能(如invoke,stream)。 - 你可以随时通过
GraphBuildLifecycle访问到底层 API。
💬任何使用中遇到的问题、希望添加的功能,都欢迎提交 issue 交流!
⭐ 如果这个项目对你有帮助,请给它一个星标!
⭐ 如果这个项目对你有帮助,请给它一个星标!
