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

spring-ai-alibaba 学习(二十六)——graph总结

什么是graph

许多人在刚接触graph的时候会有点懵,什么是图?什么是编排?到底在描述一个什么东西?

设想一个场景,需要实现一个特别复杂的智能问答系统,涉及到问题分类、问题扩展、联网查询、私有知识库查询、工具调用、人工介入等非常复杂的流程,甚至通过画流程图才能有一个清晰的表达

为了提高代码的可读性,最终决定将流程图中每一个节点的功能封装在一起,并且以有向边来连接节点,指明功能的执行顺序,最后将在各个节点间流转的数据封装为全局状态OverAllState

graph就是这样的一个预设好的流程图的框架,用户只需将自己的业务逻辑定义在节点中,设置好边的方向,剩下的都交给graph即可,比如节点和边的合法性检查,每个节点执行完后保存状态,支持在某个节点前后中断来进行人工介入等

 

适用场景

流程非常复杂,有许多循环、判断等非线性的流程

发生异常后,需要从前一节点结果继续执行,而不是从头开始

需要人工介入,比如对工具的调用需要批准

想要开发类似dify的,通过页面拖拽来创建智能体的功能

 

支持哪些扩展功能

并行节点:支持多条边从同一个节点出发,指向不同节点

子图:支持将一个图,作为一个节点,嵌入另一个图中

条件边:支持在边上添加条件判断

进度保存:支持在每个节点执行完后保存进度

中断-恢复:支持在某个节点前或后中断,执行其他操作如人工介入,然后恢复图的执行

导出流程图:支持导出图形格式的流程图,方便查看,更加直观

 

如何使用

业务逻辑实现:自定义节点功能逻辑,有需要的话自定义条件边

定义图:添加节点和边,组成流程图

编译图:检查图的合法性,以及对图的预处理,如合并并行节点为一个超级节点,将子图接入父图中等

运行图:传入初始的OverAllState,按照图的定义逐步运行

 

其他

辅助组件:listener,可以在start、end、error、节点前和节点后等事件触发时添加自定义操作

代码包:主要逻辑都在spring-ai-alibaba-graph-core中,另外还有样例spring-ai-alibaba-graph-example和 DSL 导入相关的spring-ai-alibaba-graph-studio

样例资源:除了上面提到的,在spring-ai-alibaba-example项目下,也有spring-ai-alibaba-graph-example模块

 

想了解具体的细节,可以参考之前的spring-ai-alibaba 学习系列的十七~二十五篇

 

http://www.dtcms.com/a/333925.html

相关文章:

  • 超越“调参”:从系统架构师视角,重构 AI 智能体的设计范式
  • 玩转云原生,使用k9s管理k8s集群和k3s集群
  • 基本电子元件:金属氧化膜电阻器
  • PostgreSQL 时间函数及格式类型
  • 【机器学习深度学习】OpenCompass:支持的开源评估数据集及使用差异
  • [CSP-J2020] 方格取数
  • [1Prompt1Story] 生成行为控制器 | 语义向量重加权(SVR)
  • qt vs2019编译QXlsx
  • 从 “视频孪生” 到 “视频动态目标三维重构”:技术演进与核心突破
  • 使用npm link本地测试组件库
  • [Linux] Linux tar文档管理 系统间复制文档
  • KingbaseES高可用架构深度解析——从读写分离到异地灾备的全方位守护
  • 零改造迁移实录:2000+存储过程从SQL Server滑入KingbaseES V9R4C12的72小时
  • 线程池与异步编程——语法归纳
  • STM32F407 TIM pwm 调试笔记, LL库
  • 安卓11 12系统修改定制化_____如何去除安卓11 12的系统签名验证
  • 【大模型应用开发 1.嵌入模型与向量数据库 Chroma】
  • JavaEE 初阶第十九期:网络编程“通关记”(一)
  • C# 应用特性的更多内容:多维度解析与深度拓展
  • AI安全防御框架:纵深防御与零信任策略浅谈
  • 【C 学习】06-算法程序设计举例
  • pnpm(Performant npm)的安装
  • 欧姆龙CP系列以太网通讯实现上位机与触摸屏监控
  • ClickHouse的学习与了解
  • 基于隐私保护的旅游信息共享平台(LW+源码+讲解+部署)
  • 数据结构:迭代方法(Iteration)实现树的遍历
  • 新手向:Python异常处理(try-except-finally)详解
  • k8sday08深入控制器(3/3)
  • Arduino通过MQTT发送消息到树莓派
  • 【大模型核心技术】Dify 入门教程