我的学习笔记

土猛的员外

HuggingFace Transformers Agent介绍

本文比较了HuggingFace出品的Transformers Agent与LangChain Agent。

原文链接:Hugging Face Transformers Agent 作者:Sophia Yang。

还有一个Youtube视频,如果可以看且英文尚可的朋友可以直接看,视频更清楚。

以下为翻译正文:


就在两天前,Hugging Face发布了Transformers Agent——一款利用自然语言从精选工具集中选择工具并完成各种任务的代理。这听起来很熟悉吧?没错,它与LangChain Tools和Agents非常相似。在本篇博客文章中,我将介绍Transformers Agent以及与LangChain Agent的比较。

Transformers Agents是什么?

简而言之,它在transformers的基础上提供了一个自然语言API:我们定义了一组策划工具并设计了一个代理来解释自然语言并使用这些工具。

我可以想象HuggingFace的工程师们会这样说:我们在HuggingFace上托管了许多令人惊叹的模型。我们能否将它们与LLMs集成?我们能否使用LLMs来决定使用哪个模型、编写代码、运行代码并生成结果?基本上,没有人需要再学习所有复杂的任务特定模型了。只需给出一个任务,LLMs(代理)就会为我们完成一切。

下面是所有步骤:

img

来源: https://huggingface.co/docs/transformers/transformers_agents

  • Instruction:用户提供的prompt
  • Prompt:一个带有具体指令的提示模板,其中列出了多个可用工具
  • Tools:经过筛选的转换器模型,例如Flan-T5用于问答
  • Agent:一个LLM解释问题、决定使用哪些工具,并生成代码以使用这些工具执行任务
  • 受限制的Python解释器:执行Python代码

它是如何工作的?

Step 1: 实例一个agent.

第一步是实例化一个agent。agent只是一个LLM,可以是OpenAI模型、StarCoder模型或OpenAssistant模型。

使用OpenAI模型需要OpenAI API密钥,并且使用不免费。我们从HuggingFace Hub加载StarCoder模型和OpenAssistant模型,这需要HuggingFace Hub API密钥并且免费使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from transformers import HfAgent

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

from transformers import OpenAiAgent
from huggingface_hub import login
login("<YOUR_TOKEN>")

# Starcoder
agent = HfAgent("https://api-inference.huggingface.co/models/bigcode/starcoder")

# OpenAssistant
agent = HfAgent(url_endpoint="https://api-inference.huggingface.co/models/OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5")

Step 2: 运行agent.

agent.run是一种单次执行方法,可以自动选择任务所需的工具,例如,选择图像生成器工具来创建图像。

img

agent.chat 保留聊天记录。例如,在这里,它知道我们之前生成了一张图片,并且可以转换图像。

img

和LangChain Agent有什么不同?

Transformers Agent仍处于实验阶段。它的范围更小,灵活性较低。目前Transformers Agent的主要重点是使用Transformer模型和执行Python代码,而LangChain Agent则“几乎”可以完成所有任务。让我们分解一下比较Transformers和LangChain Agents之间不同组件:

工具集(Tools)

  • HuggingFace Transfomers Agent 拥有一个惊人的工具列表,每个工具都由Transformer模型驱动。这些工具提供了三个重要优势:
    • 1)尽管Transformers Agent目前只能与少数几个工具交互,但它有潜力与超过100,000个HuggingFace模型进行通信。它拥有完整的多模态功能,包括文本、图像、视频、音频和文档;
    • 2)由于这些模型是专门为特定任务而构建的,因此利用它们可能比仅依赖LLMs更直接,并且可以产生更准确的结果。例如,我们可以简单地部署BART来执行文本分类而不是设计LLM的提示来执行该任务;
    • 3)这些工具解锁了LLMs无法完成的功能。以BLIP为例,它使我们能够生成引人入胜的图像标题——这是LLMs所不能做到的。.
  • LangChain工具都是外部API,例如Google搜索、Python REPL。实际上,LangChain通过load_huggingface_tool函数支持HuggingFace工具。LangChain已经可以完成Transformers Agent所能做的一切。另一方面,Transformers Agents也有可能整合所有的LangChain工具。.
  • 在这两种情况下,每个工具都只是一个Python文件。您可以在此处找到Hugging Face Transformers Agent工具的文件,以及LangChain工具的文件。正如您所看到的,每个Python文件包含一个表示一个工具的类。

Agent

  • HuggingFace Transformers Agent使用此提示模板根据工具的描述确定要使用哪个工具。它会要求LLM提供解释,并在提示中提供一些few-shot学习示例。
  • LangChain默认使用ReAct框架来确定基于工具描述要使用哪个工具。该框架在这篇论文中有所描述。它不仅可以做出决策,还提供思考和推理,类似于Transformers Agent使用的解释方式。此外,LangChain有四种代理类型

自定义Agent

在这两种情况下,创建自定义代理并不太困难::

  • 请查看此 Colab 结尾处的 HuggingFace Transformer Agent 示例。
  • 在这里查看LangChain的示例

“Code-execution”

  • Hugging Face Transformers Agent在LLM选择工具并生成代码后,将“代码执行”作为其中一步。这限制了Transformers Agent的目标仅限于执行Python代码。
  • LangChain包括“代码执行”作为其工具之一,这意味着执行代码不是整个过程的最后一步。这提供了更多灵活性,可以根据任务目标来决定如何使用它:可以执行Python代码,也可以像进行Google搜索并返回搜索结果等其他操作。.

结论

在这篇博客文章中,我们探讨了Hugging Face Transformers代理的功能,并将其与LangChain代理进行了比较。我期待着在Transformers代理方面看到更多的发展和进步。

. . .

By Sophia Yang on May 12, 2023

Sophia Yang 是一位高级数据科学家。欢迎在领英推特YouTube上关注她,并加入DS/ML读书俱乐部❤️。






关注我的微信公众号,可收到实时更新通知

公众号:土猛的员外


目前正在接受试用中!!!

请将您的称谓、公司名称和使用场景,发邮件到yuanwai@mengjia.net。

也可以直接加微信:lxdhdgss 咨询

更多详情,可查看文章:TorchV Bot开始对外试用了!


最新内容,关注“土猛的员外”公众号