如何管理一百个ai专家智能体——ai调度系统设计

前言

如果你用过openai的chatgpt服务,你肯定知道一个叫做GPTs的智能体商店,里面提供了大量的来自官方和个人制作的专门针对某个领域的gpt助手。比如,你想让gpt帮忙写文章,并且要能够写得好,你就可以在商店中搜索相关的助手并应用到聊天窗口,同理,还有网页搜索助手,PDF阅读助手,等等。

你要先搜索,寻找能解决你问题领域的专家助手,再和它交流。

不觉得这样很繁琐吗?

我们来想象一个这样的场景,你是一所豪宅的主人,豪宅里配备了一个家政团队,有管家和负责不同工作的仆人。当你想要预定午餐吃什么,你不需要去找厨师,而是找管家说一声;你想让人去打扫客厅,你也不需要去找负责打扫卫生的仆人,而是找管家说一声。

所以,GPTs实际上是提供了一个庞大的专业执行团队,但是,却没有一个管家。

对于我们提出的一个需求或请求,实际上能分成两个重要环节——“做什么?”和“怎么做?”

因此,我们可以考虑一个这样的ai系统设计,它分为两个层面——调度层(管家)和执行层(专家角色),分别用于解决两个重要环节的问题。

image-20240710110800496

调度层

对于一个管家来说,他的职责其实可以概括为:理解、分解、分配。

  1. 理解

    根据与用户的交流内容(可能是一条指令或是一段对话的上下文),理解并总结出需要的事情。这一步是调度层的第一步,也是最关键的一步。

  2. 分解

    当用户的请求包含有多个需要做的事情时,应当把它们拆解成独立的小任务。例如,”帮我把卧室的地板打扫一下,顺便开下客厅的灯“,就应当拆分成”打扫卧室的地板“和”打开客厅的灯“这样的两个任务。

  3. 分配

    把一个任务分配给对应的执行层角色。这个操作可以依靠让大模型做选择题来实现。把执行层角色的能力作为一个带序号列表放入提示词中,让大模型根据任务描述输出对应角色的序号。后面就是传统程序化的工作了。

image-20240710111407508

对于理解这个环节,对大模型的考验比较大。例如,“把‘帮我订一张火车票’翻译成英文”与“帮我订一张火车票”就是完全不同的意图,对于前者,甚至管家自己就能回答。再比如,“今天天气好像不错啊,帮我把窗户打开吧”,这样的用户请求,管家应当要能正确理解和归纳出要做的事情是”打开窗户“,而不需要去查天气的情况。

对于上下文理解就更加考验大模型能力了。

重新回到现实情境,如果豪宅的主人只告诉管家”中午我想吃点好吃的“,那么管家理论上是只需要转达给厨师,但是,今天来的可能是个新厨师,不知道屋主人的用餐喜好,那他可能就会先提供一份菜单,反问屋主人想吃哪个,等屋主人决定后才会执行做菜的任务。在这个过程中就有一个需要考虑的问题,是厨师亲自去找屋主人问,然后自己理解,还是把问题返回给管家,让管家问清楚后,由管家自己理解并生成一个新的任务?

我的想法是,仍然由管家进行汇总与理解。因为理解意图,本身就是管家的职责。

所以我们可以设想一个这样的对话:

user: 我中午想吃点好吃的
assistant: 您具体想吃什么呢?今天午餐可选的菜品有炸鸡、红烧肉、西兰花炒瘦肉、酱香面。
user: 酱香面吧

那管家收到这样一段对话后,就应当理解出一个新任务,”主人要求今天的午餐为酱香面“,然后直接把该任务交给厨师即可。

执行层

对于一个执行角色来说,他的职责会更加明确:规划、执行、反馈。

  1. 规划

    规划这个步骤可以比较灵活。第一种方式是参考现在的一些ai-agent框架,直接让大模型生成一个行动规划,按照顺序步骤执行;第二种方式就是偏程序化的方式固定一系列行动规划,比如,对于IOT控制,通常就是根据用户请求查询可控制设备的列表,然后生成参数或者直接生成函数,运行代码,控制设备,这样具有固定流程的步骤。

  2. 执行

    执行通常就是运行代码,或者让大模型生成内容(文字、图片、视频、音频等)。

  3. 反馈

    反馈这一步可以做得比较灵活,根据任务类型场景,反馈可以是针对生成代码的运行测试审核,或者是对文字内容的审核,又或者是对内容的二次修改,总之,是利用LLM进行自我反馈,从而校准输出结果与目标结果的匹配度。

image-20240710111653394

任务表

这里我提供另一种设计思路,将调度层的部分压力转移给执行层,这种设计理论上更简单点,但是会增加系统的开销和问题风险。

假设现在已经有了一个支持100种专家角色的ai服务系统,然后,我打算增加100种,那么,按照之前的思路,我不仅要在执行层新增100种角色,我还要在调度层的分配提示词中增加对应的100种角色的描述,一旦这些角色的职责有变动,我还要在分配提示词中相应更改,显然会比较繁琐。

于是,我们可以选择:将调度层的分配操作去掉,在执行层的每个角色都增加一个任务匹配检查,调度层不直接分发任务,而是把所有任务放到一个任务表中,执行层的角色自行扫描任务表,从中获取属于自身职责的任务。

image-20240710112039666

总结

当然,你可能从一开始就意识到,这样的设计就是最基本的分治思想。事实上,也已经有不少ai-agent开源框架采用了分治方法,把大任务拆解为多个小任务,以此来提升ai回答内容的质量,不过,我个人认为这优化的是“怎么做”这个环节,而针对“做什么”这个环节,我个人提出的方案就是引入调度层这样的设计来进行优化。或许再大胆一点,这可能也是一种专用于AI的“操作系统”的雏形。

后记:这篇文章实际上写于24年4月份,但由于一些原因一直到7月才打算发布,此时我已经看到不少大公司的AI系统支持这种ALL IN ONE的功能,因此,这篇文章的参考价值或许不算太高了。

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

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

相关文章

【C语言】符号优先级详解

C语言符号优先级详细解析 在C语言中,不同的运算符具有不同的优先级和结合性,这决定了在表达式中运算符的计算顺序。理解这些优先级和结合性是正确编写和理解C语言程序的基础。本文将详细解析C语言中的符号优先级,包括各类运算符的优先级、结…

Smail语句如何使用判断语句跳过验证卡密界面?谈谈思路

🏆本文收录于《CSDN问答解惑》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&…

数据融合工具(5)面中心线提取

这是一个重磅工具,建议先看视频。 提取中心线 一、需求背景 说真的,当小编第一次使用ArcGIS中的Polygon To Centerline工具提取面要素中心线时,激动得无以言表,毕竟,以前要提取面中心线,是一件非常麻烦的事…

uniapp图片压缩之后在上传

压缩图片js方法,新建imgPress.js /** * H5压缩 二分查找算法来找到一个合适的图像质量系数,使得压缩后的图片文件大小接近于目标大小* param {Object} imgSrc 图片url * param {Object} callback 回调设置返回值 * */ export function compressH5(fileI…

nginx热更新详解及实战操作

Nginx热更新,也被称为平滑升级或热部署,是指在不中断Nginx服务的情况下,对Nginx进行升级或更新其配置,以实现业务的无损和用户无感知的升级过程。以下是关于Nginx热更新的详细解释: 一、Nginx热更新的原理 Nginx热更…

Kubernetes APIServer 几种基本认证方式

"认证",形象地理解就是"你是谁"。在上文中,用户A在发起API请求时,管理员如何道该请求是用户A发起的呢?所以,客户端在发起API请求时,必须要携带一个身份信息来表明"我是谁"&a…

泰勒公式中拉格朗日余项和佩亚诺余项的区别及具体的应用场景案例

泰勒公式是微积分中的一个重要工具,用于将一个函数在某一点附近展开成多项式形式,以便于近似计算和分析。泰勒公式的一般形式为: f ( x ) f ( a ) f ′ ( a ) ( x − a ) f ′ ′ ( a ) 2 ! ( x − a ) 2 ⋯ f ( n ) ( a ) n ! ( x − a…

[CTF]-PWN:House of Cat堆题型综合解析

原理: 调用顺序: exit->_IO_wfile_jumps->_IO_wfile_seekoff->_IO_switch_to_wget_mode _IO_wfile_seekoff源码: off64_t _IO_wfile_seekoff (FILE *fp, off64_t offset, int dir, int mode) {off64_t result;off64_t delta, new…

AI绘画小白必备!Stable Diffusion常用插件合集,好用推荐!(附插件下载)

前言 宝子们,早上好啊~Stable Diffusion 常用插件,月月已经给大家整理好了,自取就好。 拥有这些SD常用插件,让您的图像生成和编辑过程更加强大、直观、多样化。以下插件集成了一系列增强功能,覆盖从自动补全提示词到…

开源项目:驱动创新与协作的时代引擎

《开源项目:驱动创新与协作的时代引擎》 在当今全球经济与科技环境瞬息万变的背景下,开源软件项目如同一颗璀璨的新星,在开发者社区的天空中熠熠生辉。其蓬勃发展的态势不仅成为了热门话题,更是引领着技术领域的变革潮流。 开源…

无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限。【解决办法】

问题描述 新建好一台windows虚拟机,两台设备网络是互通的,但是物理机在访问虚拟机的网络共享文件资源时,出现图下所示的报错:XXX无法访问。你可能没有权限使用网络资源。请与这台服务器的管理员联系以查明你是否有访问权限。用户…

echarts无法加载Map地图的问题

项目场景: echarts无法加载Map地图的问题 详情 查阅相关资料讲,echarts4.9以上版本已经移除了map,那么我们就得重新打包echarts文件了。打包echarts.min.js的链接:https://echarts.apache.org/zh/builder.html 在这个链接页面可…

考完软考之后,如何评职称?是否有有效期?

一、软考和职称之间的关系 软考和职称之间的关系可以这样理解:拿到软考证书并不意味着就能获得职称。软考证书是技术等级证书,而职称则是一种资格。如果单位聘用你做工程师,那么你的软考证书就可以发挥作用,相当于获得了职称证。…

单商户和多商户的区别

单商户商城通常由单个企业或品牌运营,专注于销售自家产品,而多商户商城则类似于一个平台,允许多个商家入驻并销售各自的商品。它们在经营模式、商家入驻和运营投入等方面有所不同。具体分析如下: 经营模式 单商户商城&#xff1…

MES:连接计划与执行的桥梁

想象一下,你的企业拥有一份完美的生产计划,但如何将这份计划准确无误地转化为实际生产中的每一步操作?这就是MES大展身手的地方。MES作为ERP(企业资源计划)与车间自动化控制之间的桥梁,确保生产计划能够顺畅…

hf-mirror (huggingface 的国内镜像)

官网: https://hf-mirror.com/ 网站域名 hf-mirror.com,用于镜像 huggingface.co 域名。作为一个公益项目,致力于帮助国内AI开发者快速、稳定的下载模型、数据集。 如何使用HF-Mirror 方法一:网页下载 在https://hf-mirror.com/…

边框插画:成都亚恒丰创教育科技有限公司

边框插画:艺术与生活的精致边界 在视觉艺术的广阔天地里,边框插画以其独特的魅力和细腻的表达方式,成为连接艺术与生活的一道精致边界。成都亚恒丰创教育科技有限公司它不仅仅是图像的外框装饰,更是情感、故事与创意的延伸&#…

看到指针就头疼?这篇文章让你对指针有更全面的了解!

文章目录 1.什么是指针2.指针和指针类型2.1 指针-整数2.2 指针的解引用 3.野指针3.1为什么会有野指针3.2 如何规避野指针 4.指针运算4.1 指针-整数4.2 指针减指针4.3 指针的关系运算 5.指针与数组6.二级指针7.指针数组 1.什么是指针 指针的两个要点 1.指针是内存中的一个最小单…

【Python】ModuleNotFoundError: No module named ‘distutils.util‘ bug fix

【Python】ModuleNotFoundError: No module named distutils.util bug fix 1. error like this2. how to fix why this error occured , because i remove the origin version python of ubuntu of 20.04. then the system trapped in tty1 , you must make sure the laptop li…

MVC 返回集合方法,以及分页

返回一个数据集方法 返回多个数据集方法 》》定义一个Model public class IndexMoel {public List<UserGroup> UserGroup{get;set;}public List<User> User{get;set;}}》》》控制器 //db 是 EF 中的上下文 var listnew IndexModel(); list.UserGroupdb.UserGro…