本文比较了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(代理)就会为我们完成一切。
下面是所有步骤:
来源: 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 | from transformers import HfAgent |
Step 2: 运行agent.
agent.run
是一种单次执行方法,可以自动选择任务所需的工具,例如,选择图像生成器工具来创建图像。
agent.chat
保留聊天记录。例如,在这里,它知道我们之前生成了一张图片,并且可以转换图像。
和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
在这两种情况下,创建自定义代理并不太困难::
“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读书俱乐部❤️。