首页
/ Higress AI工作流插件ai-workflow的设计与实现

Higress AI工作流插件ai-workflow的设计与实现

2025-06-09 06:32:03作者:羿妍玫Ivan

引言

在现代AI应用开发中,RAG(检索增强生成)和ReAct风格的Agent等模式已经成为常见架构。这些应用通常需要编排多个API调用,构建复杂的工作流。传统实现方式需要为每个场景单独开发,不仅效率低下,也难以灵活调整。Higress社区推出的ai-workflow插件正是为了解决这一问题而生。

核心设计理念

ai-workflow插件的核心思想是将工作流抽象为有向无环图(DAG),通过声明式配置定义执行流程。这种设计带来了三大优势:

  1. 解耦性:将流程控制与具体业务逻辑分离
  2. 灵活性:通过修改配置即可调整工作流,无需重新编译部署
  3. 复用性:通用工作流引擎可支持多种AI应用场景

架构设计详解

工作流模型

插件采用经典的DAG模型,包含两种核心元素:

  • 节点(Node):代表具体执行单元,封装了HTTP请求能力
  • 边(Edge):定义执行路径和条件分支

控制流机制

工作流执行遵循以下规则:

  1. 条件分支:通过conditional字段定义布尔表达式,决定是否执行该分支
  2. 终止条件
    • end:终止工作流并返回结果
    • continue:放行请求到下一个插件
  3. 并行执行:支持多个无依赖节点的并行调用

条件表达式支持六种比较操作:

  • 等于(eq)
  • 不等于(ne)
  • 小于(lt)
  • 小于等于(le)
  • 大于(gt)
  • 大于等于(ge)

数据流处理

插件实现了强大的数据流转能力:

  1. 上下文存储:每个节点的执行结果以节点名为key存入上下文
  2. 数据提取:采用GJSON PATH语法从JSON响应中提取特定字段
  3. 模板渲染:支持通过模板构造请求体,实现动态请求生成

数据引用采用{{node||path}}格式,其中:

  • node指定数据来源节点
  • path是GJSON路径表达式

配置详解

节点配置

每个节点代表一个API调用,主要配置项包括:

  • 基础信息:名称、服务地址、路径等
  • 请求构造:方法、头信息、请求体模板
  • 数据映射:定义如何从上游数据构造当前请求

请求体支持两种构造方式:

  1. 直接使用service_body_tmpl作为固定请求体
  2. 通过service_body_replace_keys实现动态模板填充

边配置

边配置定义执行路径,关键属性:

  • 源节点(source):可以是起始点(start)或任意节点
  • 目标节点(target):可以是结束标志或节点
  • 执行条件(conditional):可选的条件表达式

典型应用场景

RAG流程实现

通过配置多节点工作流,可以轻松实现:

  1. 查询嵌入(Embedding)
  2. 向量检索
  3. 结果精炼
  4. 最终生成

复杂决策流程

利用条件分支,可以实现:

  • 缓存检查
  • 回退机制
  • 多路验证

最佳实践示例

以下是一个完整的工作流配置示例,展示了多节点并行执行与条件分支:

workflow:
  edges:
    - source: start
      target: embedding
    - source: embedding
      target: retrieval
    - source: retrieval
      target: llm_generate
    - source: llm_generate
      target: end
      conditional: "gt {{llm_generate||confidence}} 0.8"
    - source: llm_generate
      target: fallback
      conditional: "le {{llm_generate||confidence}} 0.8"
  
  nodes:
    - name: embedding
      # 嵌入服务配置
      service_method: POST
      service_path: "/embeddings"
      service_body_replace_keys:
        - from: "start||query"
          to: "text"
    
    - name: retrieval
      # 检索服务配置
      service_method: POST
      service_path: "/search"
      service_body_replace_keys:
        - from: "embedding||vector"
          to: "query_vector"
    
    - name: llm_generate
      # LLM生成配置
      service_method: POST
      service_path: "/generate"
      service_body_replace_keys:
        - from: "retrieval||results"
          to: "context"
    
    - name: fallback
      # 回退逻辑配置
      service_method: POST
      service_path: "/fallback"

性能考量

  1. 并行优化:无依赖节点自动并行执行
  2. 短路评估:条件不满足时跳过分支执行
  3. 资源复用:保持HTTP连接池

扩展性设计

  1. 自定义函数:未来可支持用户自定义条件函数
  2. 插件组合:可与其他Higress插件协同工作
  3. 监控集成:支持工作流执行指标导出

总结

Higress的ai-workflow插件通过声明式配置实现了复杂的API工作流编排,极大简化了AI应用的开发流程。其核心价值在于:

  1. 降低开发复杂度,提升迭代效率
  2. 增强系统灵活性,支持快速调整
  3. 提高代码复用率,减少重复开发

对于需要构建复杂AI工作流的团队,这一插件提供了优雅的解决方案,是Higress生态中面向AI场景的重要增强。

登录后查看全文
热门项目推荐

项目优选

收起
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
340
1.2 K
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
901
537
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
189
267
kernelkernel
deepin linux kernel
C
22
6
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
141
188
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
375
387
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.09 K
0
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
87
4
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
arkanalyzerarkanalyzer
方舟分析器:面向ArkTS语言的静态程序分析框架
TypeScript
115
45