华为云ASTRO轻应用-通过脚本调用流式报文接口实现智能助手聊天对话:其他操作:通过连接器调用流式报文接口

时间:2025-06-12 10:18:32

其他操作:通过连接器调用流式报文接口

在华为云Astro轻应用中,除了通过脚本对接大模型接口,还支持通过自定义连接器对接大模型接口。步骤一:创建脚本对接大模型接口中介绍了如何通过脚本对接大模型接口,此处为您介绍如何通过自定义连接器来对接大模型接口。

  1. 创建自定义连接器。

    1. 在应用设计器中,选择“集成”,单击“连接器”下的“连接器实例”
    2. “类型”中,选择“自定义连接器”,进入自定义连接器页面。
    3. 单击“+”,配置连接器信息,单击“保存”。
      图10 创建自定义连接器
      表5 自定义连接器参数说明

      参数

      说明

      示例

      标签

      自定义连接器的标签,创建后可修改。

      取值范围:1~64个字符。

      流式连接器

      名称

      自定义连接器的名称,名称是连接器在系统中的唯一标识,创建后不可修改。命名要求如下:

      • 长度不能超过64个字符,包括前缀命名空间的长度。

        标识前模糊掉的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。

      • 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。

      streamconnector

  2. 为自定义连接器添加动作。

    1. 在“动作”页签中,单击“新建”
    2. 设置动作的基本信息,单击“下一步”
      图11 设置基本信息
      表6 动作基本信息参数说明

      参数

      说明

      示例

      标签

      新建动作的标签名,用于在页面显示。

      取值范围:1~64个字符。

      streamaction

      名称

      新建动作的名称,名称是动作在系统中的唯一标识。命名要求如下:

      • 长度不能超过64个字符,包括前缀命名空间的长度。

        标识前模糊掉的内容为命名空间,在华为云Astro轻应用中为了避免不同租户间数据的重名,租户在首次创建应用时需要先定义一个命名空间。一个租户只能创建一个命名空间,创建后不支持修改。

      • 必须以英文字母开头,只能由英文字母、数字或单下划线组成,且不能以下划线结尾。

      streamaction

      URL

      待调用大模型接口的URL地址。

      https://example.com

      方法

      选择请求的方法,可以设置为POST或GET。

      POST

      内容类型

      输入内容的类型取决于第三方支持的具体种类,该类型在HTTP标准协议中定义。

      application/json

      返回类型

      选择接口的返回类型,支持“application/json”“text/event-stream”两种类型。

      • application/json:选择该类型时,系统将忽略第三方实际返回的“Content-Type”,采用第三方配置的“Content-Type”来解析返回内容。
      • text/event-stream:选择该类型时,将以处理流式报文的方式处理接口返回值,需要确保第三方接口的返回值为流式报文,且响应体中的“Content-Type”为“text/event-stream”。

      text/event-stream

      警告:

      “返回类型”必须设置为“text/event-stream”,否则自定义连接器的执行逻辑不会走流式的处理逻辑。

    3. 本示例无需设置消息头入参,请单击删除第一行参数,再单击“下一步”
    4. 设置输入参数,单击“下一步”
      图12 输入参数配置页面

      表7仅介绍本实践中使用到的参数,其他参数解释请参见使用自定义连接器调用第三方接口

      表7 输入参数说明

      参数

      说明

      示例

      标签

      输入参数的标签名,用于在页面显示。

      message

      名称

      新建输入参数的名称,名称是输入参数在系统中的唯一标识。

      message

      参数位置

      设置输入参数的位置。

      消息体

      数据类型

      设置输入参数的数据类型,直接在下拉框中选择。

      字符串

    5. 本示例无需设置输出参数,请单击删除第一行参数,再单击“保存”
    6. 返回动作页签,单击该动作所在行的,启用该动作。
      图13 动作已启用

  3. 为连接器添加认证信息。

    为连接器添加认证信息不是本实践重点介绍的内容,具体操作可参考步骤2:配置连接器认证信息

  4. 验证连接器调用流式报文接口。

    1. 在动作列表中,单击2中创建的动作,进入动作详情页。
    2. 在动作详情页,单击页面上方的“测试”
      图14 选择测试

  5. 创建脚本,在脚本中调用自定义连接器。

    参考步骤一:创建脚本对接大模型接口中操作,创建一个空白脚本,在脚本编辑器中输入如下示例代码。其中,“命名空间__streamconnector1中创建连接器的名称,命名空间__streamaction”为2中为连接器添加的动作,“命名空间__authname”为3中为连接器添加的认证信息。

    import * as context from 'context';
    import * as connector from 'connector';
    
    
    /*
     * The input parameter is defined by `@action.param()`.
     */
    export class Input {
        @action.param({ type: "String", required: true, description: "the operation type" })
        inputParam: string;
    }
    
    /*
     * The output parameter is defined by `@action.param()`.
     */
    export class Output {
    }
    
    /*
     * Define the main service class.
     * 
     * - The service entry function is defined by `@action.method()`.
     * - All dependent objects should be defined via `@useObject([])` (for objects) or `@useBo([])` (for business objects).
     */
    export class Calculator {
    
        @action.method({ input: "Input", output: "Output", description: "do a operation" })
        run(input: Input): Output {
            let output = new Output();
    
            // 页面上自己创建的自定义连接器的调用方法,第一个参数是创建的自定义连接器名称,第二个参数是认证信息名称
            let client2 = connector.newClient("命名空间__streamconnector", "命名空间__authname");
    
            let input2 = { "message": input.inputParam, "stream": true };
            // 第一个入参是动作名称, 第二个参数是入参
            let resp2 = client2.invoke("命名空间__streamaction", input2);
            context.getHttp().response.setBody(resp2.data)
            return output;
        }
    }

  6. 创建一个标准页面,添加一个智能助手组件并做相关设置,具体操作同步骤二:调用流式报文接口实现智能对话
support.huaweicloud.com/bestpractice-astrozero/astrozero_bestpractice_0032.html