Solon v3.3.2

aiflow - 组件 - 输出组件介绍

</> markdown

输出组件

从 FlowContext 获取数据,并输出数据

组件描述备注
VarOutput变量输出组件将数据转换后,输出到 FlowContext
ConsoleOutput控制台输出组件(扩展自 VarOutput)将数据转换后,输出到控制器
WebOutputWeb 输出组件将数据转换后,由网络响应输出

1、VarOutput 组件属性

VarOutput 组件,会接收输入数据,并转换为字符串数据(新数据),再把新数据推入流上下文

属性默认值描述
inputmessage输入变量名(从这里获取数据)
outputmessage输出变量名(下个节点,可通过此变量名获取输入值)

示例:

- task: @VarOutput

效果相当于:

- task: |
    context.put("messsage", VarOutputCom.getInputAsString(message));

2、ConsoleOutput 组件属性

ConsoleOutput 组件,扩展自 VarOutput 组件:

  • 会接收输入数据,并转换为字符串数据(新数据)
  • 在控制台打印新数据
  • 新数据推入流上下文
属性默认值描述
inputmessage输入变量名(从这里获取数据)
outputmessage输出变量名(下个节点,可通过此变量名获取输入值)
format 打印格式化(例:小明:#{message}

示例:

- task: @ConsoleOutput
  meta:
    format: "阿飞:#{message}"  #支持 SnEL 模板表达式

效果相当于:

- task: |
    context.put("messsage", VarOutputCom.getInputAsString(message));
    
    String format = node.getMeta(META_FORMAT);
    if (Utils.isEmpty(format)) {
        System.out.println(data);
    } else {
        String formatted = SnEL.evalTmpl(format, context.model());
        System.out.println(formatted);
    }

3、WebOutput 组件属性

WebOutput 组件,会接收输入数据,会有两种处理:

  • 如果有 format 配置,会以 sse 方式按 chat-message 格式输出到 web 响应流
  • 如果无 format 配置,会转换为字符串数据(新数据),然后按普通 text 输出到 web 响应流
属性默认值描述
inputmessage输入变量名(从这里获取数据)
outputmessage输出变量名(下个节点,可通过此变量名获取输入值)
format 输出格式化(例:小明:#{message}

示例:

- task: @WebOutput
  meta:
    format: "阿飞:#{message}"  #支持 SnEL 模板表达式

效果相当于:

- task: |
    Context web = Context.current();
    
    String format = node.getMeta(META_FORMAT);
    if (Utils.isEmpty(format)) {
        //...比较复杂(要看源码)
    } else {
        context.put("messsage", VarOutputCom.getInputAsString(message));
        
        String formatted = SnEL.evalTmpl(format, context.model());
        web.render(formatted);
        web.output("\n");
        web.flush();
    }