Learn Prompt-Prompt 高级技巧:HuggingGPT

2023-09-21 09:00:00

HuggingGPT是一个 Agent 框架,利用 ChatGPT 作为任务规划器,根据每个模型的描述来选择 HuggingFace 平台上可用的模型,最后根据模型的执行结果生成总结性的响应。这个项目目前已在 Github 上开源,并且有一个非常酷的名字叫做 JARVIS(钢铁侠的助手)。这项研究主要涉及到两个主体,一个是众所周知的 ChatGPT,另一个是 AI 社区中的 Hugging Face。

🎉开始阅读前,如果你对其他文章感兴趣,可以到欢迎页关注我们!「卡尔的AI沃茨」开源中文社区实时获得后续的更新和最新的教程🎉

hugging-gpt

这个系统包含四个阶段:

  1. 任务规划:使用LLM作为大脑,将用户的请求解析为多个任务。每个任务都有任务类型、ID、依赖关系和参数四个属性。系统会使用一些示例来指导LLM进行任务解析和规划。

具体指令如下:

[{"task": task, "id", task_id, "dep": dependency_task_ids, "args": {"text": text, "image": URL, "audio": URL, "video": URL}}]

  • "dep"字段表示前一个任务的ID,该任务生成了当前任务所依赖的新资源。
  • “-task_id”字段指的是具有任务ID为task_id的依赖任务中生成的文本图像、音频和视频。

用户和HuggingGPT之间的聊天日志被记录下来,并显示在显示资源历史记录的屏幕上。

  1. 模型选择:LLM将任务分配给专门的模型,这些请求被构建成了一道多项选择题。LLM为用户提供了一个模型列表供选择。由于上下文长度的限制,需要根据任务类型进行过滤。

具体指令如下:

根据用户请求和调用命令,Agent 帮助用户从模型列表中选择一个合适的模型来处理用户请求。Agent 仅输出最合适模型的模型ID。输出必须采用严格的JSON格式:{“id”: “模型ID”, “reason”: “您选择该模型的详细原因”}。

之后,HuggingGPT根据下载次数对模型进行排名,因为下载次数被认为是反映模型质量的可靠指标。选择的模型是根据这个排名中的“Top-K”模型来进行的。K在这里只是一个表示模型数量的常数,例如,如果设置为3,那么它将选择下载次数最多的3个模型。

  1. 任务执行:专家模型在特定任务上执行并记录结果。

具体指令如下:

根据输入和推理结果,Agent 需要描述过程和结果。前面的阶段可以形成下方的输入

用户输入:{{用户输入}},任务规划:{{任务}},模型选择:{{模型分配}},任务执行:{{预测结果}}。

为了提高此过程的效率,HuggingGPT 可以同时运行不同的模型,只要它们不需要相同的资源。例如,如果我提示生成猫和狗的图片,那么单独的模型可以并行运行来执行此任务。但是,有时模型可能需要相同的资源,这就是为什么HuggingGPT维护一个属性来跟踪资源的原因。它确保资源得到有效利用。

  1. 响应生成:LLM 接收执行结果,并向用户提供总结结果。

然而,要将HuggingGPT应用于实际场景中,我们需要应对一些挑战:

  • 提高效率:因为LLM的推理轮次和与其他模型的交互都会减缓处理速度
  • 依赖长上下文窗口:LLM需要使用长篇的上下文信息来传递复杂的任务内容
  • 提高稳定性:需要改进LLM的输出质量以及外部模型服务的稳定性。

现在,让我们假设您希望模型根据图像生成一个音频。HuggingGPT会以最适合的方式连续执行这个任务。您可以在下面的图中查看更详细的响应信息

hugginggpt_secret

Hugging Face是什么?

简单来说,Hugging Face是一个专注于人工智能的开源社区平台,用户可以在该平台上发布和共享预训练模型、数据集和展示文件等。目前在Hugging Face上已经共享了超过10万个预训练模型和1万多个数据集。包括微软、谷歌、彭博社、英特尔等众多行业的1万家机构都在使用Hugging Face的产品。

在HuggingGPT中,ChatGPT充当了”操作大脑”的角色,能够自动解析用户提出的需求,并在Hugging Face的AI模型库中进行自动模型选择、执行和报告,为我们开发更复杂的人工智能程序提供了极大的便利。

快速体验

体验HuggingGPT非常简单,只需要输入openai apikey和HuggingGPT token即可:

HuggingGPT

https://huggingface.co/spaces/microsoft/HuggingGPT

下一节我们学习 MetaGPT,用SOP的思路让Agent更上一步,欢迎关注「卡尔的AI沃茨」

Reference

更多推荐

【C++进阶】:哈希

哈希一.unordered_map二.底层结构1.哈希概念2.解决哈希冲突1.闭散列2.开散列在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log2Nlog_2Nlog2​N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数

你对Spring Security使用场景以及底层原理有了解吗?

SpringSecurity使用场景有哪些?SpringSecurity是一个基于Spring框架的安全性解决方案,提供了全面的身份验证、授权和安全功能。它可以应用于多种场景以确保应用程序的安全性和保护敏感资源。以下是一些常见的SpringSecurity的使用场景:用户登录和认证:SpringSecurity可以处理

在Java开发中无法绕开的框架:SpringBoot

SpringBoot简介SpringBoot是一个基于Spring框架的快速开发框架,它的出现极大地简化了Spring应用的开发流程。SpringBoot通过自动配置和约定大于配置的方式,让开发者可以快速搭建一个可运行的、独立的、生产级别的应用程序。SpringBoot的优点不仅仅在于它的快速开发,还在于它的可扩展性和

【校招VIP】前端操作系统之存储管理加密

考点介绍加密算法有很多,如不可逆的摘要算法MD5、SHA(安全哈希算法),可逆的Base64编码,对称加密算法DES、AES,还有非对称加密算法DH、RSA等。那是不是说明我们可以使用任何一种加密算法就能保证网站的安全性,答案是否。前端操作系统之存储管理加密-相关题目及解析内容可点击文章末尾链接查看!一、考点题目1.下

Linux开发和编程指南:搭建环境、Shell脚本与常见编程语言配置及使用

文章目录Linux开发和编程Linux上的程序开发环境搭建Shell编程和脚本编写常见编程语言在Linux上的开发环境配置和使用PythonJavaC/C++PHP总结python精品专栏推荐python基础知识(0基础入门)python爬虫知识Linux开发和编程在这篇文章中,我们将介绍如何搭建Linux上的程序开发

MySQL学习系列(5)-每天学习10个知识

目录1.锁(Locking)和乐观锁与悲观锁2.分布式系统中保证数据一致性3.MySQL的复制延迟问题及解决方法4.索引比全表扫描更快的情况5.分区剪枝(PartitionPruning)6.使用`LIMIT`和`OFFSET`的技巧7.使用`EXPLAIN`语句分析查询性能8.MySQL事务隔离级别9.死锁(Dead

char s[]和char *s的区别,数组和指针的,堆和栈指针的一些思考

最近在学习的时候看到一个概念,数组不等价于指针,很合理但又很难理解。例如chars[]和char*s有什么区别,前者是数组,后者是指针,个人学习成果如下:1.chars[]和char*s的区别chars[]:①数组,chars[]定义了一个字符数组②内存分配:内存在栈上分配。③大小固定:一旦定义,数组的大小就不能改变。

WMS系统库存分类以优化仓储管理

1.定义库存分类是指根据一定的规则和标准,将仓库中的货物按照特定的属性、特征或需求进行分类和分组的过程。通过库存分类,可以实现对仓库中货物的有序摆放、快速检索、有效管理和合理分配。2.目的库存分类在WMS系统中的应用具有以下目的:-优化空间利用:通过合理分类,将相似属性的货物放置在一起,最大限度地利用仓库空间,提高仓储

群狼调研(长沙顾客满意度调查)开展食品安全群众满意度调查

本文由群狼调研(长沙电信运营商满意度调查)出品,欢迎转载,请注明出处。食品安全群众满意度调查的内容应该涵盖广泛的食品安全领域,从食品产地到生产过程,再到食品标签、监管政策等多个方面。以下是可能包括在食品安全群众满意度调查中的内容:1.食品产地和生产过程:了解公众对食品产地、生产工艺、生产环境等方面的信任程度和满意度。2

征战MINI学习路线

征战MINI学习路线征战MINI与ACX720开发板的具体差异1.时钟电路管脚约束一样,仅仅是位号名称不同,ACX720的晶振位号是U2,征战MINI的位号是X1,如下图所示:2.拨码开关电路管脚约束一样,仅仅是位号名称不同,如下图所示:3.EEPROM电路管脚约束一样,仅仅是位号名称不同,如下图所示:4.LED灯电路

Linux常用命令 - 网络管理与通信命令

网络管理命令ifconfig功能:配置和显示Linux的网络接口和参数。最前面是网卡名。flags里面分别是:UP:表示接口已经启用BROADCAST:表示主机支持广播RUNNING:表示接口在工作中MULTICAST:表示主机支持多播mtu:最大传输单元,1500字节。inet:网卡的IP地址netmask:网络掩码

热文推荐