预训练模型编程框架Transformers迎来重磅更新:Transformers Agents发布,一个完全的多模态AI Agent!

标签:#AIAgent##AutoGPT##Transformers# 时间:2023/05/13 00:44:20 作者:小木

Transformers是由HuggingFace发布的人工智能Python库,也是AI预训练领域最常使用的编程框架之一。Transformers提供了高级API,用于使用预训练的transformer模型进行各种自然语言处理任务。

今天,HuggingFace官方宣布了Transformers最大胆的功能:Transformers Agents。这是继AutoGPT开创性发布之后,AI Agent被业界接受的另一个重要的里程碑。



[TOC]

AI Agent技术简介

简单来说,AI Agent就是一个代理人,它可以代替我们和ChatGPT之类的大语言模型(LLM)进行交互。尽管当前的大模型可以帮助我们解决许多问题,但是对于复杂的任务来说,通常需要我们不断和LLM进行交互,不断地给LLM发送指令才能最终完成我们的目标。

AI Agent技术目标就是帮助我们降低这部分繁琐的工作。例如,如果我们想要知道今天推特上最火的AI相关的讨论是什么?通常,这需要好几个步骤:理解问题,登陆推特网站,寻找今天与AI相关的推文,理解这些推文讨论的内容,按照讨论的数量找到最火的推文,最后对这些推文进行总结。只有经过这些反复的交互,我们才有可能完成我们的目的。


有了AI Agent技术之后,我们只需要对它说明我们的目标,它会代替我们与LLM反复交互,并最终获得我们需要的内容返回。显然,AI Agent如果要完成这样的事情,不仅需要理解LLM返回的内容,也需要根据不同的返回执行不同的策略,通过内置网络浏览、代码执行等多项功能才能更好地完成我们的目标。

AI Agent最经典的实现就是AutoGPT。关于AutoGPT的原理,我们曾经分析过:https://www.datalearner.com/blog/1051681400812596 ,本文就不再赘述。

可以说,AI Agent技术的火爆主要因为AutoGPT的流行。它最早由开发者Significant Gravitas在3月份开源,仅仅一个月之后,它在GitHub上获得的star数量就达到7.4万,超过了PyTorch(6.5万)。而今天,发布时间不到2个月,AutoGPT在GitHub上获得的star数量已经达到13万!堪称史上star数量增长最快的开源项目!


AutoGPT最大的特点是突破了现有的GPT只能做文本方面的任务的限制,可以利用各种工具来完成目标。

AutoGPT背后接入的语言模型,可以是GPT-4、也可以是GPT-3.5的text-davinci-003。但是,显然这些模型是无法完成浏览网页、执行代码、发布信息的操作的。而作者的聪明在于将这些操作变成命令,让GPT-4模型选择,然后根据返回的结果进行操作。注意,这里可以理解为作者设计了一个十分精巧的prompt,然后把我们要执行的命令,基于prompt模板封装后发给GPT-4,然后根据结果来执行。

Transformers Agents介绍及技术原理解释

AutoGPT发布之后,业界也陆续出现了几个非常流行的AI Agent库,如BabyAGI、AgentGPT等。而今天,Transformers发布Transformers Agents,显然也是看到了AI Agent巨大的潜力。

Transformers Agents最大的特点是可以控制HuggingFace上10万多个模型,是一个完全的多模态Agent,可以处理文本、图片、视频、音频、文档等。

简单总结就是你可以使用自然语言来作为输入,告诉Transformers Agents你的目的,然后Transformers Agents就可以基于自身内置的工具来完成你的目的。下图是Transformers Agents的工作原理:


Transformers Agents本身内置了Prompt、Tools、Agents、Python解释器几个组件,其中Prompt概念很简单,主要是给LLM使用,包括如何使用工具以及如何完成用户的目的,都需要这些prompt模板。而Python解释器则是为了让LLM拥有执行代码,使用代码完成某些任务的能力。下面主要介绍一下Agents和Tools,这两个也是Transformers Agents核心的部件:

Agents

这里的“代理”是指一个大型语言模型(LLM),通过提示它来使其能够访问一组特定的工具。

这也是完成最终目标的核心模型。

Tools

工具非常简单:它们是一个具有名称和描述的单个函数。通过prompt和工具的描述,我们就能告诉Agents如何利用这些工具来执行查询中所请求的操作。

目前内置的工具如下:

工具中文名 工具英文名 工具描述 模型
文档问答 Document question answering 给定一个图像格式的文档(如PDF),回答关于该文档的问题 Donut
文本问答 Text question answering 给定一段长文本和一个问题,在文本中回答该问题 Flan-T5
无条件图像字幕 Unconditional image captioning 给图像加上字幕! BLIP
图像问答 Image question answering 给定一张图片,在该图片上回答一个问题 VILT
图像分割 Image segmentation 给定一张图像和提示,输出该提示的分割掩模 CLIPSeg
语音转文本 Speech to text 给定一个人说话的音频记录,将语音转录为文本 Whisper
文本转语音 Text to speech 将文本转换为语音 SpeechT5
零样本文本分类 Zero-shot text classification 给定一段文本和一系列标签,确定文本最符合哪个标签 BART
文本摘要 Text summarization 用一到几个句子概括一篇长文本 BART
翻译 Translation 将文本翻译成指定语言 NLLB

当然,官方也说明了,支持自定义工具!

这里使用的是tools而不是pipeline,因为代理使用非常基础的工具编写更好的代码。pipeline经常将几个任务合并为一个,并进行了更多的重构。而工具旨在专注于一个非常简单的任务。

Transformers Agents通过内置丰富的工具和prompts模板,然后配合Agents来不断的分解任务完成目标。

Transformers Agents实际代码运行案例

官方展示了 Transformers Agents的丰富的能力,我们截取一部分看一下。

为图像添加标题


文本合成语音


可以看到,不管什么任务,你只需调用Agents运行方法即可。非常简答。官方还做了一个Google的Colab,大家可以自己运行测试,里面提供了完整的环境和代码,也给大家写了很多样例,包括文本生成图片、多轮对话、访问互联网、添加自定义工具等。非常丰富,值得自己动手尝试:https://colab.research.google.com/drive/1c7MHD-T1forUPGcC_jlwsIptOzpG3hSj

Transformers Agents的使用教程(代码示例)

使用一如既往的简单,只需要大家安装agents组件即可,安装方法:

pip install transformers[agents]

当然,Transformers Agents支持你使用OpenAI的模型完成任务,毕竟这是目前最强大的LLM,不过也需要你自己有APIKey,使用OpenAI的模型之前需要安装OpenAI库:

pip install openai

接下来,你一通过下面的方法初始化一个OpenAI相关的Agent:

from transformers import OpenAiAgent

agent = OpenAiAgent(model="text-davinci-003", api_key="<your_api_key>")

可以看到,十分简单。你也可以使用BigCode或者OpenAssistant,不过需要登录HuggingFace Hub,方法如下:

from huggingface_hub import login
from transformers import HfAgent

login("<YOUR_TOKEN>")
agent = HfAgent("https://api-inference.huggingface.co/models/bigcode/starcoder")

注意,目前这两个LLM的Agent都是由Hugging Face官方提供的免费资源。未来是否收费不确定,不过你自己要是由自己的endpoint地址,也可以自定义哦~~

接下来就是使用了:

agent.run("Draw me a picture of rivers and lakes.")

你可以输入任何命令测试它的能力。

Transformers Agents评价和总结

AutoGPT的思想大大拓展了LLM的边界,可以理解为让一个强大的语言模型配备了各种武器,实现各种目标。这种AI Agent思想至少有2个方面大大提升了现有的大语言模型的能力:

  1. 突破了原有模型的能力,将大语言模型变成了一个会使用工具的AI模型。几乎是只要你有合适的工具,都可以通过设计合适的prompt以及使用机制来完成LLM的升级。
  2. 将复杂的任务执行变得可能。对于很多复杂任务来说,分解合理的步骤本身也是一种成本巨大的工作,而AI Agent充分利用了LLM强大的理解和推理能力,代替手工反复交互,降低了使用成本。

就Transformers Agents来说,相比较AutoGPT、BabyAGI等框架来说,它更像一个正规军,而且有HuggingFace的平台优势,它甚至可以引导平台上的模型开放类似的接口,让其能力发展。此外,Transformers Agents的框架设计似乎也更加合理,可靠性与可扩展性也更强,十分值得期待。

不过,AI Agent的一个重要问题是可能会耗费大量的tokens进行无效的交互,很多的复杂任务依然可能需要人的参与才可以。

Transformers Agents的发布至少证明了一件事,那就是AI Agent技术可能是未来十分重要的演进方向,而开源社区上大量的模型可能是这个技术成功的关键!

欢迎大家关注DataLearner官方微信,接受最新的AI技术推送