资讯
展览资讯 大型展会 灯光节 大型盛典 赛事 中标捷报 产品快讯 热门话题 艺术节 活动 演出 新闻 数艺报道 俱乐部签约
观点
大咖专访 观点洞察 书籍推荐 吐槽 设计观点 企业访谈 问答 趋势创新 论文 职场方法 薪资报价 数艺专访
幕后
幕后故事 团队访谈 经验分享 解密 评测 数艺访谈
干货
设计方案 策划方案 素材资源 教程 文案资源 PPT下载 入门宝典 作品合集 产品手册 电子书 项目对接
  • 0
  • 0
  • 0

分享

人手AutoGPT!让ChatGPT自选10万+AI模型,HuggingFace官方出品

2023-05-16



  新智元报道  

编辑:编辑部
【新智元导读】ChatGPT调用众多开源AI模型,让HuggingFace给实现了。

前段时间,浙大微软团队提出的HuggingGPT在整个科技圈爆火。

这个大模型协作系统利用ChatGPT作为控制器,随意调用HuggingFace中的各种模型,以实现多模态任务。

让ChatGPT当「老板」,已经成为许多人看好的方向。

这不,该来的还是来了......

全球最火的AI社区HuggingFace官方出品「Transformers Agent」,通过控制10万多个AI,也能实现魔法。

英伟达科学家Jim Fan称赞道,这是向Everything App迈出的第一步,随着生态系统的扩大,它的能力也不断增长。

他继续表示,HuggingGPT是这一想法首次大规模地展示,它使用GPT作为控制器,动态地选择工具(模型)来解决多阶段任务。

ChatGPT的「App Store」当然是AI工具生态系统应用的一个实例。OpenAI的下一步显然是meta app,能够在会话中使用很多插件。

全新Transformers Agent让你拥有超强buff,快速构建AI智能体。

Transformers,无所不能


用上Transformers Agent,你可以张口来图,还能让它为你读出来。

先来看看几个例子~

agent.run("Caption the following image", image=image)

第一个先从简单的开始。输入一张图片然后配个解说,一只可爱的河狸在水里游泳(超可爱,想rua)。

agent.run("Read the following text out loud", text=text)

第二个也不难,简简单单文字转语音。

agent.run(    "In the following `document`, where will the TRRF Scientific Advisory Council Meeting take place?",    document=document,)

这个上了点难度。输入的要求是,说出科学咨询委员会会议将在哪里举办。

当然对AI来说,检索到最后一行也是找到了答案。

用户在使用agent.run之前,需要将一个智能体实例化,也就是一个大型语言模型(LLM)。

研究人员提供了对OpenAI模型的支持,以及来自BigCode和OpenAssistant的开源替代品。

虽然OpenAI的模型性能更好,但用户得有OpenAI的API密钥,所以不是免费使用。

Hugging Face表示,正在提供BigCode和OpenAssistant等模型的免费访问端点。

首先,用户需要安装智能体附加程序。

pip install transformers[agents]


要想使用OpenAI的模型,用户需要在安装OpenAI dependency项后实例化一个OpenAiAgent:

pip install openaifrom transformers import OpenAiAgent
agent = OpenAiAgent(model="text-davinci-003", api_key="")


用户要使用BigCode或OpenAssistant的话,得先登录,以便能够访问API:

from huggingface_hub import login
login("")


然后,将智能体实例化:

from transformers import HfAgent
# Starcoderagent = 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")

这是在使用Hugging Face目前免费提供的推理API。如果用户有自己的推理端点,就可以替换上面的URL。

StarCoder和OpenAssistant是免费使用的,在简单的任务上表现得不错。

然而,在处理更复杂的提示时,检查点就不成立了。如果用户面临这样的问题,可以尝试一下OpenAI模型,虽然很遗憾它不是开源的,但胜在表现不错。

单一执行方法是在使用代理的run()方法时使用的:

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

它自动选择适合你要执行的任务的工具(或工具)并适当地运行它们。它可以在同一指令中执行一个或几个任务(你的指令越复杂,就越有可能失败)。

agent.run("Draw me a picture of the sea then transform the picture to add an island")

每个run()操作都是独立的,所以你可以用不同的任务连续运行几次。

请注意,用户的智能体只是一个大语言模型,所以prompt中的小变化可能产生完全不同的结果。尽可能清楚地解释要执行的任务是很重要的。

研究人员深入地讨论了如何写出更好的prompt。

如果你想在整个执行过程中保持一个状态,或者向智能体传递非文本对象,你可以通过指定变量来做到这一点。

例如,你可以生成第一张河流和湖泊的图片,并要求模型通过以下方式更新该图片以增加一个岛屿:

picture = agent.run("Generate a picture of rivers and lakes.")updated_picture = agent.run("Transform the image in `picture` to add an island to it.", picture=picture)agent.chat("Generate a picture of rivers and lakes")


这里让系统生成一张河流湖泊的照片。

agent.chat("Transform the picture so that there is a rock in there")

下一步,研究人员又让系统给原图中加一个岛屿。

当用户想保持跨指令的状态时,这是一个很有趣的方法。

它更适合于实验,但往往在单条指令而不是复杂指令方面会好很多。

如果你想传递非文本类型或特定的提示,这个方法也可以接受参数。

要了解如何自己设置远程执行器工具,研究人员建议用户阅读自定义工具指南。

为了与远程工具一起运行,在run()或chat()中指定remote=True就可以了。

例如,以下命令可以在任何设备上有效地运行,不需要大量的RAM或GPU:

agent.run("Draw me a picture of rivers and lakes", remote=True)

对chat()来说也是一样的:

agent.chat("Draw me a picture of rivers and lakes", remote=True)

网友表示,Transformers Agent就像AutoGPT一样。

还有人表示,Transformers Agent打开了自然语言编程的大门,可以想象,未来的操作系统就是智能模型,人类通过自然语言编排任务,越来越多的非开发者可以自己实现各种计算机应用。

什么是工具?什么是智能体?


Transformers Agents整体的运作流程简单分为四步:

设定目标、提供工具、展示示例、下达任务。

智能体会使用链式思考推理来确定其任务,并用提供的工具输出Python代码。

如何安装和使用,官方给出了具体步骤。

https://colab.research.google.com/drive/1c7MHD-T1forUPGcC_jlwsIptOzpG3hSj#scrollTo=fA8jPddeUSMO

其中,这里的「智能体」指的是,一个大型语言模型。通过提示LLM,让其访问特定的一组工具。

因为LLM非常擅长生成较小的代码样本,所以API利用了这一点优势。

你可以用抱抱脸自家的OpenAssistant、StarCoder,甚至还可以用OpenAI的模型。

提示LLM给出一个小的代码样本,并用一组工具执行一个任务。这个提示包括,给智能体的任务,以及工具的描述。

这样,「智能体」就可以找到所使用工具的文档,特别是预期的输入和输出,并可以生成相关的代码。

而「工具」就非常好理解,是一个单独的函数,带有名称和描述。

然后,使用这些工具的描述来提示「智能体」,作用就在于可以像智能体展示如何用工具来执行查询中的请求内容。

再之后,通过利用Python解释器在与工具一起上传的一组输入中执行代码。

如果唯一调用的函数是你自己提供的工具和print函数,那么,开发者会在可执行内容上受到限制。当然了,抱抱脸社区的工具,是比较安全的。

除此之外,HuggingFace在Transformers Agents中还集成了以下工具:

- 文档问答:给定一个图像格式的文档(PDF),回答文档的问题(Donut) 
- 文本问答:给定一个长文本和一个问题,回答文本中的问题(Flan-T5) 
- 无条件给图像加标题:(BLIP) 
- 图像问答:给定一个图像,回答关于这个图像的问题(VILT) 
- 图像分割:给定一个图像和一个提示,输出该提示的分割掩码(CLIPSeg) 
- 语音转文本:给定一个音频记录,将语音转录为文本(Whisper) 
- 文本到语音:将文本转换为语音(SpeechT5) 
- 零样本文本分类:给定一个文本和一列标签,确定该文本与哪个标签最对应(BART) 
- 文本总结:用一个或几个句子来总结一个长文本(BART) 
- 翻译:将文本翻译成一种语言(NLLB)

这些工具都内置在Transformers中,也可以手动使用,比如:

from transformers import load_tool
tool = load_tool("text-to-speech")audio = tool("This is a text to speech tool")

此外,还有一些定制的工具集成在Transformers Agents中,其中包括文本下载器、文本到图像的扩散模型stable diffusion、图像变换instruct pix2pix stable diffusion,以及文本到视频damo-vilab。

官方给出了一个自定义工具和提示的教程:

https://huggingface.co/docs/transformers/en/custom_tools

代码生成


如上,已经展示了如何使用Transformers Agents流程。

但是,智能体只生成代码,通过使用非常受限的Python解释器执行这些代码。

如果你希望使用在不同设置中生成的代码,可以提示智能体返回代码,对工具定义,并准确导入。

比如,根据以下步骤实现:

agent.run("Draw me a picture of rivers and lakes", return_code=True)

返回以下代码:

from transformers import load_tool
image_generator = load_tool("huggingface-tools/text-to-image")
image = image_generator(prompt="rivers and lakes")


然后,你就可以修改和执行自己的工具了。


参考资料:
https://twitter.com/huggingface/status/1656334778407297027
https://huggingface.co/docs/transformers/transformers_agents



阅读原文

* 文章为作者独立观点,不代表数艺网立场转载须知

本文内容由数艺网收录采集自微信公众号新智元 ,并经数艺网进行了排版优化。转载此文章请在文章开头和结尾标注“作者”、“来源:数艺网” 并附上本页链接: 如您不希望被数艺网所收录,感觉到侵犯到了您的权益,请及时告知数艺网,我们表示诚挚的歉意,并及时处理或删除。

数字媒体艺术 新媒体艺术 科技艺术

11133 举报
  0
登录| 注册 后参与评论