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

news2024/9/28 15:30:41

前言

如果你用过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.coloradmin.cn/o/1914080.html

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

相关文章

JS代码动态打印404页面源码

JS代码动态打印404页面源码,适合做网站错误页,具有js动态打印效果,喜欢的朋友可以拿去 源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务…

跌200万后女子要卖掉能看西湖的房子周边有完善配套

今年楼市行情不太好,很多业主都是想要将手中多余的房子出售,因为不想亏 钱了。比如这个业主陈艳也是一样的,日前其决定要将国都公寓的房子出售,然而 根据陈艳描述,这套房子最大的亮点,就是在家就可以欣赏到西湖一隅的美景。 陈艳解释,十多年前买入时,为了居住更舒适,便将…

【Linux】进程7——查看进程

1.为什么进程管理这么重要呢? 这是因为: 首先,我们在操作系统时的各项任务其实都是经过某个PID来完成的(包括你的bash环境),因此,能不能执行某项任务,就与该进程的权限有关了。再来…

LLM大模型应用中的安全对齐的简单理解

LLM大模型应用中的安全对齐的简单理解 随着人工智能技术的不断发展,大规模语言模型(如GPT-4)的应用越来越广泛。为了保证这些大模型在实际应用中的性能和安全性,安全对齐(Safe Alignment)成为一个重要的概…

PostgreSQL 中如何实现数据的增量更新和全量更新的平衡?

文章目录 一、增量更新与全量更新的概念增量更新全量更新 二、考虑的因素1. 数据量2. 数据更改的频率和规模3. 数据一致性要求4. 系统性能和资源利用5. 业务逻辑和流程 三、解决方案(一)混合使用增量更新和全量更新(二)使用临时表…

基于 Springboot 红酒庄内部信息管理系统 设计实现

目录 📚 前言 📑摘要 📑系统流程 📚 系统架构设计 📚 数据库设计 6.1数据三范式: 📚 系统功能的具体实现 💬 系统登录和首页 系统登录 首页 💬 用户功能模块 添…

Backend - C# 操作PostgreSQL DB

目录 一、安装 Npgsql 插件 (一)作用 (二)操作 (三)注意 二、操作类 (一)操作类 1.NpgsqlConnection类 (1)作用 (2)引入 &a…

3Ds MAX 2025:创意的翅膀

初识3Ds MAX 2025 在我初次接触3Ds MAX 2025时,仿佛打开了一扇通往无限可能的大门。那时,我还是一个对三维建模充满好奇的初学者,心中怀揣着对未来的憧憬和对艺术的热爱。3Ds MAX 2025的出现,如同一位温柔的导师,带领…

全面解析BPMN、CMMN、DMN与XML

欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 全面解析BPMN、CMMN、DMN与XML 前言BPMN(业务流程模型与标记法)定义与用途…

【昇思25天学习打卡营打卡指南-第二十二天】GAN图像生成

GAN图像生成 模型简介 生成式对抗网络(Generative Adversarial Networks,GAN)是一种生成式机器学习模型,是近年来复杂分布上无监督学习最具前景的方法之一。 最初,GAN由Ian J. Goodfellow于2014年发明,并在论文Generative Adve…

国产口碑最好的骨传导耳机有哪些?优选五大高口碑机型推荐!

作为一名有着多年工作经验的数码测评师,可以说对骨传导耳机或者蓝牙耳机等数码产品有着深入的了解,近期,有很多粉丝,或者身边的朋友经常向我咨询关于骨传导耳机的问题。确实如此,优质的骨传导耳机能在保护听力、保持环…

AI知识库:以AI之力,引领企业知识管理新纪元

在当今这个信息爆炸的时代,企业面临着前所未有的知识管理挑战。随着数据量的激增,如何高效地整理、存储并快速检索海量信息,成为了每个企业亟需解决的核心问题。 在过去,企业的知识库常常被视为一种必要的负担。它们充满了冗长复…

侯捷C++面向对象高级编程(下)-2-non-explicit one argument constructor

1.构造函数 构造函数: Fraction(int num, int den 1) 初始化分子和分母,允许指定分子 num 和可选的分母 den。默认情况下,分母为 1。 加法运算符重载: Fraction operator(const Fraction& f) 重载了加法运算符 。这使得两个 Fraction 对象可以通过 …

【蓄势·致远】 同为科技(TOWE)2024年年中会议

2024年7月2日-8日,同为科技(TOWE)召开2024年年中工作会议。会议回顾上半年总体工作情况,分析研判发展形势,规划部署下半年工作。 为期一周的工作会议,由同为科技(TOWE)创始人、董事长…

vue 画二维码及长按保存

需求 想要做如下图的二维码带文字&#xff0c;且能够长按保存 前期准备 一个canvas安装qrcode&#xff08;命令&#xff1a;npm i qrcode&#xff09; 画二维码及文字 初始化画布 <template><div><canvas ref"canvas" width"300" he…

C# + halcon 联合编程示例

C# halcon 联合编程示例 实现功能 1.加载图像 2.画直线&#xff0c;画圆&#xff0c;画矩形, 画椭圆 ROI&#xff0c;可以调整大小和位置 3.实现找边&#xff0c;找圆功能 效果 开发环境 Visual Studio 2022 .NET Framework 4.8 halcondotnet.dll 查看帮助文档 项目结构 DL…

大模型“聚会”:国内卷价格,国外卷能力

[ GPT-4o和谷歌Gemini不断宣传现阶段AI能力大幅度提高&#xff0c;那么这两家&#xff0c;谁的大模型能力更强呢&#xff1f;这篇文章里&#xff0c;作者就展开了多维度的测试和体验&#xff0c;想了解的同学&#xff0c;可以来看一下。 在中美AI大模型的竞争上&#xff0c;正衍…

CDF累积分布函数和PPF百分点位分布函数

目录 cdf累积分布函数 (CDF) ppf百分位点函数 (PPF) 区别与联系示例关系和区别 cdf 累积分布函数 (CDF) 定义&#xff1a; 累积分布函数 F ( x ) F(x) F(x) 给出随机变量 X X X 小于或等于某个值 x x x 的概率。数学定义&#xff1a; F ( x ) P ( X ≤ x ) F(x) P(X \l…

[C++]——同步异步日志系统(3)

同步异步日志系统 一、日志系统框架设计1.1模块划分1.1.1 日志等级模块1.1.2 日志消息模块1.1.3 日志消息格式化模块1.1.4 日志落地模块&#xff08;日志落地的方向是工厂模式&#xff09;1.1.5 日志器模块&#xff08;日志器的生成是建造者模式&#xff09;1.1.6 异步线程模块…

Coze API接口实战应用

Coze API介绍 概述 Coze API作为Coze平台对外的桥梁&#xff0c;让开发者能够灵活地利用Coze的功能和服务&#xff0c;促进业务流程自动化和系统集成。它覆盖了从数据获取到智能交互的全方位功能&#xff0c;旨在提升工作效率和创造更多可能。 Coze API申请接入流程 1. 发现…