【拥抱AIGC】通义灵码策略配置

news2024/11/17 17:40:25

通义灵码企业级策配置支持智能问答、行间代码生成安全过滤器相关策略配置。

适用版本

企业标准版、企业专属版

通义灵码管理员、组织内全局管理员(专属版)在通义灵码控制台的策略配置中进行安全过滤器的配置,开启后,企业内开发者使用通义灵码 IDE 插件的智能问答、行间代码生成功能时,将通过管理员配置的安全过滤器。

重要

  • 如需使用企业级策略配置功能,请确保将通义灵码 IDE 插件升级到 V1.4.0 及以上

  • 启用或修改后,预计需要 5~10 分钟生效,开发者可在使用通义灵码 IDE 插件时生效。

在不同的版本中,支持的过滤器方式不同:

  • 企业标准版:智能问答安全过滤器、行间生成安全过滤器,均支持正则表达式;

  • 企业专属版:智能问答安全过滤器、行间生成安全过滤器,均支持正则表达式、自定义脚本;

方式一:正则表达式配置

企业标准版、企业专属版均支持通过正则表达式的方式进行过滤器配置。

说明

管理员在配置正则时,充分验证,避免对 IDE 插件端开发者使用产生性能的影响或异常问题。

处理方式:支持通过正则表达的方式配置过滤器,且支持 3 种模式:

匹配规则时不处理

匹配到正则后,不做任何处理

匹配规则时拦截

匹配到正则后,直接拦截请求,阻断模型请求

匹配规则时替换内容

匹配到正则后,按照配置替换内容

消息通知:支持开启消息通知,通过 webhook 的方式,推送到所需要的消息接收平台。

执行顺序:按照配置的排序执行。

正则数量限制:最多添加 10 条。

正则表达式标准:正则配置遵循 ECMAScript 标准,支持i(不区分大小写)、g(全局匹配)、s(DOTALL 模式)等常用标志位。

正则配置示例:

规则名称

正则表达式

替换内容

原文

替换后

身份证号

(?<pre>.*)(\d{15})((\d{2})([0-9Xx]))(?<post>.*)

$<pre>***$<post>

身份证号:330204197709022312。

身份证号:***。

邮箱

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

***

我的邮箱是 lin***@aliyunmail.com

我的邮箱是 ***

密码

(.*password=)([\w\d]+)(.*)

$1***$3

{password=1213213}

{password=***}

方式二:自定义脚本配置

企业专属版中支持通过自定义脚本的方式进行过滤器配置,以实现对复杂场景下的前置过滤的需求。步骤如下:

步骤一:脚本开发

目前支持使用 TypeScript 语言进行脚本开发,可以参考样例进行代码开发,操作步骤如下:

  1. 下载模板代码库:单击仓库地址:lingma-extension-template,该模板仓库集成了开发脚本所需的脚手架,请仔细阅读README.md文件和代码示例;

  2. 实现“前置处理”接口:实现接口RequestPreHandler,API 可参考见下文,以下为一个示例片段SensitiveContentFilter.ts的实现:

/**
 * 敏感内容过滤器,通过该过滤器可以实现对发送给模型的数据进行敏感信息预处理
 */
export const sensitiveContentFilter: RequestPreHandler = {
  handle: async (request: RawRequest, SDKTool: LingmaSDKTool) => {
    const dataMap = PayloadUtil.getPayloadData(request.payload);
    for (const [key, value] of dataMap.entries()) {
      if (value.includes('password')) {
        return ResultUtil.buildBlockResult('内容包含password');
      }
    }
    // 如果需要针对不同的 action 做差异化处理,则参考如下实现
    switch (request.action) {
      case ActionEnum.COMPLETION:
        // do something
        break;
      case ActionEnum.CODE_PROBLEM_SOLVE:
        // do something
        break;
      default:
        return ResultUtil.buildNoOpsResult();
    }
    return ResultUtil.buildNoOpsResult();
  },
};
  1. 运行调试代码,通过运行main方法来测试脚本是否符合预期,操作步骤如下:

步骤一

编辑src/index.ts文件,修改main函数,调整实际需要被调试代码,如下示例:

async function main() {
  const value1 = ['password=123', 'abc'];
  const value2 = 'hello world';
  const dataMap = new Map<PayloadDataKeyEnum, PayloadDataValueType>();
  dataMap.set(PayloadDataKeyEnum.SELECTED_CODE, value1);
  dataMap.set(PayloadDataKeyEnum.USER_INPUT, value2);

  const mockRequest: RawRequest = {
    action: ActionEnum.CODE_GENERATE_COMMENT,
    payload: {
      associatedContexts: [],
      data: dataMap,
    },
    requestId: '123',
  };
  const response = await sensitiveContentFilter.handle(mockRequest, SDKTool);
  console.log(response);
}

步骤二

在 VS Code 中打开想要调试的代码文件并设置断点,然后从调试视图中选择“启动程序”并单击运行按钮即可;

image

步骤二:编译构建

将运行调试完成的 ts 文件编译为 js 文件,如将SensitiveContentFilter.ts文件编译为SensitiveContentFilter.js文件,编译构建步骤如下:

  1. 打开配置文件src/build.js,修改entryPointsoutfile两个配置参数,并在entryPoints参数中指定需要编译构建的 ts 文件路径,在outfile中指定构建后的产物输出路径;

  2. 在代码库根目录下执行命令node build.js,执行成功后对应的 js 文件将输出到outfile指定的产物输出路径。

步骤三:本地测试

在脚本上传企业配置后台之前,可在本地完成调试,以确保脚本能够与通义灵码的 IDE 插件集成,并对补全或问答场景的行为进行正确的安全过滤处理。具体调试步骤如下:

  1. 将构建好的 js 文件拷贝到通义灵码本地存储路径的/extension/local/script/目录下;

  2. 修改config.json文件:该文件所在目录为通义灵码本地存储路径的/extension/local/,打开config.json文件,并找到contentHandlerScripts,并在对应的内容里增加该脚本的配置信息,如果没有contentHandlerScripts,可以新增一个数组类型的配置,参考示例如下:

{
  "contentHandlerScripts": [
    {
      "identifier": "SensitiveContentFilter", 
      "name": "敏感内容过滤",
      "version": "1.0.0",
      "scriptPath": "~/.lingma/extension/local/script/SensitiveContentFilter.js",
      "state": "enabled",
      "bizType": "completion"
    }
  ]
}

配置参数说明:

参数

说明

identifier

脚本 ID,需确保唯一性。

name

脚本名称

version

脚本的版本号,如果修改了脚本内容,需要升级版本号,否则脚本无法生效。

scriptPath

脚本存放的路径,请注意:

  • 脚本一定要存放在本地存储路径的/extension/local/script/目录下;

  • 脚本的 js 文件名称(如:SensitiveContentFilter.js)一定要与identifier的值保持一致。

state

脚本状态,enabled表示启用、disabled表示禁用。

bizType

脚本应用的业务场景,completion表示行间代码生成补全、chat表示智能问答。

步骤四:脚本上传

经过本地调试并通过验证后,可进行脚本上传,操作步骤如下:

  1. 前往通义灵码控制台-策略管理,选择需要开通安全过滤器的场景;

  2. 选择过滤器选项为:自定义脚本;

  3. 将构建后的 js 文件上传;

  4. 上传后,单击保存配置,约 5 分钟内会下发到插件端生效。

自定义脚本 API

目前自定义脚本支持三种处理方式,如下:

  • 阻断处理:即阻断后续流程,一旦阻断,则不会请求大模型进行推理,中断本次请求;

  • 过滤处理:对发送处理的数据进行了修改(如:混淆、删除、替换等),然后继续后续流程;

  • 无处理:对发送的数据没有做任何处理,原样返回,然后继续后续流程。

接口定义
/**
 * 通义灵码编程助手前置处理接口
 */
export interface RequestPreHandler {
  // 处理请求
  handle: (request: RawRequest, SDKTool: LingmaSDKTool) => Promise<HandlerResponse>;
}
入参定义
/**
 * 请求对象定义,请求包括触发的行为和待发送给 LLM 的原始数据
 */
export interface RawRequest {
  // 当前请求唯一标识,可用于追踪请求执行
  action: ActionEnum;
  // 触发请求的行为枚举
  payload: ContentPayload;
  // 封装原始数据内容的payload
  requestId: string;
}

// ContentPayload.data 中 value 类型
export type PayloadDataValueType = string | number | string[];
/**
 * 封装发送给 LLM 的原始数据内容
 */
export class ContentPayload {
  // 待处理的数据集合,对应的 key 参考 ContextValueKeyEnum 定义
  data: Map<PayloadDataKeyEnum, PayloadDataValueType>;
  // 与处理关联的上下文
  associatedContexts: ContextItem[];

  constructor() {
    this.data = new Map<PayloadDataKeyEnum, PayloadDataValueType>();
    this.associatedContexts = [];
  }
}

/**
 * ContentPayload.data 中 key 枚举
 */
export enum PayloadDataKeyEnum {
  // 用户圈选的代码片段
  SELECTED_CODE ='lingma:code',
  // 用户输入的文本
  USER_INPUT = 'lingma:text',
  // 报错信息
  ERROR_MESSAGES = 'lingma:error_messages',
  // 终端打印的日志信息
  TERMINAL_CONTENT = 'lingma:terminal_content',
  // 代码补全时,当前光标所在行的前文代码片段
  PREFIX_CODE = 'lingma:code_prefix',
  // 代码补全时,当前光标所在行的后文代码片段
  SUFFIX_CODE = 'lingma:code_suffix',
  // 相似代码片段
  SIMILAR_CODE = 'lingma:similar_code',
}

/**
 * 触发请求的行为枚举
 */
export enum ActionEnum {
    // 单元测试
    GENERATE_TESTCASE           = 'GENERATE_TESTCASE',
    // 生成注释
    CODE_GENERATE_COMMENT       = 'CODE_GENERATE_COMMENT',
    // 代码解释
    EXPLAIN_CODE                = 'EXPLAIN_CODE',
    // 代码优化
    OPTIMIZE_CODE               = 'OPTIMIZE_CODE',
    // 自由问答(即在问答输入框中直接输入文本的行为)
    FREE_INPUT                  = 'FREE_INPUT',
    // 代码问题快捷修复
    CODE_PROBLEM_SOLVE          = 'CODE_PROBLEM_SOLVE',
    // shell命令生成
    TERMINAL_COMMAND_GENERATION = 'TERMINAL_COMMAND_GENERATION',
    // 终端报错修复
    TERMINAL_EXPLAIN_FIX        = 'TERMINAL_EXPLAIN_FIX',
    // 代码补全
    COMPLETION                  = 'COMPLETION',
}
出参定义
/**
 * 预处理结果
 */
export class HandlerResponse {
  // 处理策略,通过该策略可以控制后续的处理逻辑
  handlePolicy: HandlePolicy;
  // 原因描述
  reason?: string;
  // 当handlePolicy=FILTER时,需要设置该属性,其值为经过过滤后的数据(必须与ContentRequest.payload的内容保持一致)
  payload?: ContentPayload;
  constructor() {
    // 默认值
    // eslint-disable-next-line @typescript-eslint/no-use-before-define
    this.handlePolicy = HandlePolicy.NO_OPS;
    this.reason = '';
    this.payload = new ContentPayload();
  }
}

/**
 * 处理策略枚举
 */
export enum HandlePolicy {
  // 阻断策略,直接阻断请求
  BLOCK = 'BLOCK',
  // 过滤策略,拦截请求并对payload内容进行修改
  FILTER = 'FILTER',
  // 忽略策略,不处理请求
  NO_OPS = 'NO_OPS',
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2184544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十一届蓝桥杯嵌入式省赛程序设计题解析(基于HAL库)(大学组第二套)

一.题目分析 &#xff08;1&#xff09;.题目 &#xff08;2&#xff09;.题目分析 1..按键功能分析 a. B1界面切换 b. B2每次按下&#xff0c;PA6手动模式占空比参数增加10% c. B3每次按下&#xff0c;PA7手动模式占空比参数增加10% d. B4模式切换 f. 在数据显示界面下…

JAVA姓氏头像情侣头像家庭头像签名头像谐音顽埂头像设计小程序头像大全系统小程序源码

姓氏头像到谐音梗&#xff0c;打造你的专属头像大全系统 &#x1f3a8;✨ &#x1f468;‍&#x1f469;‍&#x1f467;‍&#x1f466; 家庭头像&#xff1a;记录温馨瞬间 在这个充满爱的时代&#xff0c;用一张家庭头像来记录你和家人的美好瞬间吧&#xff01;我们的“姓氏…

Linux 进程状态、僵尸进程与孤儿进程

目录 0.前言 1. 进程状态 1.1 定义 1.2 常见进程 2.僵尸进程 2.1 定义 2.2 示例 2.3 僵尸进程的危害与防止方法 3. 孤儿进程 3.1 介绍 3.2 示例 4.小结 &#xff08;图像由AI生成&#xff09; 0.前言 在上一篇文章中&#xff0c;我们介绍了进程的基本概念、进程控制块&#…

Python Flask 和 Django 的区别与适用场景

Flask 和 Django 的异同&#xff08;结合代码解释&#xff09; Flask 和 Django 是两个流行的 Python Web 框架。尽管它们都是用于构建 Web 应用程序的强大工具&#xff0c;但它们的设计哲学、功能和用法有很大的区别。通过代码示例&#xff0c;可以更直观地理解 Flask 和 Dja…

基础岛第1关:书生大模型全链路开源体系

了解书生浦语大模型体系&#xff1a;书生浦语 InternLM2.5 系列模型&#xff1a; 卓越的推理性能&#xff1a;在数学推理方面取得了同量级模型最优精度&#xff0c;超越了 Llama3 和 Gemma2-9B。有效支持百万字超长上下文&#xff1a;模型在 1 百万字长输入中几乎完美地实现长…

一文讲透大语言模型构建流程

最近已有不少大厂都在秋招宣讲了&#xff0c;也有一些在 Offer 发放阶段。 节前&#xff0c;我们邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对新手如何入门算法岗、该如何准备面试攻略、面试常考点、大模型技术趋势、算法项目落地经验分享等热门话题进行了…

用友U8-CRM fillbacksettingedit.php SQL注入复现

0x01 产品描述&#xff1a; 用友U8-CRM是企业利用信息技术&#xff0c;是一项商业策略&#xff0c;它通过依据市场细分组织企业资源、培养以客户为中心的经营行为、执行以客户为中心的业务流程等手段来优化企业的客户满意度和获利能力。 0x02 漏洞描述&#xff1a; 用友 U8 C…

VMware Aria Operations for Logs 8.18 发布,新增功能概览

VMware Aria Operations for Logs 8.18 - 集中式日志管理 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-aria-operations-for-logs/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 集中式日志管理 VMware Aria …

web开发(1)-基础

这是对b站课程的总结&#xff0c;后续可能会继续更 01 前后端分离介绍_哔哩哔哩_bilibili01 前后端分离介绍是Web应用开发-后端基础-基于Springboot框架的第1集视频&#xff0c;该合集共计29集&#xff0c;视频收藏或关注UP主&#xff0c;及时了解更多相关视频内容。https://w…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01目录1. Beyond Text-to-Text: An Overview of Multimodal and Generative Artificial Intelligence for Education Using Topi…

第二弹:面向对象编程中的类与对象

文章目录 面向对象编程中的类与对象1. 类与对象的定义1.1 类和对象的概念1.2 类的基本定义 2. 类的封装2.1 类的封装语法2.2 类成员访问权限2.3 struct和class的区别2.4 类封装与成员函数定义分离 3. 类对象的创建与销毁3.1 静态与动态对象的创建3.2 对象的销毁 4. 构造函数和析…

云服务器部署k8s需要什么配置?

云服务器部署k8s需要什么配置&#xff1f;云服务器部署K8s需要至少2核CPU、4GB内存、50GBSSD存储的主节点用于管理集群&#xff0c;工作节点建议至少2核CPU、2GB内存、20GBSSD。还需安装Docker&#xff0c;选择兼容的Kubernetes版本&#xff0c;配置网络插件&#xff0c;以及确…

大数据-154 Apache Druid 架构与原理详解 基础架构、架构演进

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

【日常记录】现在遇到的Y7000P亮度无法调节问题,无需改动注册表进行调整的方法。

1、winR 2、输入&#xff1a;services.msc 3、找到下面红框内的服务 4、右键后&#xff0c;点击重启任务&#xff0c;重启任务后&#xff0c;再次按热键即可恢复亮度调节。

XGBOOST算法Python实现(保姆级)

摘要 XGBoost算法&#xff08;eXtreme Gradient Boosting&#xff09;在目前的Kaggle、数学建模和大数据应用等竞赛中非常流行。本文将会从XGBOOST算法原理、Python实现、敏感性分析和实际应用进行详细说明。 目录 0 绪论 一、材料准备 二、算法原理 三、算法Python实现 3…

西电25考研 VS 24考研专业课大纲变动汇总

01专业课变动 西安电子科技大学专业课学长看到953网络安全基础综合变为 893网络安全基础综合&#xff0c;这是因为工科要求都必须是8开头的专业课&#xff0c;里面参考课本还是没变的&#xff0c;无非就是变了一个名字 对于其他变动专业课也是同理的 02专业课考纲内容变化 对于…

<<迷雾>> 第5章 从逻辑学到逻辑电路(6)--莎士比亚电路 示例电路

info::操作说明 鼠标单击开关切换开合状态 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch05-17-shakespeare-circuit.txt 原图

【AI人工智能】文心智能体,陪爸妈去旅游,国庆假期不容错过,旅游搭子首选

文章目录 背景创作灵感陪爸妈去旅游简介角色与目标思考路径个性化开场白调优 智能体体验总结和感受 背景 文心智能体平台&#xff0c;开启新一轮活动&#xff0c;超级创造营持续百日活动。 在AI 浪潮席卷的今天&#xff0c;如雨后春笋般丛生的 AI 应用&#xff0c;昭告着时代风…

AI助力CMIP6数据处理技术及在气候变化、生态农业、水文多领域实践应用

查看原文>>>AI助力CMIP6数据处理技术及在气候变化、生态农业、水文多领域实践应用 目录 专题一 CMIP6中的模式比较计划 专题二 数据下载 专题三 基础知识3.1 Python基础 专题四 单点降尺度 专题五 统计方法的区域降尺度 专题六 基于WRF模式的动力降尺度 专题七…

墙绘艺术在线交易:SpringBoot技术解析

2 相关技术 2.1 SSM框架介绍 本课题程序开发使用到的框架技术&#xff0c;英文名称缩写是SSM&#xff0c;在JavaWeb开发中使用的流行框架有SSH、SSM、SpringMVC等&#xff0c;作为一个课题程序采用SSH框架也可以&#xff0c;SSM框架也可以&#xff0c;SpringMVC也可以。SSH框架…