跳到主要内容

AI工作流

1. 介绍

本小节介绍如何在系统中创建和管理 AI 工作流。

AI 工作流通过将复杂任务拆解为更小的步骤(即流程节点),从而降低系统复杂度,提高执行效率。通过合理的工作流编排,可以减少对 Prompt Engineering(提示词工程)和单次 LLM 推理的依赖,提升 AI 任务的稳定性、可解释性和容错能力。

2. 流程管理

进入流程管理页面,您可以查看系统中的所有 AI 流程。

  • 点击某个流程条目,即可进入流程编排页面,对流程进行调整和优化。

2.1 编排流程

点击 添加流程,进入新流程编排页面。默认情况下,系统会自动添加一个 开始节点

在流程编排界面,点击现有节点后的 加号(+),可在该节点后新增流程节点。

此外,还可以按住鼠标 拖动连线,将不同节点连接在一起,形成完整的工作流。

如果需要调整流程,可以选中连线后点击 删除按钮,移除两个节点间的连接。

点击 节点右上角的“...”,可打开节点的 更多选项,支持 复制删除 节点。

点击某个 流程节点,右侧会弹出该节点的详细配置窗口,每个节点的配置方式有所不同,需根据实际业务场景进行调整。

右上角提供了 保存、调试、关闭 当前流程的功能,方便随时调整和测试。


2.2 流程节点

2.2.1 开始节点

开始节点 是流程的起点,用于接收外部输入。

  • 设定输入参数,例如文本、数值或结构化数据。
  • 触发流程的执行,确保数据正确传递到后续节点。
  • history入参:当流程被聊天调用时,聊天的历史将存储在history中供llm使用。

2.2.2 LLM节点

LLM(大语言模型)节点 负责调用 LLM(如 GPT、Qwen)进行文本生成或智能问答。

  • 选择配置好的语言模型。
  • 设定提示词,指引 LLM 输出预期结果。
  • 配置模型参数,如温度(Temperature)和最大 Token 数。
  • 如果LLM节点的入参中包含知识库节点输出的data时,将自动生成基于知识库的智能回答

如果您不确定如何编写提示词,可以通过点击生成按钮来进入提示词生成器。在该界面中,您可以填写您的需求,AI将会自动帮助您生成合适的提示词。这种方式可以有效地帮助您获取所需的内容,节省时间和精力。请确保尽量详细地描述您的需求,以便生成器能够提供更准确的提示词。

2.2.3 分类器节点

分类器节点 用于让LLM对输入数据进行分类,并将其路由到不同的分支。

  • 适用于意图识别、文本分类等场景。
  • 设定提示词,指引LLM选择正确的分类。
  • 可配置多个分类条件,并设定不同的处理路径。

2.2.4 知识库节点

知识库节点 负责在 AI 知识库中查询匹配的内容,以增强 AI 回答的准确性。

  • 选择已经准备好的知识库,从该知识库中检索内容,检索条件是查询变量。
  • 将输出文档列表和文档内容。
  • 可以自定义配置知识库检索时的返回条目数和最低分数。

2.2.5 条件分支节点

条件分支节点 根据设定的条件,决定流程的下一步执行路径。

  • 支持多种逻辑判断,如文本匹配、数值比较。

2.2.6 脚本执行节点

脚本执行节点 允许在流程中执行自定义的代码。

  • 适用于自定义数据处理、API 调用等场景。
  • 运行时可访问流程变量,实现灵活控制。
  • params即节点的输入参数
  • 输出变量,将从return的对象中获取。

支持代码类型:

  • javascript
  • groovy
  • kotlin
  • aviator

不同的脚本有两种写法,其中 JavaScript 和 Groovy 需要将业务代码写在默认定义好的函数中。以 JavaScript 为例,示例如下:

在代码中,需要定义一个 main 函数:

  • 入参params 包含了节点配置的输入变量。
  • 返回值:函数需要返回一个对象,该对象的每一个值都可以在输出变量中获取到。

2.2.7 Java增强节点

Java增强节点 允许调用 Java 代码或自定义组件,扩展流程功能。

  • 适用于调用 Java 业务逻辑或处理复杂计算。
  • 需提前编写并注册 Java 类,供流程调用。
  • java增强类需要实现IAiRagEnhanceJava接口。
  • 支持两种注册方式:
    • 类路径:填写完整的java类路径
    • Spring Bean:填写java类的SpringBean名称

示例:

  1. 在项目中新增java类:TestAiragEnhance
@Component
public class TestAiragEnhance implements IAiRagEnhanceJava {
@Override
public Map<String, Object> process(Map<String, Object> inputParams) {
Object arg1 = inputParams.get("arg1");
Object arg2 = inputParams.get("arg2");
return Collections.singletonMap("result",arg1.toString()+"_java拼接_"+arg2.toString());
}
}
  1. 新建流程
  1. 开始节点配置两个入参:问题1、问题2。
  1. java增强节点:
  • 输入变量对应代码中的方法入参。
  • 输出变量对应代码中方法返回值。
  1. 结束节点
  1. 调试流程:

2.2.8 子流程节点

子流程节点 允许流程嵌套,支持在当前流程中调用另一个已定义的流程。

  • 适用于复用已有的业务逻辑,提升流程的模块化和可维护性。
  • 可传递参数给子流程,并获取其返回结果。

2.2.9 http节点

http节点 允许在流程中调用http接口,并获取接口返回值输出给其他节点。。

  • 适用于通过接口调用已有的业务逻辑。
  • 支持自定义参数、请求头、请求体。
  • 请求地址支持使用{{domainURL}}来获取当前系统域名
  • 参数值、请求头、请求体都支持使用{{paramName}}来引用输入变量以及系统上下文变量

2.2.10 直接回复节点

直接回复节点,可以在文本编辑器中自由定义回复格式,包括自定义一段固定的文本内容、使用前置步骤中的输出变量作为回复内容、或者将自定义文本与变量组合后回复。

可随时加入节点将内容流式输出至对话回复,如:

  • 输出 LLM 节点回复内容
  • 输出纯文本

与结束节点的区别:

  1. 直接回复节点不会结束流程。
  2. 直接回复节点回复的内容只通过SSE返回(即使用blocking调用时无法获取)

2.2.11 结束节点

结束节点 标志流程执行完毕,输出最终结果。

  • 可设定输出数据结构,如文本、JSON 等。
    • 勾选返回文本,将输出文本类型的结果。
    • 不勾选则输出json类型的结果。
  • 支持将最终结果返回给调用者。

2.3 调试流程

完成流程编排后,可以使用调试功能测试流程的运行情况。

点击 运行按钮,进入调试界面。

输入运行参数,例如:

jeecg是什么

调试界面将动态展示流程的执行路径。

您还可以查看每个节点的 输入输出 数据,确保流程逻辑正确。


3. 总结

AI 工作流通过模块化的流程节点,简化了复杂任务的执行逻辑,使得 AI 任务更加稳定、可解释,并易于维护。通过合理使用 LLM 节点、知识库节点、分类器节点等组件,用户可以高效搭建智能化的 AI 处理流程,提高系统的自动化能力和智能水平。