AI 利器之Transformers Agent
AI的发展现在是一天一个样,之前介绍了一些自治AI代理的项目。而在两天前,Hugging Face 发布了 Transformers Agent,一种利用自然语言从精选工具集合中选择工具并完成各种任务的代理。此举使其与 LangChain 作为构建企业通用人工智能 (AGI) 应用程序的新兴框架直接竞争,因为它很像 LangChain 工具和代理。在这里,将介绍什么是 Transformers Agent 以及它与 LangChain Agent 的比较。
示例
可以点击 Colab中的代码(由 Hugging Face 提供)进行体验。
什么是 Transformers Agents
简单来说它在转换器之上提供了一个自然语言 API:定义了一组精选工具并设计了一个代理来解释自然语言并使用这些工具。
可以想象 HuggingFace 的工程师会是这样的:在 HuggingFace 上托管了很多令人惊叹的模型,可以将它们与 LLM 整合吗?可以使用 LLM 来决定使用哪个模型、编写代码、运行代码并生成结果吗?从本质上讲,没有人需要再学习所有复杂的特定任务模型。只要给它一个任务,LLMs(代理人)就会为其包办一切。
以下是步骤:
Instruction(使用说明)
:提示由用户来提供Prompt(提示)
:添加了具体说明的提示模板,其中列出了多个要使用的工具。Tools(工具)
:精选的 transformers 模型列表,例如用于问答的Flan-T5
,Agent(代理)
:解释问题、决定使用哪些工具并生成代码以使用工具执行任务的 LLM。Restricted Python interpreter(受限 Python 解释器)
:执行 Python 代码。
工作原理
第 1 步:实例化 Agent (代理)
第一步是实例化一个 Agent (代理), Agent (代理)只是一个 LLM,它可以是 OpenAI 模型、StarCoder 模型或 OpenAssistant 模型。
OpenAI 模型需要 OpenAI API 密钥并且使用不是免费的。从 HuggingFace Hub 加载 StarCoder 模型和 OpenAssistant 模型,这需要 HuggingFace Hub API 密钥并且可以免费使用。
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" )
第 2 步:运行 Agent (代理)
agent.run
是一个单一的执行方法,自动选择任务的工具,例如,选择图像生成器工具来创建图像。
agent.chat
保留聊天记录。例如,这里它知道之前生成了一张图片,它可以转换图像。
与 LangChain Agent 有何不同
Transformers Agent 仍处于试验阶段,它的范围小得多,灵活性也差。Transformers Agent 目前的主要焦点是使用 Transformer 模型和执行 Python 代码,而 LangChain Agent 则几乎做所有事情。接下来将其分解以比较 Transformers 和 LangChain Agents 之间的不同组件:
工具 Tools
-
Hugging Face Transfomers Agent
有一个惊人的工具列表,每个工具都由变形模型提供支持。这些工具提供了三个显着优势:-
- 尽管 Transformers Agent 目前只能与少数工具进行交互,但它有可能与超过
100,000
个Hugging Face 模型进行通信。它拥有完整的多模式功能,包括文本、图像、视频、音频和文档。
- 尽管 Transformers Agent 目前只能与少数工具进行交互,但它有可能与超过
-
- 由于这些模型是为特定任务专门构建的,与仅依赖 LLM 相比,使用它们可以更直接并产生更准确的结果。例如,可以简单地部署专为文本分类设计的 BART,而不是为 LLM 设计文本分类的提示;
-
- 这些工具解锁了 LLM 无法单独完成的功能,例如 BLIP。
-
-
LangChain 工具都是外部API,比如Google Search、Python REPL。事实上,LangChain 通过
load_huggingface_tool
函数支持 HuggingFace Tools。LangChain 已经可以做到 Transformers Agent 可以做到的一切。另一方面,Transformers Agents 也有可能整合所有 LangChain 工具。 -
在这两种情况下,每个工具都只是一个 Python 文件。可以在这里找到 Hugging Face Transformers Agent 工具的文件和 LangChain 工具的文件。每个 Python 文件都包含一个表示一种工具的类。
Agent
- Hugging Face Transformers Agent 使用这个提示模板,根据工具的描述来决定使用哪个工具。它要求 LLM 提供解释,并在提示中提供一些小样本学习示例。
- LangChain 默认使用 ReAct 框架,根据工具的描述来决定使用哪个工具。ReAct 框架在本文中进行了描述。它不仅对决定采取行动,还提供想法和推理,这类似于 Transformers Agent 使用的解释。此外,LangChain 有四种代理类型。
stom Agent
在这两种情况下创建自定义代理都不太困难:
代码执行
- Hugging Face Transformers Agent 包括
代码执行
作为 LLM 选择工具并生成代码后的步骤之一。这限制了 Transformers Agent 执行 Python 代码的目标。 - LangChain 将
代码执行
作为其工具之一,这意味着执行代码并不是整个过程的最后一步。这为任务目标是什么提供了更多的灵活性:它可以是执行 Python 代码,也可以是其他的东西,比如进行谷歌搜索并返回搜索结果。
总结
在这里探索了 Hugging Face Transformers Agents 的功能,并将其与 LangChain Agents 进行了比较。期待 Transformers Agent 的更多的惊人成果。