LLMs的自动化工具系统(HuggingGPT、AutoGPT、WebGPT、WebCPM)

news2024/11/18 8:38:40

在前面两篇博文中已经粗略介绍了增强语言模型和Tool Learning,本篇文章看四篇代表性的自动化框架,HuggingGPT、AutoGPT、WebGPT、WebCPM。

  • Augmented Language Models(增强语言模型)
  • Toolformer and Tool Learning(LLMs如何使用工具)

HuggingGPT
HuggingGPT是tool learning中tool-augmented learning的一类,具体来说,它是一个以LLMs为控制器来管理来自Huggingface社区中诸多小模型的框架,其中用户的自然语言请求将视为一个通用接口,再经过LLMs的解析和规划后,再根据Huggingface小模型工具的描述进行模型选择,执行完每个小模块的任务后,再对结果进行处理和返回给用户。
在这里插入图片描述
如上图所示,其执行步骤分为4步:

  • Task Planning。任务规划,其利用ChatGPT分析用户的请求,并将用户请求分解为一系列可解决的子任务。不过复杂的请求往往涉及多个任务,还需要确定这些任务的依赖关系和执行顺序,因此HuggingGPT 在其提示设计中采用了基于规范的指令和基于演示的解析,如下图所示,对于输入的"Look at /exp1.jpg, Can you tell me how many objects in the picture?",模型最终得到两个子任务。
[{"task": "image-to-text",
  "id": 0, "dep": [-1], 
  "args": {"image": "/exp1.jpg"}}, 
  
{"task": "object-detection",
 "id": 0, "dep": [-1], 
 "args": {"image": "/exp1.jpg" }}]

在这里插入图片描述

  • Model selection。模型选择,根据分解后的子任务和对模型描述的理解(描述包括模型功能、体系架构、支持的语言和域、许可等信息),由ChatGPT选择托管在Hugging Face上的各类专家小模型。如下图所示,模型的选择会首先根据任务召回一些可以做当前子任务的模型,然后下载量选择前K名的模型作为候选,然后将其作为prompt上下文输入给ChatGPT进行选择。

在这里插入图片描述

  • Task execution。任务执行,调用并执行每个专家小模型,并将结果返回给ChatGPT。
  • Response generation。响应生成,HuggingGPT先将前三个阶段(任务规划、模型选择和任务执行)的所有信息整合成一个简洁的摘要,包括计划任务列表、模型选择和推理结果。然后使用ChatGPT整合所有小模型的预测结果并返回给用户。如下图所示。

在这里插入图片描述

由于HuggingGPT可以调用在社区中的所有模型“工具”,因此它也可以执行多模态任务。不过HuggingGPT的主要缺点有:

  • 效率问题。HuggingGPT的每一阶段都需要与LLMs交互,导致效率低下。
  • 上下文长度。LLMs最大tokens数量有限。
  • 系统稳定性。一是LLMs的预测和输出错误;二是小专家模型的不可控和错误。

paper:HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in HuggingFace
arxiv:https://arxiv.org/abs/2303.17580
code:https://huggingface.co/spaces/microsoft/HuggingGPT
code(半平替代码,chatGLM+百度小模型):https://github.com/SolarWindRider/All-In-One


AutoGPT
作为github在短短时间内就破20w星的开源项目,AutoGPT实在太火了。AutoGPT也是一个拆解任务并执行的模型,和HuggingGPT很像,但更加强大。其不需要强制性人类输入(无人值守),能更加自动地为自己分配目标,利用互联网和其他工具在自动循环中完成任务,甚至还可以利用数据库/文件管理短期和长期记忆、使用搜索引擎和浏览网页、语音输出等,它更加通用更加智能。

AutoGPT主要有以下特点:

  • 基于GPT-4。使用 OpenAI 的 GPT-4 作为系统的核心,负责完成任务,根据完成的结果生成新任务,并实时确定任务的优先级。
  • 基于Pinecone。Pinecone是一个矢量搜索平台,为高维矢量数据提供高效的搜索和存储能力。在AutoGPT的系统中, Pinecone 被用来存储和检索与任务相关的数据,例如任务描述、约束和结果。
  • 基于 LangChain。 LangChain 框架允许AI 代理具有数据感知能力并与其环境交互,从而产生更强大和差异化的系统。
  • 任务管理。系统将维护一个任务列表,其由双端队列表示,用于管理任务和确定任务的优先级。系统根据完成的结果自动创建新任务,并相应地重新排列任务列表的优先级。

在这里插入图片描述

具体来说,来自GPT4绘画的执行原理图如上,AutoGPT共包括以下几步:

  • provide objective & task。提出问题,设定一个目标。
  • complete task。拆解主任务,并维护一个优先级task queue。
  • send task result。执行task queue中最优先的任务,然后得到结果。如果有必要,这个结果会被存在Pinecone中。
  • add new tasks。当一个任务执行完成后,根据完成任务的结果会生成新的子任务,并确保这些新任务不与现有任务重叠。同时,系统会根据生成的新任务及其优先级重新确定任务列表的优先级,并使用 GPT-4 协助确定优先级。

AutoGPT可以执行的一些操作如下所示,搜索引擎、网页浏览都支持:

Google Search: "google", args: "input": "<search>"
Browse Website: "browse_website", args: "url": "<url>", "question": "<what_you_want_to_find_on_website>"
Start GPT Agent: "start_agent",  args: "name": "<name>", "task": "<short_task_desc>", "prompt": "<prompt>"
Message GPT Agent: "message_agent", args: "key": "<key>", "message": "<message>"
List GPT Agents: "list_agents", args: ""
Delete GPT Agent: "delete_agent", args: "key": "<key>"
Write to file: "write_to_file", args: "file": "<file>", "text": "<text>"
Read file: "read_file", args: "file": "<file>"
Append to file: "append_to_file", args: "file": "<file>", "text": "<text>"
Delete file: "delete_file", args: "file": "<file>"
Search Files: "search_files", args: "directory": "<directory>"
Evaluate Code: "evaluate_code", args: "code": "<full_code_string>"
Get Improved Code: "improve_code", args: "suggestions": "<list_of_suggestions>", "code": "<full_code_string>"
Write Tests: "write_tests", args: "code": "<full_code_string>", "focus": "<list_of_focus_areas>"
Execute Python File: "execute_python_file", args: "file": "<file>"
Task Complete (Shutdown): "task_complete", args: "reason": "<reason>"
Generate Image: "generate_image", args: "prompt": "<prompt>"
Do Nothing: "do_nothing", args: ""

prompt setting如下所示,包括执行任务的规范(constraints)、可用的资源(resources)、和效果评估与反思(performance_evaluations)。

constraints: [
  '~4000 word limit for short term memory. Your short term memory is short, so immediately save important information to files.',
  'If you are unsure how you previously did something or want to recall past events, thinking about similar events will help you remember.',
  'No user assistance',
  'Exclusively use the commands listed below e.g. command_name'
]
resources: [
  'Internet access for searches and information gathering.', #互联网搜索
  'Long Term memory management.', #长期记忆管理
  'GPT-3.5 powered Agents for delegation of simple tasks.', #GPT-3.5
  'File output.' #文件输出
]
performance_evaluations: [
  'Continuously review and analyze your actions to ensure you are performing to the best of your abilities.', # 分析自己的行为,确认尽到最大努力
  'Constructively self-criticize your big-picture behavior constantly.', # 从大局自我反思
  'Reflect on past decisions and strategies to refine your approach.', # 反思过去的决定和策略,优化方法
  'Every command has a cost, so be smart and efficient. Aim to complete tasks in the least number of steps.', # 每个命令都有成本,所以要聪明而高效,要以最少的步骤完成任务
  'Write all code to a file.' #将所有代码写入文件
]

github:https://github.com/Significant-Gravitas/Auto-GPT


WebGPT
OpenAI出品,基于GPT-3来模仿人类浏览网页的行为(点击、滑动滚轮等),通过搜索信息得到答案.解决的场景是长文本开放问答(Long-form Question Answering, LFQA),这个任务相比于传统机器阅读理解或文本问答,它在给出答案时,不只根据单篇段落或者文档,而是需要在某个文档集合甚至整个web中快速且准确地寻找答案(检索),并需要有信息整合能力以生成长段落(整合)。

但目前LFQA 最大的问题在于它只能从原始问题出发,并不是一个交互式的体系,对比人类是可以通过实时搜索来筛选出高质量信息的。特别是对于复杂问题,还会拆分子任务依次搜索等等,因此一个可以交互搜索的模型至关重要。因此WebGPT旨在通过模仿人类浏览网页的行为进行信息搜索和整理,以完成复杂的问题。训练环境基于微软的Bing搜索,数据基于ELI5(Explain Like I’m Five),界面如下所示,
在这里插入图片描述

模型模仿人类的行为主要有如下图所示的:启动Bing API、点击链接进行跳转、滑动滚轮、做标记等等,通过这种方式,模型从网页中收集段落,然后使用这些段落来撰写答案。

在这里插入图片描述
训练方法跟OpenAI一系列作品的InstructGPT、ChatGPT类型,使用人类反馈+RLHF进行学习。具体来说,WebGPT基于GPT-3主要有760M、13B和175B三种版本的模型,训练方式跟InstructGPT、ChatGPT的思路是一致的,名字稍有不同。

  • Behavior cloning (BC) ,行为克隆。使用监督学习进行微调,其中人类指令将作为标签。
  • Reward modeling (RM) ,奖励建模。基于BC模型训练一个奖励模型,表示某个行为优于另一个行为的概率。
  • Reinforcement learning (RL) ,强化学习。仍然使用PPO算法对BC模型进行微调。
  • Rejection sampling (best-of-n),拒绝采样。RM优化的替代方法,该步骤会直接从BC模型或RL模型中抽样固定数量的答案(4、16或64),然后由RM选出打分最高的结果。

paper:https://cdn.openai.com/WebGPT.pdf


WebCPM
WebCPM是清华基于BMTools的模型,与上一篇博文的Tool Learning作者是同一批人,也是首个基于交互式网页搜索的中文问答开源框架,虽然思路上和WebGPT很像,但它开源了[旺柴]。

解决的场景跟WebGPT一样,是长文本开放问答(Long-form Question Answering, LFQA),目前解决 LFQA 的方法一般采用检索 - 综合方式,主要包括信息检索(从搜索引擎中收集相关信息)和信息综合(将收集到的信息进行整合以生成答案)两个核心环节。但它们是非交互式的方法,无法像人类一样通过多轮收集、筛选来搜索更多样的信息。加上WebGPT的相关细节并未完全公开,因此完全开源的WebCPM仍然是很有价值的。

其界面如下所示,动作和WebGPT类似,包括搜索必应、返回、浏览页面,滑动页面,标注等等。
在这里插入图片描述
模型框架如下图,仍然包括搜索(Question and Facts)和整合模块(Answer),其中包括四个小模块。

  • Action Prediction Module(灰色)。搜索行为预测,即决定要执行具体的什么行为动作,执行10个动作的多分类即可。
  • Query Generation Module(蓝色)。查询语句生成,生成用于bing搜索的 Q ( t + 1 ) Q_(t+1) Q(t+1)
  • Fact Extraction Module(紫色)。支持事实摘要,通过浏览网页Quote出相关的信息。
  • Synthesis Model(绿色)。根据收集到的信息生成连贯的答案。

在这里插入图片描述

以论文中的例子可以详细理解这一过程。

在这里插入图片描述

paper:https://arxiv.org/abs/2305.06849
code:https://github.com/thunlp/WebCPM

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

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

相关文章

chatgpt赋能python:了解PythonSpace:Python编程中的重要概念

了解Python Space&#xff1a;Python编程中的重要概念 Python Space是Python编程的一个关键概念&#xff0c;可以帮助你更好地理解Python中的命名空间和作用域。在这篇文章中&#xff0c;我们将深入探讨Python Space&#xff0c;介绍命名空间的概念&#xff0c;讨论命名空间和…

支付系统设计四:支付核心设计03-快捷发送短信(失败转代扣)

文章目录 前言一、背景1. 应用架构2. 分层支撑机制 二、银行卡快捷支付1. 用户操作流程2. 系统执行流程--正常2.1 发送短信2.2 短信确认 3. 系统执行流程--异常3.1 异常环节3.1.1 路由失败3.1.2 调用支付渠道失败 3.2 异常处理3.2.1 路由失败3.2.2 调用支付渠道失败 4. 流程解析…

指导实验心得5篇实用技巧

指导实验心得1 我觉得化工原理实验是一门验证性课程&#xff0c;它把我们在化工原理学到的各种单元操作化为实实在在的东西&#xff0c;而让我们把学到的知识认识到它的实在性。流体输送——离心泵、过滤——板框压滤机、对流传热——套管式换热器、吸收蒸馏——填料塔板式塔、…

AF594 NHS,Alexa Fluor594 NHS Ester,AF 594 NHS 活化酯,用于成像和流式细胞术中的稳定信号生成

【产品描述】 陕西新研博美生物科技有限公司供应的​Alexa Fluor594是一种鲜红色染料。Alexa Fluor用于成像和流式细胞术中的稳定信号生成 594染料是水溶性的&#xff0c;并且从pH 4到pH 10对pH不敏感。Alexa Fluor 594染料与多种抗体、肽、蛋白质、示踪剂和扩增底物偶联&#…

java内存问题

各种OOM的情况 1. 堆溢出-java.lang.OutOfMemoryError: Java heap space。 2. 栈溢出-java.lang.OutOfMemorryError。 3. 栈溢出-java.lang.StackOverFlowError。 4. 元信息溢出-java.lang.OutOfMemoryError: Metaspace。 5. 直接内存溢出-java.lang.OutOfMemoryError: Direct …

软件开发工程师个人简历模板3篇

软件开发工程师个人简历模板篇1 姓 名&#xff1a; 张先生 性 别&#xff1a; 男 婚姻状况&#xff1a; 未婚 民 族&#xff1a; 汉族 户 籍&#xff1a; 广东-珠海 年 龄&#xff1a; 28 现所在地&#xff1a; 广东-珠海 身 高&#xff1a; 168cm 希望地区&#xff1a; …

Toolformer and Tool Learning(LLMs如何使用工具)

大模型的能力让学术和工业界都对通用人工智能的未来充满幻想&#xff0c;在前一篇博文中已经粗略介绍&#xff0c; Augmented Language Models&#xff08;增强语言模型&#xff09; ALM的两大思路是推理和工具&#xff0c;本篇博文整理两篇关于Toolformer或Tool Learning的论…

web实现日历、阳历农历之间相互转换、npm、push、unshift、includes、innerHTML

文章目录 1、原生web实现效果图htmlJavaScriptstyle vue2实现htmlJavaScript 1、原生web实现 效果图 html <div class"box"><div class"week"><div>星期日</div><div>星期一</div><div>星期二</div><…

Three.js--》建模软件如何加载外部3D模型?

目录 三维建模软件的介绍 Blender官方文档介绍 Blender软件安装 GLTF格式简介 gltf不同文件形式 看过我之前讲解的three文章的人都知道&#xff0c;我在创建模型的时候都没有使用three.js自带的一些简单模型&#xff0c;而是引入外部的模型并加载到页面上&#xff0c;简言…

数据库基础——1.数据库概述

从这篇文章我们开始学习数据库的相关知识 目录 1.为什么要使用数据库 2.数据库与数据库管理系统 2.1相关概念 2.2数据库与数据库管理系统的关系 ​编辑2.3常见的数据库管理系统 2.4常见的数据库介绍 3.MySQL介绍 3.1概述 3.2关于MySQL8.0 3.3 Oracle vs MySQL 4.RD…

Java 反序列化漏洞

反序列化漏洞是指程序在反序列化期间&#xff0c;通过特殊的调用链引发的一系列安全问题。编程语言中只要存在序列化&#xff0c;反序列化功能就可能存在反序列化的安全问题。这里只针对Java和PHP进行讨论。 序列化漏洞概述 序列化的存在主要是为了存储和传输&#xff0c;将这…

Redis入门篇-初

结束时长 Redis十大数据类型 基本目录 实际的类型是没有被红框框选的10个类型 Strings 1 Lists 2 Sets 3 Hashes 4 Sorted sets 5 Streams 6 Geospatial 7 HyperLogLog 8 Bitmaps 9 Bitfields 10类型展示 Strings --> HelloRedis Lists [A>B>C>C] Sets {A<…

第七章 文件读写

内容框图 7.1 文件读写介绍 文件打开和关闭 用word编写一份简历&#xff0c;应该有哪些流程&#xff1f; 打开word软件&#xff0c;新建一个word文件写入个人简历信息保存文件关闭word软件 同样&#xff0c;编程中操作文件的整体过程类似。 打开文件&#xff0c;或者新建立一个…

chatgpt赋能python:Python中的%z格式化代码

Python中的%z格式化代码 在Python编程中&#xff0c;%z是一个非常有用的格式化代码。它用于表示时区偏移量&#xff0c;并将其与日期时间字符串一起显示。在本文中&#xff0c;我们将深入了解Python中的%z代码&#xff0c;并探讨它如何帮助您处理日期和时间。 什么是%z&#…

chatgpt赋能python:PythonTCP断开连接原因和解决方案

Python TCP 断开连接原因和解决方案 Python 是一种广泛使用的编程语言&#xff0c;它支持网络编程、数据处理、人工智能、机器学习等诸多领域。在网络编程中&#xff0c;Python 通常使用 TCP 连接传输数据。然而&#xff0c;在使用 TCP 连接传输数据的过程中&#xff0c;我们可…

koa2获取HTTP请求参数

HTTP 什么是HTTP HTTP&#xff0c;即超文本传输协议&#xff0c;是一种实现客户端和服务器之间通信的响应协议&#xff0c;它是用作客户端和服务器之间的请求。 客户端&#xff08;浏览器&#xff09;会向服务器提交HTTP请求&#xff1b;然后服务器向客户端返回响应&#xf…

2023 Q1 ZK报告

1. ZK数据 2023年4月4日&#xff0c;ZK社区举办了zkSummit 9。 ZK技术应用场景主要分布情况为&#xff1a; 其中&#xff1a; 1&#xff09;ZK用于隐私场景案例最多&#xff0c;占比12.9%&#xff0c;说明人们对 将ZK技术用于隐私保护 兴趣浓厚。2&#xff09;ZK用于扩容场景…

超长溢出头部省略打点,坑这么大,技巧这么多?

目录 需求 利用 direction 实现头部超长溢出打点 简单介绍一下 direction&#xff1a; 另外两个与排版相关的属性还有&#xff1a; direction: rtl 会导致使用下划线 _ 连接的数字内容排版错误 多方案解决 方案一&#xff1a;两次 direction 反转 当然&#xff0c;这里…

【高级语言程序设计(一)】第 8 章:结构体类型和自定义类型

目录 前言 一、结构体类型定义 &#xff08;1&#xff09;结构体类型定义的一般形式 &#xff08;2&#xff09;结构体类型定义的说明 二、结构体类型变量 &#xff08;1&#xff09;结构体类型变量的定义和初始化 ① 先定义结构体类型、后定义结构体类型的变量&#xf…

今天用AI创作助手写的文章--Docker提问系列介绍 Docker 的基本概念和优势

目录 介绍 Docker 的基本概念和优势&#xff0c;以及在应用程序开发中的实际应用。基本概念&#xff1a;优势&#xff1a; 哪些应用可以部署到docker里面Docker在服务器里面的安装步骤Docker里面的报错如何很仔细的排查解决&#xff1f;总结一下docker 未来发展趋势 介绍 Docke…