在前面两篇博文中已经粗略介绍了增强语言模型和Tool Learning,本篇文章看四篇代表性的自动化框架,HuggingGPT、AutoGPT、WebGPT、WebCPM。
HuggingGPT
HuggingGPT是tool learning中tool-augmented learning的一类,具体来说,它是一个以LLMs为控制器来管理来自Huggingface社区中诸多小模型的框架,其中用户的自然语言请求将视为一个通用接口,再经过LLMs的解析和规划后,再根据Huggingface小模型工具的描述进行模型选择,执行完每个小模块的任务后,再对结果进行处理和返回给用户。
如上图所示,其执行步骤分为4步:
[{"task": "image-to-text",
"id": 0, "dep": [-1],
"args": {"image": "/exp1.jpg"}},
{"task": "object-detection",
"id": 0, "dep": [-1],
"args": {"image": "/exp1.jpg" }}]
由于HuggingGPT可以调用在社区中的所有模型“工具”,因此它也可以执行多模态任务。不过HuggingGPT的主要缺点有:
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主要有以下特点:
具体来说,来自GPT4绘画的执行原理图如上,AutoGPT共包括以下几步:
AutoGPT可以执行的一些操作如下所示,搜索引擎、网页浏览都支持:
Google Search: "google", args: "input": ""
Browse Website: "browse_website", args: "url": "" , "question": ""
Start GPT Agent: "start_agent", args: "name": "" , "task": "" , "prompt": ""
Message GPT Agent: "message_agent", args: "key": "" , "message": ""
List GPT Agents: "list_agents", args: ""
Delete GPT Agent: "delete_agent", args: "key": ""
Write to file: "write_to_file", args: "file": "" , "text": ""
Read file: "read_file", args: "file": ""
Append to file: "append_to_file", args: "file": "" , "text": ""
Delete file: "delete_file", args: "file": ""
Search Files: "search_files", args: "directory": ""
Evaluate Code: "evaluate_code", args: "code": ""
Get Improved Code: "improve_code", args: "suggestions": "" , "code": ""
Write Tests: "write_tests", args: "code": "" , "focus": ""
Execute Python File: "execute_python_file", args: "file": ""
Task Complete (Shutdown): "task_complete", args: "reason": ""
Generate Image: "generate_image", args: "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的思路是一致的,名字稍有不同。
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),其中包括四个小模块。
以论文中的例子可以详细理解这一过程。
paper:https://arxiv.org/abs/2305.06849
code:https://github.com/thunlp/WebCPM