从聊天到编程再到支持各种插件,强大的 ChatGPT 早就不是一个简单的对话助手,而是朝着 AI 界的「管理层」不断前进。
3 月 23 号,OpenAI 宣布 ChatGPT 开始支持各类第三方插件,比如著名的理工科神器 Wolfram Alpha。借助该神器,原本鸡兔同笼都算不准的 ChatGPT 一跃成为理工科尖子生。Twitter 上许多人评论说,ChatGPT 插件的推出看起来有点像 2008 年 iPhone App Store 的推出。这也意味着 AI 聊天机器人正在进入一个新的进化阶段 ——「meta app」阶段。
紧接着,4 月初,浙江大学和微软亚研的研究者提出了一种名为「HuggingGPT」的重要方法,可以看做是上述路线的一次大规模演示。HuggingGPT 让 ChatGPT 充当控制器(可以理解为管理层),由它来管理其他的大量 AI 模型,从而解决一些复杂的 AI 任务。具体来说,HuggingGPT 在收到用户请求时使用 ChatGPT 进行任务规划,根据 HuggingFace 中可用的功能描述选择模型,用选定的 AI 模型执行每个子任务,并根据执行结果汇总响应。
这种做法可以弥补当前大模型的很多不足,比如可处理的模态有限,在某些方面比不上专业模型等。
虽然调度的是 HuggingFace 的模型,但 HuggingGPT 毕竟不是 HuggingFace 官方出品。刚刚,HuggingFace 终于出手了。
和 HuggingGPT 理念类似,他们推出了一个新的 API——HuggingFace Transformers Agents。通过 Transformers Agents,你可以控制 10 万多个 Hugging Face 模型完成各种多模态任务。
比如在下面这个例子中,你想让 Transformers Agents 大声解释图片上描绘了什么内容。它会尝试理解你的指令(Read out loud thecontent of the image),然后将其转化为 prompt,并挑选合适的模型、工具来完成你指定的任务。
英伟达 AI 科学家 Jim Fan 评价说:这一天终于来了,这是迈向「Everything APP」(万事通 APP)的重要一步。
不过也有人说,这和 AutoGPT 的自动迭代还不一样,它更像是省掉了写 prompt 并手动指定工具这些步骤,距离万事通 APP 还为时过早。
Transformers Agents 地址:https://huggingface.co/docs/transformers/transformers_agents
在发布的同时,HuggingFace 就放出了 Colab 地址,任何人都可以上手一试:
https://huggingface.co/docs/transformers/en/transformers_agents
简而言之,它在 transformers 之上提供了一个自然语言 API:首先定义一套策划的工具,并设计了一个智能体来解释自然语言和使用这些工具。
而且,Transformers Agents 在设计上是可扩展的。
团队已经确定了一组可以授权给智能体的工具,以下是已集成的工具列表:
这些工具集成在 transformers 中,也可以手动使用:
<code>from transformers import load_tooltool = load_tool("text-to-speech")audio = tool("This is a text to speech tool")</code>
用户还可以将工具的代码推送到 Hugging Face Space 或模型存储库,以便直接通过智能体来利用该工具,比如:
具体玩法的话,我们先看几个 HuggingFace 的示例:
生成图像描述:
<code>agent.run("Caption the following image", image=image)</code>
朗读文本:
<code>agent.run("Read the following text out loud", text=text)</code>
输入:A beaver is swimming in the water
输出:
tts_example音频:00:0000:01
读取文件:
在运行 agent.run, 之前,需要先实例化一个大语言模型智能体。这里支持 OpenAI 的模型以及 BigCode、OpenAssistant 等开源模型。
首先,请安装 agents 附加组件以安装所有默认依赖项:
<code>pip install transformers[agents]</code>
要使用 openAI 模型,需要在安装依赖项后实例化一个「OpenAiAgent」 openai:
<code>pip install openaifrom transformers import OpenAiAgentagent = OpenAiAgent(model="text-davinci-003", api_key="<your_api_key>")</code>
要使用 BigCode 或 OpenAssistant,首先登录以访问推理 API:
<code>from huggingface_hub import loginlogin("<YOUR_TOKEN>")</code>
然后,实例化智能体:
<code>from transformers import HfAgentStarcoderagent = HfAgent("https://api-inference.huggingface.co/models/bigcode/starcoder")StarcoderBaseagent = HfAgent("https://api-inference.huggingface.co/models/bigcode/starcoderbase")OpenAssistantagent = HfAgent(url_endpoint="https://api-inference.huggingface.co/models/OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5")</code>
如果用户对此模型(或另一个模型)有自己的推理端点,可以将上面的 URL 替换为自己的 URL 端点。
接下来,我们了解一下 Transformers Agents 提供的两个 API:
单次执行
单次执行是在使用智能体的 run () 方法时:
<code>agent.run("Draw me a picture of rivers and lakes.")</code>
它会自动选择适合要执行的任务的工具并适当地执行,可在同一指令中执行一项或多项任务(不过指令越复杂,智能体失败的可能性就越大)。
<code>agent.run("Draw me a picture of the sea then transform the picture to add an island")</code>
每个 run () 操作都是独立的,因此可以针对不同的任务连续运行多次。如果想在执行过程中保持状态或将非文本对象传递给智能体,用户可以通过指定希望智能体使用的变量来实现。例如,用户可以生成第一张河流和湖泊图像,并通过执行以下操作要求模型更新该图片以添加一个岛屿:
<code>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)</code>
当模型无法理解用户的请求并混合使用工具时,这会很有帮助。一个例子是:
<code>agent.run("Draw me the picture of a capybara swimming in the sea")</code>
在这里,模型可以用两种方式解释:
如果用户想强制执行第一种情况,可以通过将 prompt 作为参数传递给它来实现:
<code>agent.run("Draw me a picture of the prompt", prompt="a capybara swimming in the sea")</code>
基于聊天的执行
智能体还有一种基于聊天的方法:
<code>agent.chat("Generate a picture of rivers and lakes")</code>
<code>agent.chat ("Transform the picture so that there is a rock in there")</code>
这是一种可以跨指令保持状态时。它更适合实验,但在单个指令上表现更好,而 run () 方法更擅长处理复杂指令。如果用户想传递非文本类型或特定 prompt,该方法也可以接受参数。
以上是一键控制10万多个AI模型,HuggingFace给类ChatGPT模型们做了个「APP Store」的详细内容。更多信息请关注PHP中文网其他相关文章!