Skip to main content
策略配置

企业过滤器配置

Qoder CN 企业版的管理员、组织内全局管理员(专属版)可以为企业的开发者配置智能问答、行间生成、知识库上传时的安全过滤策略。
该功能目前仅支持 Visual Studio Code 和 JetBrains IDE 插件,不适用于 Qoder CN IDE。
适用版本:企业标准版、企业专属版

功能入口

  1. 使用 Qoder CN 管理员、组织内全局管理员(仅适用于企业专属版)账号登录Qoder CN 控制台,在左侧导航栏选择策略配置过滤器配置
  2. 根据过滤器应用的场景,在顶部标签页选择智能问答行间生成知识库上传(仅适用于企业专属版)。
  3. 根据需求开启相应过滤器的开关,然后配置相关参数。各场景支持的过滤器类型如下:

    场景

    过滤器类型

    说明

    智能问答

    智能问答前置过滤器

    使用 Qoder CN 的智能问答功能时,用户输入给大模型的内容将通过前置过滤器,大模型输出的内容将通过后置过滤器。

    智能问答后置过滤器

    行间生成

    行间生成前置过滤器

    使用 Qoder CN 的行间生成功能时,用户输入给大模型的内容将通过前置过滤器,大模型输出的内容将通过后置过滤器。

    行间生成后置过滤器

    知识库上传

    知识库上传前置过滤器

    上传至 Qoder CN 知识库的文件须先通过该过滤器的审核后,方可上传成功。

    • 请确保将开发者的Qoder CN升级到 V1.4.0 及以上,配置的过滤器方可生效。
    • 智能问答过滤器行间生成过滤器启用或修改后,预计需要 5~10 分钟才对开发者使用的 Qoder CN 生效。
    • 知识库上传过滤器启用或修改后,立即生效,上传企业知识库文件时会进行过滤。

智能问答、行间生成的前置过滤器配置

  • 方式一:正则表达式配置
  • 方式二:自定义脚本配置(仅适用于企业专属版)
管理员在配置正则表达式时需要充分验证,以避免开发者使用IDE 插件时性能下降或产生其他异常问题。
  • 处理方式:支持通过正则表达式的方式配置过滤器,且支持 3 种模式。
匹配规则时不处理匹配到正则后,不做任何处理。
匹配规则时拦截匹配到正则后,直接拦截请求,阻断模型请求。
匹配规则时替换内容匹配到正则后,按照配置替换内容。
  • 消息通知:支持开启消息通知,通过 webhook 的方式,推送到所需要的消息接收平台。
  • 执行顺序:按照配置的排序执行。
  • 正则数量限制:最多可添加10条。
  • 正则表达式标准:正则配置遵循 ECMAScript 标准,支持i(不区分大小写)、g(全局匹配)、s(DOTALL 模式)等常用标志位。
  • 正则配置示例
规则名称正则表达式替换内容原文替换后
身份证号(?<pre>.*)(\d{15})((\d{2})([0-9Xx]))(?<post>.*)&lt;pre&gt;&#42;&#42;&#42;<post>身份证号:330204197709022312。身份证号:***。
邮箱\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)****我的邮箱是 lin***@aliyunmail.com我的邮箱是 ***
密码(.*password=)([\w\d]+)(.*)1&#42;&#42;&#42;3{password=1213213}{password=***}

智能问答、行间生成的后置过滤器配置

  • 方式一:正则表达式配置
  • 方式二:自定义脚本配置(仅适用于企业专属版)
管理员在配置正则表达式时需要充分验证,以避免开发者使用IDE 插件时性能下降或产生其他异常问题。
  • 处理方式:支持通过正则表达式的方式配置过滤器,仅支持一种模式:匹配规则时不处理(匹配到正则后,不做任何处理)。
  • 消息通知:支持开启消息通知,通过 webhook 的方式,推送到所需要的消息接收平台。
  • 执行顺序:按照配置的排序执行。
  • 正则数量限制:最多可添加10条。
  • 正则表达式标准:正则配置遵循 ECMAScript 标准,支持i(不区分大小写)、g(全局匹配)、s(DOTALL 模式)等常用标志位。
  • 正则配置示例
规则名称正则表达式原文
身份证号(?<pre>.*)(\d{15})((\d{2})([0-9Xx]))(?<post>.*)身份证号:330204197709022312。
邮箱\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*我的邮箱是 lin***@aliyunmail.com
密码(.*password=)([\w\d]+)(.*){password=1213213}

知识库上传过滤器配置(仅适用于企业专属版)

企业专属版中,支持 Qoder CN 管理员、全局管理员通过在策略配置中配置知识库过滤器,配置完成后,在知识库文件上传前对其进行审查,从而满足在特定场景下对知识库内容前置过滤的需求。

过滤器配置说明

步骤一:开启并编辑知识库过滤器

  1. 在左侧导航栏,单击策略配置,在右侧页面,单击知识库过滤器页签。
  2. 在知识库过滤器配置页面,您可以打开开关开启/关闭知识库上传前置过滤器,进行参数配置编辑。
URL 地址必填企业提供的第三方扫描服务的接口地址。要求此接口必须使用 POST 请求。
Token 字段名必填指定请求头中用于存放 Token 的字段名。
Secret 密钥必填生成访问 Token 所需的密钥。Token 会被放入指定的请求头字段中,用于验证请求的合法性。详情请参考“安全 Token”章节。
img

步骤二:测试过滤器连通性

  1. 填写正确后,进行连通性测试,单击测试连接按钮。当第三方过滤接口返回2xx状态码时,测试成功。
  2. 如果返回其它状态码,测试则会失败,您需要检查填写信息后再重现测试连接。

步骤三:保存知识库过滤器

单击保存配置按钮,保存您的过滤器配置。保存成功后,过滤器将立即生效。

第三方扫描服务接口规范

企业需提供第三方扫描服务,以便知识库过滤器可以使用该服务对上传的知识内容进行扫描,通过扫描后方可上传。为了确保您配置的过滤器正常运行,扫描服务的接口应符合以下设计要求:

请求头

参数名是否必填参数说明参数示例
X-Auth-Raw接口鉴权参数,参数名为您在过滤器配置页面中配置的 Token 字段名。参数值应为Secret 密钥通过加密算法生成的最终密钥,具体生成逻辑详见“安全 Token”章节。6c3baa76c62550eab864e6f75c4bb
Content-Type表示请求和响应中的媒体类型信息。multipart/form-data
  • 安全Token:是阿里云设计的一种安全签名,旨在防止恶意攻击者盗用您的云服务权限。生成 Token 需要以下要素:Secret 密钥、当前时间、其他信息和加密算法。
  • Token生成:Qoder CN 调用第三方扫描服务接口时,将在请求头内携带安全Token 用于身份鉴权验证。 根据如下参数计算生成 Token 值:
    token = sha256Hex(method + url + timestamp + tokenSecret) + timestampHex
    
    method为POST 方法。
    url为配置知识库过滤器填写的扫描服务接口 URL 地址。
    timestamp为当前时间。
    tokenSecret为配置知识库过滤器时填写的 Secret 密钥。
    timestampHex将时间戳转换成十六进制。
  • Token验证:您的第三方扫描服务在验证请求的Token鉴权时,可以参考以下代码进行合法性校验。
    • 时间戳:确保客户端和服务端的时间同步,避免因时间偏差导致Token验证失败。
    • 密钥管理:妥善保管tokenSecret,不要泄露给未经授权的用户。
    • 过期时间:根据业务需求调整 Token 的有效时间,示例中设置为60秒,可根据实际情况调整。
    /*
     *  方法参数说明:
     *  receivedHash:接收到的哈希值,包含了时间戳信息。
     *  tokenSecret:用于生成哈希的密钥。
     *  url:请求的URL。
     */
    public boolean validateAuthRaw(String receivedHash, String tokenSecret, String url) {
        final String method = "POST";
      
        // 从 receivedHash 中提取时间戳部分
        String tsHex = receivedHash.substring(receivedHash.length() - 8);
        long tsSec = Long.parseLong(tsHex, 16);
      
        // 计算当前时间与接收时间的差异,假设允许的最大时间差为60秒
        long now = System.currentTimeMillis() / 1000L;
        if (Math.abs(now - tsSec) > 60) {
            return false; // 超过允许的时间范围
        }
      
        // 构建待签名的字符串
        String plain = method + url + tsSec + tokenSecret;
      
        // 生成预期的哈希值
        String expectedHash = org.apache.commons.codec.digest.DigestUtils.sha256Hex(plain);
      
        // 比较接收到的哈希值与预期的哈希值
        return expectedHash.equals(receivedHash.substring(0, receivedHash.length() - 8));
    }
    

请求参数

参数名参数类型是否必填参数解释参数示例
metadatastring业务元数据,Content-Type: application/json{"user": "user0000001","queryId": "cd2fd109-c4d4-489f-9b27-53752f7827d6"}
filefile送检的文件
请求示例。
Content-Type: multipart/form-data; boundary=${bound}
--${bound}

Content-Disposition: form-data; name="metadata"

Content-Type: application/json
{
"user":"user0000001",
"queryID":"cd2fd109-c4d4-489f-9b27-53752f7827d6"
}

--${bound}
Content-Disposition: form-data; name="file"; filename="test-file.pdf"

Content-Type: application/pdf

%binary-file-content-here%

响应结构

接口应返回 HTTP 状态码 200,并包含以下格式的响应体。
参数名参数类型是否必填参数解释参数示例
forbiddenboolean安全检测结果。true表示检测失败。false
errorMsgstring错误信息,说明检测失败的原因。"文件包含恶意内容,请修改后再上传"
queryIdstring请求 ID,需与请求 metadata 中的 queryId 字段对应。"cd2fd109-c4d4-489f-9b27-53752f7827d6"
userstring用户 ID,需与请求 metadata 中的 user 字段对应。"user0001"
产品概述
操作指南
实践教程
  • 编码使用实践
开发参考