基于AI Agent探讨:安全领域下的AI应用范式

先说观点:关于AI应用,通常都会聊准召。但在安全等模糊标准的场景下,事实上不存在准召的定义。因此,AI的目标应该是尽可能的“像人”。而想要评价有多“像人”,就先需要将人的工作数字化。而AI Agent是能够将数字化、自动化、智能化这几个转变过程相对顺畅衔接起来的一种框架。

0、为什么GPT让大家感到兴奋

单纯从能力上看,针对特定的任务,GPT是不如各种已有能力的:

  • 执行加减乘除、排序、去重等任务,GPT远不如各种脚本和工具来得靠谱。当任务相对简单时,还能够应付,一旦复杂度增加,GPT就会出现各种异常,比如:大数计算、长文本任务等。

  • 强监督任务,即使复杂度极高,比如下围棋,AlphaGo早就通过深度学习能力打败了人类,单纯GPT肯定是比敌AlphaGo的。尽管AlphaGo取得了如此高的成就,但带来了反响并没有GPT热烈。

在细分领域能力并不强的情况下,为什么GPT带来如此大的跨圈影响?ChatGPT功不可没,他呈现的“对话”这一交互形式,大幅度降低了AI的体验门槛,拉近了人与AI的距离。而能够支撑“对话”这种交互模式,其实也代表了GPT的一些能力特性:

  • 更宽松的输入和输出兼容:过往的AI通常都会要求特定格式的输入和输出,比如输入一堆特征,输出一个0和1的结果。而GPT的生成式能力,让输入输出可以变得十分随意。

  • 具备较强的通识:ChatGPT选用的“大力出奇迹”方式,增大参数量和训练集,也使得自身具备了足够多的知识储备,能够zero-shot应对大部分问答场景。

因此,以GPT为代表的大模型,相当于一个“宽而浅”的智能体。承担简单任务时,其灵活性会大幅度提升工作效率,但如果承担复杂工作,则往往不会给到有效的反馈。

1、AI Agent简介

那怎么提升LLM的能力深度呢?

最直接的方法是提供更多专项领域内的数据进行训练or微调,但成本会相对较高,也未必会取得正向效果,新的知识输入可能会导致模型遗忘已有的关键知识。

在Prompt中提供更多的上下文数据,是更直接的思路。

  • 比如GPT不知道新发生的事情,那就拼接一个搜索插件,在提问的时候,把查询的最新内容放到Prompt中,这样GPT就能将其作为参考来回答问题。

  • 比如GPT不知道一些领域内的知识,那就提供一个知识库,在提问的时候,先在知识库中检索相关的知识放到Prompt中,这样GPT就能够将知识库作为参考来回复。

这种通过外部力量增强模型能力的做法,就属于AI Agent的简单形态。

AI Agent的学术定义如下:

Xi, Zhiheng, et al. "The rise and potential of large language model based agents: A survey." arXiv preprint arXiv:2309.07864 (2023).

AI Agent由大脑(Brain)、感知(Perception)、行动(Action)三个部分组成。作为控制器,大脑模块承担记忆、思考和决策等基本任务;感知模块负责感知和处理来自外部环境的多模态信息;行动模块负责使用工具执行任务并影响周围环境。Agent的内部信息通路是Perception->Brain->Action构成的一个循环:接受到某个任务后,大脑先做出规划,然后根据当前阶段决策需要做出哪些动作;感知到这些动作的反馈后,结合历史记忆,做出下一步决策。

Agent和playbook的概念其实很接近,或者跟进一步说,“有限状态机”本身就是一种Agent的体现。而这其中的主要差别在于,AI Agent不倾向提前定义好明确的SOP,而是让AI根据已知的情况自主判断,做出决策和下一步动作。

那为什么LLM给Agent带来了新的活力呢?因为定义过程其实是一件很难的事情:购物的时候如何挑选合适的商品、下棋的时候如何决策下一步、投资的时候选取有潜力的目标,等等。随着事件类型和特征的丰富程度增加,人来决策的直觉性越来越强,将其抽象为一个代码实现的过程也更加困难。而LLM的通识性和逻辑性,恰好能规避掉这个过程。

从另一方面来说,当前阶段的LLM不擅长完成复杂任务,但大量研究发现其具备CoT能力:通过将复杂任务进行拆解,逐步完成,能够大幅提升最终的成功率。而Agent则是一个CoT的合适载体。

因此,LLM和Agent起到了相互促进的作用。

2、安全领域下的算法应用

安全的特点是对bad case极度敏感。所以安全更讲究逻辑,不讲究概率。

比如特斯拉发生一起事故,如果只是讲概率,特斯拉已经安全行驶百万公里,事故率低于0.0001%,而你就是不幸被小概率命中的那波人。尽管都是客观公正的事实,但数字过于冰冷,并无法说服人们的赢得信任。所有要做的其实是还原事故过程,让人们认为特斯拉作为汽车厂商该做的都做了,才有可能平息质疑。

而过去算法的应用本质上都属于概率学的呈现(比如推荐你大概率会感兴趣的商品),因此很难在安全场景下得到大规模的使用,仅在部分风险可接受的场景下呈现出了积极的发展态势。如人脸识别支付,哪怕识别错了,用其他人的账户完成了支付,厂商仅需要进行对应损失的赔付即可,从整体概率上是可接受的。

在ChatGPT刚火热的时候,我一度认为Copilot是解决这一困境的方法:算法不再做决策,只是提供建议,最终还是由人来做决策。但使用一段时间后,能够明显感觉到直接讲GPT作为Copilot能提供的帮助是有限的:

  • 面对简单的场景,写段脚本、写个复杂SQL等,GPT能够较好的执行结果,能够有效替代大量搜索引擎工作。

  • 面对复杂的决策场景,GPT通常只能接收到有限的信息,也缺乏历史经验的输入,几乎给不到有效的建议。

这让我想起了《萨利机长》中,机长在处理应急事件时的过程:在飞机因为鸟类撞击导致引擎失灵,副机长立即拿出了QRH(Quick Reference Handbook),找到对应章节,开始按照上面的操作步骤开始处理。在副机长执行了十几项动作后(据说大约有三页,但连第一页都没过完),机长一边check,一边做出了决策:降落哈德逊河 —— 一个完全超脱手册的判断,副机长一脸震惊。

这其实反映了安全行业特别有意思的一个现象:无论如何完备标准化处置能力,最终都还是会依靠人来完成最终决策。

而AI Agent能够在安全领域有什么帮助?它能将一个复杂任务拆分,既有利于观测过程,也有利于明确处理任务。

3、基于Agent的AI应用范式

首先,需要定义一下应用AI的目标。我认为是:尽可能模拟安全专家的决策过程,而不是追求更高的准召率。

安全本身就缺乏明确的定义,一起事件是入侵还是误报,最终还是需要交由人来决策。当安全专家穷尽各种方法也无法做出正确判断时,无法想象AI能够做出更准确的判断。因此,准召只能是AI应用的一个参照性指标,我们最终希望评判的还是,AI有多像人。

这个过程大体会分为几步:

1)所有动作的API化

Agent的重要特性之一就是能够于环境交互,具备灵活的输入输出能力,即感知(Perception)和行动(Action)部分。而将安全专家的各类操作API化,将是落地Agent的过程中工作量最大的一环。大概会需要经过一次内部的头脑风暴,把可能需要进行的操作给盘点出来。

以审查一次Web安全告警为例,可能会需要:

  • 查询来源IP的归属,判断是否恶意;

  • 查询当前业务的属性,是否安全相关;

  • 查询内部组织架构,判断IP和业务之间的相关性;

  • 查询该业务的过往请求,判断是否正常操作;

  • 查询该IP的后续请求,判断是否有进一步异常动作;

  • 查询告警规则,判断是否符合规则预期;

  • 进行尝试性封禁,判断攻击是否被阻断;

  • 获取近期客诉,判断是否存在误伤;

  • ……

这其中任何一环都可能是影响最终决策的关键信息输入,因此必须保障AI Agent具备主动查询并获取相应信息的能力。

2)过往记录初步形成知识库

团队内部经过长期运营沉淀下来的经验是十分宝贵的,摒弃这部分数据从0开始使用Agent就过于浪费了。因此,第二步是想办法将过去的零散知识汇总起来,变成Agent可以快速学习和参考的知识库。相对价值比较高的内容包括:已有的SOP、处理记录/复盘报告、数据查询报表、接口文档和案例等。

知识库的检索能力会决定AI Agent的能力上限。

知识库的官方称呼为RAG(Retrieval-Augmented Generation),比较经典的RAG实现为LangChain-Chatchat。大致原理如下:

更理想的RAG,应当能够根据人类的思维模式来进行分类检索。比如当你接到一项任务的时候,大致会尝试在脑海中检索两部分内容:相关的理论基础、相关的过往案例。基于这两部分内容,再结合通识逻辑进行推理,通常能够做出正确的决策来。

3)指导性的运营平台

AI Agent一定需要人工交互,才能够获得反馈,持续迭代自身。

总体来说,AI Agent的运算过程仍然是黑盒的,因此需要设定一些节点,让AI Agent主动跳出循环,等待安全专家的反馈,包括:规划设定、关键控制流、最终结果。在观看其他行业的AI Agent应用分享时,下图所示的人和AI的合作分工,我认为是比较符合预期的:

这个过程中,降低交互成本是需要核心考虑的因素。基于ChatGPT的成功,对话几乎是必然的一种形态。

4)可修正的处理记录

最后,需要让AI Agent对每次任务的处理过程进行摘要记录,并且人工对其中的偏差进行修正,形成一个完整的案例报告。

这个案例报告会被录入到知识库中,当AI Agent下次处理相似的任务时,会被检索出来,使得AI Agent会按照相似的逻辑进行处理。

总结来说,完整的AI Agent大致会长这样:

有了以上这些框架之后,AI Agent的雏形就基本具备了:1)能够在安全专家的指导下,完成特定的任务处理;2)能够将日常处理过程记录下来。

这个阶段,AI Agent的表现可能并不如预期,但随着记忆的不断积累,以及持续优化记忆检索的模式(如处理任务时,将匹配度最高、最成功的历史处理记录捞出来),AI Agent就可以进入持续学习领域知识,持续提升自身能力的正向循环。

4、Agent的正向意义

对Agent的正向意义再做一轮强调。

AI的目标是:尽可能模拟安全专家的决策过程,而不是追求更高的准召率。因此,不应当期望Agent落地之后,能够带来额外的能力增益。由于历史经验的不足,Agent甚至对提效的帮助也不会特别显著。

这个过程中,最大的意义,其实是促进日常工作的数字化。而只有数字化的程度足够高,才能够形成有效的经验积累,带动整个团队提升。

在没有Agent之前,大家其实也都在往这个方向努力。比如:

  • 投简历时,公司提供了极细致的简历模版(学历、年龄、工作经历、奖项等),让求职者填写各种标准字段;

  • 面试时,公司将能力考核项一项项列出来(专业能力、沟通能力、综合潜力等),要求面试官填写;

  • 事件复盘时,公司提供了用于刨根究底的复盘模版(事件发生时间、响应时间、止损时间、恢复时间等);

  • ……

但不得不承认的是,人工填写这些表单,是一件极其annoying的工作。因此,人性使然下,大家总是会耍各种小聪明,来降低这部分工作负担。最终往往导致,貌似有一个非常全面的机制,但执行质量却差强人意。

而AI Agent的出现,可以通过“对话”等形式,大幅度降低这部分工作的精力成本。个人认为,这才是AI Agent的最大意义。

5、结语

AI的发展大体是一个从简单白盒到复杂黑盒的过程,比如:从传统机器学习到深度学习、从RNN的标准Encoder-Decoder模式到GPT直接Decoder-only引领潮流。降低AI的应用和理解门槛,本身也是AI发展的重要趋势之一。

AI Agent似乎是让决策过程再次变得白盒。但细细品味,AI Agent实际上是将AI应用拔高了一个层面:过去只处理单个任务,现在要处理复杂作业,因此需要CoT的支撑。

大胆猜测,未来会出现一个通用的AI Agent(GPTs已经接近这个状态),大幅度降低AI Agent的落地门槛。随之而来,会出现多个Agent的协作机制:一个Agent扮演高阶决策者,其他Agent扮演不同的职能角色,进一步提升AI处理任务的复杂性。

就仿佛是一个公司的发展历程:单兵作战 -> 小团队作战 -> 多级管理团队。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

语言与科技创新(大语言模型对科技创新的影响)

1.语言因素对科技创新的影响 科技创新中的语言因素至关重要,具体体现在以下几个方面: 科技文献交流: 英语作为全球科学研究的通用语言,极大地推动了科技成果的国际传播与合作。在国际上,科学家们在发表论文、报告研究…

【Vue】computed与watch

📝个人主页:五敷有你 🔥系列专栏:Vue⛺️稳重求进,晒太阳 计算属性 概念:基于现有的数据,计算出来新的属性,依赖的数据变化,自动重新计算 语法: 声明…

相机图像质量研究(13)常见问题总结:光学结构对成像的影响--鬼影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

【前端web入门第六天】01 CSS浮动

⭐️第六天目标 解决布局问题如多个div标签在同一行的问题 简单来说,就是可以两个标签,一个在左边,另一个在右边. 👉相关知识 标准流浮动flex布局❗️ ❗️ ❗️ 标准流是先导,浮动和flex布局都可以解决问题,但是浮动在目标开发领域较为落后,主流的解决办法是flex…

后端接口如何部署到前端

先跑通后端 把后端接口路径写入前端两个env.js中的BASE_API 这里以后要替换成个人域名,目前就可以对前端进行打包,改了代码记得先重新打包

HarmonyOS鸿蒙学习基础篇 - Column/Row 组件

前言 Row和Column组件是线性布局容器,用于按照垂直或水平方向排列子组件。Row表示沿水平方向布局的容器,而Column表示沿垂直方向布局的容器。这些容器具有许多属性和方法,可以方便地管理子组件的位置、大小、间距和对齐方式。例如&#xff0c…

计算机网络——多媒体网络

前些天发现了一个巨牛的人工智能学习网站 通俗易懂,风趣幽默,忍不住分享一下给大家, 跳转到网站 小程一言 我的计算机网络专栏,是自己在计算机网络学习过程中的学习笔记与心得,在参考相关教材,网络搜素…

C# CAD交互界面-自定义面板集-查找定位(六)

运行环境 vs2022 c# cad2016 调试成功 一、代码说明 1. 类成员变量声明&#xff1a; List<ObjectId> objectIds new List<ObjectId>(); // 用于存储AutoCAD实体对象的ObjectId列表 private static Autodesk.AutoCAD.Windows.PaletteSet _ps2; // 自定义浮动面板…

猫头虎分享已解决Bug ‍ || Java Error: Could not find or load main class com.example.Main

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

VMware虚拟机安装openEuler系统(二)(2024)

下面我们进行openEuler系统的一些简单配置。 1. 开启openEuler系统 在VMware Workstation Pro虚拟机软件中找到安装好的openEuler操作系统虚拟机并开启。 等待开启。 2. 安装配置 进入后选择第一个“Install openEuler 20.03-LTS”。 3. 选择系统语言 为虚拟机设置系统语言…

Docker 在window 2024版笔记 下载 安装 操作 配置

---Docker 前言--- Docker windows版官方版是一款专业开源的应用容器引擎&#xff0c;可以加快用户构建、共享和运行现代应用程序的速度&#xff0c;支持运行Linux和Windows Docker容器。 Docker 在容器的基础上&#xff0c;进行了进一步的封装&#xff0c;从文件系统、网络互…

[缓存] - 1.缓存共性问题

1. 缓存的作用 为什么需要缓存呢&#xff1f;缓存主要解决两个问题&#xff0c;一个是提高应用程序的性能&#xff0c;降低请求响应的延时&#xff1b;一个是提高应用程序的并发性。 1.1 高并发 一般来说&#xff0c; 如果 10Wqps&#xff0c;或者20Wqps &#xff0c;可使用分布…

css浮动

CSS浮动 1. 浮动的简介 在最初&#xff0c;浮动是用来实现文字环绕图片效果的&#xff0c;现在浮动是主流的页面布局方式之一。 2. 元素浮动后的特点 脱离文档流。不管浮动前是什么元素&#xff0c;浮动后&#xff1a;默认宽与高都是被内容撑开&#xff08;尽可能小&#x…

第4讲引入JWT前后端交互

引入JWT前后端交互 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准&#xff08;(RFC 7519)&#xff1b; JWT就是一段字符串&#xff0c;用来进行用户身份认证的凭证&#xff0c;该字符串分成三段【头部、载荷、签证】 后端接口测试&…

(06)Hive——正则表达式

Hive版本&#xff1a;hive-3.1.2 一、Hive的正则表达式概述 正则表达式是一种用于匹配和操作文本的强大工具&#xff0c;它是由一系列字符和特殊字符组成的模式&#xff0c;用于描述要匹配的文本模式。 Hive的正则表达式灵活使用解决HQL开发过程中的很多问题&#xff0c;本篇文…

java排课管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java排课管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&#…

网络安全最典型基础靶场-DVWA-本地搭建与初始化

写在前面&#xff1a; 之前也打过这个 DVWA 靶场&#xff0c;但是是在虚拟机环境下的一个小块分区靶场&#xff1b; 本篇博客主要介绍在本地搭建 DVWA 靶场以及靶场的初始化&#xff0c;后续会陆续更新通关教程。 由于我们是在本地搭建&#xff0c;则需要基于你已经装好 phpstu…

Ps:创建联系表

Ps菜单&#xff1a;文件/自动/联系表 II Automate/Contact sheet II Photoshop 的“联系表 II” Contact Sheet II命令为快速生成图像集合的预览和打印目录提供了一种高效的方法。 此命令可以通过自动化过程读取指定的图像文件&#xff0c;然后根据用户定义的参数&#xff08;如…

STM32 STD/HAL库驱动W25Q64模块读写字库数据+OLED0.96显示例程

STM32 STD/HAL库驱动W25Q64 模块读写字库数据OLED0.96显示例程 &#x1f3ac;原创作者对W25Q64保存汉字字库演示&#xff1a; W25Q64保存汉字字库 &#x1f39e;测试字体显示效果&#xff1a; &#x1f4d1;功能实现说明 利用W25Q64保存汉字字库&#xff0c;OLED显示汉字的时…

C++初阶:适合新手的手撕list(模拟实现list)

上次讲了常用的接口&#xff1a;今天就来进行模拟实现啦 文章目录 1.基本结构与文件规划2.空参构造函数&#xff08;constructor)3.完善迭代器&#xff08;iterator&#xff09;(begin(),end())4.List Capacity&#xff08;size(),empty())4.增删改查(push_back,pop_back,pop_f…