机器之心报导

编辑:张倩、蛋酱

经过 Transformers Agents,你能够控制 10 万多个 Hugging Face 模型完结各种多模态使命。

从谈天到编程再到支持各种插件,强壮的 ChatGPT 早就不是一个简单的对话帮手,而是朝着 AI 界的「管理层」不断前进。

3 月 23 号,OpenAI 宣告 ChatGPT 开始支持各类第三方插件,比方闻名的理工科神器 Wolfram Alpha。凭借该神器,本来鸡兔同笼都算不准的 ChatGPT 一跃成为理工科尖子生。Twitter 上许多人评论说,ChatGPT 插件的推出看起来有点像 2008 年 iPhone App Store 的推出。这也意味着 AI 谈天机器人正在进入一个新的进化阶段 ——「meta app」阶段。

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

紧接着,4 月初,浙江大学和微软亚研的研究者提出了一种名为「HuggingGPT」的重要办法,能够看做是上述路线的一次大规模演示。HuggingGPT 让 ChatGPT 充任控制器(能够了解为管理层),由它来管理其他的大量 AI 模型,从而处理一些杂乱的 AI 使命。具体来说,HuggingGPT 在收到用户请求时运用 ChatGPT 进行使命规划,依据 HuggingFace 中可用的功能描述选择模型,用选定的 AI 模型履行每个子使命,并依据履行结果汇总响应。

这种做法能够补偿当时大模型的许多缺乏,比方可处理的模态有限,在某些方面比不上专业模型等。

尽管调度的是 HuggingFace 的模型,但 HuggingGPT 毕竟不是 HuggingFace 官方出品。刚刚,HuggingFace 总算出手了。

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

和 HuggingGPT 理念相似,他们推出了一个新的 API——HuggingFace Transformers Agents。经过 Transformers Agents,你能够控制 10 万多个 Hugging Face 模型完结各种多模态使命。

比方在下面这个比方中,你想让 Transformers Agents 大声解说图片上描绘了什么内容。它会测验了解你的指令(Read out loud thecontent of the image),然后将其转化为 prompt,并挑选适宜的模型、东西来完结你指定的使命。

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

英伟达 AI 科学家 Jim Fan 点评说:这一天总算来了,这是迈向「Everything APP」(万事通 APP)的重要一步。

图片

不过也有人说,这和 AutoGPT 的主动迭代还不一样,它更像是省掉了写 prompt 并手动指定东西这些步骤,距离万事通 APP 还为时过早。

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

Transformers Agents 地址:huggingface.co/docs/transf…

Transformers Agents 怎样用?

在发布的一起,HuggingFace 就放出了 Colab 地址,任何人都能够上手一试:

huggingface.co/docs/transf…

简而言之,它在 transformers 之上提供了一个自然言语 API:首要界说一套策划的东西,并规划了一个智能体来解说自然言语和运用这些东西。

而且,Transformers Agents 在规划上是可扩展的。

团队已经确认了一组能够授权给智能体的东西,以下是已集成的东西列表:

  • 文档问答:给定一个图画格式的文档(例如 PDF),回答关于该文档的问题 (Donut)

  • 文本问答:给定一段长文本和一个问题,回答文本中的问题(Flan-T5)

  • 无条件的图画阐明:为图画增加阐明 (BLIP)

  • 图片问答:给定一张图片,回答关于这张图片的问题(VILT)

  • 图画分割:给定图画和 prompt,输出该 prompt 的分割掩码(CLIPSeg)

  • 语音转文本:给定一个人说话的录音,将语音转录成文本 (Whisper)

  • 文本到语音:将文本转换为语音(SpeechT5)

  • 零样本文本分类:给定文本和标签列表,确认文本与哪个标签最对应 ( BART )

  • 文本摘要:用一个或几个句子来概括一个长文本(BART)

  • 翻译:将文本翻译成给定的言语(NLLB)

这些东西集成在 transformers 中,也能够手动运用:

fromtransformersimportload_tool
tool=load_tool("text-to-speech")
audio=tool("Thisisatexttospeechtool")

用户还能够将东西的代码推送到 Hugging Face Space 或模型存储库,以便直接经过智能体来运用该东西,比方:

  • 文本下载器:从 web URL 下载文本

  • Text to image : 依据 prompt 生成图画,运用 Stable Diffusion

  • 图画转换:在给定初始图画和 prompt 的状况下修改图画,运用 instruct pix2pix stable diffusion

  • Text to video : 依据 prompt 生成小视频,运用 damo-vilab

具体玩法的话,咱们先看几个 HuggingFace 的示例:

生成图画描述:

agent.run("Captionthefollowingimage",image=image)

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

朗读文本:

agent.run("Readthefollowingtextoutloud",text=text)

输入:A beaver is swimming in the water

输出:

一段1秒的音频,tts_example

读取文件:

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

快速上手

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

在运转 agent.run, 之前,需要先实例化一个大言语模型智能体。这儿支持 OpenAI 的模型以及 BigCode、OpenAssistant 等开源模型。

首要,请装置 agents 附加组件以装置一切默许依赖项:

pipinstalltransformers[agents]

要运用 openAI 模型,需要在装置依赖项后实例化一个「OpenAiAgent」 openai:

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

要运用 BigCode 或 OpenAssistant,首要登录以访问推理 API:

fromhuggingface_hubimportlogin
login("<YOUR_TOKEN>")

然后,实例化智能体:

fromtransformersimportHfAgent
Starcoder
agent=HfAgent("https://api-inference.huggingface.co/models/bigcode/starcoder")
StarcoderBase
agent=HfAgent("https://api-inference.huggingface.co/models/bigcode/starcoderbase")
OpenAssistant
agent=HfAgent(url_endpoint="https://api-inference.huggingface.co/models/OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5")

假如用户对此模型(或另一个模型)有自己的推理端点,能够将上面的 URL 替换为自己的 URL 端点。

接下来,咱们了解一下 Transformers Agents 提供的两个 API:

单次履行

单次履行是在运用智能体的 run () 办法时:

agent.run("Drawmeapictureofriversandlakes.")

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

它会主动选择合适要履行的使命的东西并适当地履行,可在同一指令中履行一项或多项使命(不过指令越杂乱,智能体失利的可能性就越大)。

agent.run("Drawmeapictureoftheseathentransformthepicturetoaddanisland")

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

每个 run () 操作都是独立的,因此能够针对不同的使命接连运转多次。假如想在履行过程中坚持状况或将非文本对象传递给智能体,用户能够经过指定期望智能体运用的变量来完成。例如,用户能够生成第一张河流和湖泊图画,并经过履行以下操作要求模型更新该图片以增加一个岛屿:

picture=agent.run("Generateapictureofriversandlakes.")
updated_picture=agent.run("Transformtheimageinpicturetoaddanislandtoit.",picture=picture)

当模型无法了解用户的请求并混合运用东西时,这会很有协助。一个比方是:

agent.run("Drawmethepictureofacapybaraswimminginthesea")

在这儿,模型能够用两种方式解说:

  • 让 text-to-image 水豚在海里游泳

  • 或许,生成 text-to-image 水豚,然后运用 image-transformation 东西让它在海里游泳

假如用户想强制履行第一种状况,能够经过将 prompt 作为参数传递给它来完成:

agent.run("Drawmeapictureoftheprompt",prompt="acapybaraswimminginthesea")

根据谈天的履行

智能体还有一种根据谈天的办法:

agent.chat("Generateapictureofriversandlakes")

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

agent.chat("Transformthepicturesothatthereisarockinthere")

一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」

这是一种能够跨指令坚持状况时。它更合适实验,但在单个指令上体现更好,而 run () 办法更拿手处理杂乱指令。假如用户想传递非文本类型或特定 prompt,该办法也能够承受参数。

参阅链接:

twitter.com/DrJimFan/st…

twitter.com/cryptonerdc…