如何管理一百个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,一经查实,立即删除!

相关文章

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

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

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

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

[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 在这个链接页面可…

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

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

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.指针是内存中的一个最小单…

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…

微信小程序中wx.navigateBack()页面栈返回上一页时执行上一页的方法或修改上一页的data属性值

let pages getCurrentPages();let prevPage pages[pages.length - 2]; // 获取上一个页面实例对象console.log(prevPage) //打印信息// 在 wx.navigateBack 的 success 回调中执行需要的方法wx.navigateBack({delta: 1, // 返回上一页success: function() {//修改上一页的属性…

秒懂设计模式--学习笔记(8)【结构型-组合模式】

目录 7、组合模式7.1 组合模式&#xff08;Composite&#xff09;7.2 叉树结构7.3 文件系统7.4 目录树展示7.5 自相似性的涌现7.6 组合模式的各角色定义7.7 组合 7、组合模式 7.1 组合模式&#xff08;Composite&#xff09; 是针对由多个节点对象&#xff08;部分&#xff0…

关于string的‘\0‘与string,vector构造特点,反迭代器与迭代器类等的讨论

目录 问题一&#xff1a;关于string的\0问题讨论 问题二&#xff1a;C标准库中的string内存是分配在堆上面吗&#xff1f; 问题三&#xff1a;string与vector的capacity大小设计的特点 问题四&#xff1a;string的流提取问题 问题五&#xff1a;迭代器失效 问题六&#xf…

个人开发实现AI套壳网站快速搭建(Vue+elementUI+SpringBoot)

目录 一、效果展示 二、项目概述 三、手把手快速搭建实现本项目 3.1 前端实现 3.2 后端方向 五、后续开发计划 一、效果展示 默认展示 一般对话展示&#xff1a; 代码对话展示&#xff1a; 二、项目概述 本项目是一个基于Web的智能对话服务平台&#xff0c;通过后端与第…

【C语言】指针(4):深入理解指针

目录 ​编辑 一、回调函数 二、qsort使用举例 2.1 使用qsort排序整型数据 2.2 使用qsort排序结构体数据 三、qsort的模拟实现 四、NULL、\0、0、0、null、NUL的区别 五、C99中的变长数组 一、回调函数 函数指针是将函数的地址取出来&#xff0c;再通过函数地址去调用&a…

untiy 在菜单栏添加自定义按钮 点击按钮弹出一个Unity窗口,并在窗口里添加属性

using System.Collections.Generic; using UnityEditor; using UnityEngine; using UnityEngine.Rendering.PostProcessing;public class AutoGenerateWindow : EditorWindow //这是定义一个窗口 {public string subjecttName "科目名字";//科目的名字public GameOb…

url链接地址,#前的参数 和 #后的参数有什么区别

例如 http://localhost:8080/?beforeParams1#/workSchemelist/index?afterParams1 beforeParams 和 afterParams 区别 打印出来可以发现&#xff1a; beforeParams 是 url 的search参数&#xff0c;通过window.location.search获取 afterParams 是 route 的query参数&#…

外贸网站设计的要点

外贸网站设计是一种专门针对国际贸易领域的网站设计&#xff0c;需要考虑到不同国家和文化背景的用户&#xff0c;因此设计过程要更加细致和精准。以下是外贸网站设计的关键要点&#xff1a; 首先&#xff0c;多语言支持是不可或缺的&#xff0c;因为外贸网站的用户可能来自不同…