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

在前面两篇博文中已经粗略介绍了增强语言模型和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.rhkb.cn/news/30426.html

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

相关文章

代码恐怖故事:隐藏在复杂代码库中的恐怖秘密

本文讲述了开发者们在复杂代码库中工作的经历和教训&#xff0c;包括代码复杂性带来的问题、架构决策、第三方库引发的意外问题以及令人恐慌的编程错误&#xff0c;以及如何处理这些挑战。 原文链接&#xff1a;https://digma.ai/blog/coding-horrors-tales-of-codebase-comple…

【ChatGPT助我开发】利用ChatGPT编写基于Matlab的SVM的蔬菜分类项目

序言 从去年12月份开始用ChatGPT&#xff0c;一直被惊艳到&#xff0c;然后问一些奇怪的问题&#xff0c;到现在助力开发&#xff0c;我发现合适的提示词&#xff08;Prompt&#xff09;会很大程度影响到生成的质量&#xff0c;我在开发的过程中也会逐渐完善修改&#xff0c;最…

matlab绘图常用函数及代码

1、绘图&#xff1a;plot /semilogy /loglog /scatter figure(1); subplot(1,2,1);%子图 axis([0 10 10^-5 10^-1]);%限制作图范围&#xff0c;x轴0~10&#xff0c;y轴10^-5到10^-1 plot(X,Y,Color,[R G B],LineStyle,-,Marker,o,LineWidth,1); hold on; grid on;%显示网格 &…

HR怀疑程序员简历造假,随后的做法引起网友热议:过分了

简历可以说是求职过程中最重要的一份材料&#xff0c;因此不少人对简历都精心准备&#xff0c;以便全面地展示自己。对企业来说&#xff0c;简历最重要的一点便是真实。可以说所有公司对简历造假都是保持零容忍的态度。最近&#xff0c;一位HR网友在职场社区分享了他怀疑程序员…

程序员简历优化之道

作者&#xff1a;安晓辉 声明&#xff1a;原创文章&#xff0c;禁止各种形式的转载。 为什么你投十份简历&#xff0c;只有一两家公司约你&#xff1f;又或者为什么你每投一份简历都能获得面试机会&#xff1f; 最根本的原因&#xff0c;就是一方在汲汲渴求&#xff0c;而恰恰…

别再胡乱写简历了,一份适合普通大众的简历模版,送给大家

今天我们就来聊一聊在校招时&#xff0c;简历该如何写的问题。说实话&#xff0c;对于简历的书写方式&#xff0c;可能不同的人会有不同的见解&#xff0c;并且不同的面试官/HR在筛选的时候也会有所差异&#xff0c;所以在我看来&#xff0c;不存在一种绝对稳的简历模版。 我在…

聊求职:写简历的大原则与小技巧

简历&#xff0c;是求职者向未来雇主展示专业技能和职业素养的自我推销工具&#xff0c;是赢得面试机会的敲门砖。如果没有面试邀约&#xff0c;大多只有两种可能&#xff1a;要么是简历写的太屎了&#xff0c;要么是简历投的太屎了。所以&#xff0c;当没有面试机会的时候&…

用 Markdown 写炫酷简历,助力跳槽换工作

大家好我是徐小夕。 今天给大家来介绍一个简历制作神器&#xff0c;是我的朋友秋风开发的。这个项目是一款免费在线简历制作工具&#xff0c;通过将书写的Markdown 和选择的主题快速转化不同风格的简历, 同时还可以一键复用其他人做的优秀的简历, 助力求职者快速制作精美的简历…

分享162个助理类简历模板,总有一款适合您

分享1626个助理类简历模板&#xff0c;总有一款适合您 162个助理类简历模板下载链接&#xff1a;https://pan.baidu.com/s/1Uy3eXPz9D-wK-l7z3KDIWQ?pwdl139 提取码&#xff1a;l139 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 class ChinaZJsSelenium:ba…

掌握这些写简历投简历的“黑魔法”,告别简历已读不回!

“哎&#xff0c;我还能找到工作吗&#xff1f;” 这是最近加我微信的好友&#xff0c;问的最多的一句话。 太卷了 最近加我微信的朋友很多&#xff0c;我都很奇怪&#xff0c;最近也没怎么发文章&#xff0c;怎么会有这么多人加我。 大概就是因为太卷了&#xff0c;之前写的…

简历优化实战案例01:工作经历篇

大家好&#xff0c;我是小谭。 最近&#xff0c;我在帮一位求职者修改简历时&#xff0c;发现一些求职者常犯的简历错误。在征得求职者同意后&#xff0c;我粘出来&#xff0c;同大家分享和交流&#xff0c;期望通过此分享&#xff0c;让大家了解写简历的常见坑和注意点。 本…

分享111个助理类简历模板,总有一款适合您

分享111个助理类简历模板&#xff0c;总有一款适合您 111个助理类简历模板下载链接&#xff1a;https://pan.baidu.com/s/1JafYuLPQMmq37K4V0wiqWA?pwd8y54 提取码&#xff1a;8y54 Python采集代码下载链接&#xff1a;https://wwgn.lanzoul.com/iKGwb0kye3wj 设计师助理…

找工作的程序员应该这样优化简历【内附120套优质简历模板】

《花千骨》一剧&#xff0c;白子画为什么收花千骨为徒&#xff1f; 《琅琊榜》中&#xff0c;梅长苏为什么选靖王而弃太子、誉王&#xff1f; 《泰坦尼克号》里&#xff0c;杰克和露丝为什么会一见钟情&#xff1f; 王子基特为什么会选择灰姑娘辛德瑞拉&#xff1f; 这些问题乍…

易语言易语言浏览器html5,易语言创建的浏览器源码

易语言创建的浏览器源码系统结构:事件_编辑框1_获得焦点,事件_选择夹1_鼠标右键按下,子程序_删除页面,事件_窗口1_尺寸被改变,事件_选择夹1_子夹被改变,子程序_添加页面,事件_浏览器_即将跳转,事件_浏览器_即将打开新窗口3,事件_浏览器_标题被改变,事件_编辑框1_按下某键,SkinH…

易语言 普通填表 html5,易语言网页填表源码

易语言网页填表源码系统结构:passport_tianya,passport_xinlang,passport_baidu,Automatic_modification,Insert_text,Loadconfiguration, 窗口程序集1 || ||------_按钮8_被单击 || ||------_按钮11_被单击 || ||------passport_tianya || ||------passport_xinlang || ||----…

易语言启动局域网计算机程序,易语言局域网计算机监控源码

易语言局域网计算机监控源码系统结构:取计算机列表,弹出提示窗,上下线, 窗口程序集1 || ||------__启动窗口_创建完毕 || ||------取计算机列表 || ||------_选择框1_被单击 || ||------_时钟1_周期事件 || ||------_按钮1_被单击 || ||------_按钮2_被单击 || ||------__启动窗…

易语言在线播放器源码php,易语言视频播放器源代码

用简单的语言编写视频播放器的源代码 源代码包含以下功能: *调用Thunder APlayer SDK进行视频播放*自动检测是否下载Thunderbolt解码库,如果不存在,则自动下载并解压缩(新手可以学习)新手可以学习)*支持快捷键可快进和快退以及将音量最多增加或减小至1000 *自动截取本地视频缩…

易语言PHP自动更新,易语言自动更新源码

作为软件制作者&#xff0c;很多时候&#xff0c;我们都需要自动更新来约束软件使用者。尽管有些人不愿意更新&#xff0c;但是长久使用老版本毕竟不是长久之策。小编这里给大家带来易语言自动更新的源码模块&#xff0c;放入你的软件中正合适&#xff0c;需要的话就来试试吧&a…

易语言html截图,易语言窗口截图源码

易语言窗口截图源码系统结构:子程序1,PaintRect,SetTimer,GetCursorPos,WindowFromPoint,KillTimer,GetWindowRect,CreateDC,IsRectEmpty,PatBlt,DeleteDC,SetParent,GetParent, 窗口程序集1 || ||------__启动窗口_创建完毕 || ||------_图形按钮1_鼠标左键被按下 || ||------…

易语言 网页访问伪造ip

一、x-forwarded-for协议头 在精易网页助手的提交协议头加入 x-forwarded-for: ip地址最后生成的代码&#xff08;部分&#xff09;&#xff1a; .版本 2ADD_协议头.添加 (“x-forwarded-for”, 参_ip, ) 局_提交协议头 &#xff1d; ADD_协议头.获取协议头数据 ()局_结果 &…