🤗Hugging Face Transformers Agent

简介: 本文我们探索了🤗Hugging Face Transformers Agents 的功能,并将其与🦜🔗LangChain Agents 进行了比较。

🤗Hugging Face Transformers Agent

就在两天前,🤗Hugging Face 发布了 Transformers Agent——一种利用自然语言从精选工具集合中选择工具并完成各种任务的代理。听着是不是似曾相识? 没错,Hugging Face Transformers Agent 跟🦜🔗LangChain 工具和代理很像。 本文,我将介绍什么是 Transformers Agent 以及它与 🦜🔗LangChain Agent 的比较。

Fvx18Z-XsAI9lkj.png

什么是 Transformers Agent?

简而言之,Transformers Agent 在 Transformer 之上提供了一个自然语言 API:我们可以定义一组精选工具并设计了一个代理来解释自然语言并使用这些工具。

世界各地的开发者在 Hugging Face 上托管了很多超赞的模型。 这么多模型要如何挑选使用呢?于是有人突发灵感——我们可以将这些模型与 LLM 融合吗? 我们可以使用 LLM 来决定使用哪个模型、编写代码、运行代码并生成结果吗? 从本质上讲,没有人需要再学习所有复杂的特定任务模型。只要给它一个任务,LLMs(Agent)就会为我们包办一切。

实现步骤如下:

5e69b20d04887ca144d39757ee06482c.png

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

  • 指令(Instruction):用户给出的提示;
  • 提示(Promt):添加了具体说明的提示模板,其中列出了多个要使用的工具;
  • 工具(Tools):精选的 Transformer 模型列表,例如用于问答的 Flan-T5;
  • 代理(Agen):解释问题、决定使用哪些工具并生成代码以使用工具执行任务的 LLM;
  • 受限 Python 解释器(Restricted Python Interpreter):执行 Python 代码。

Transformers Agent 工作原理

第一步:实例化代理

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

其中 OpenAI 模型不是免费的,需要提供 OpenAI API 密钥。

StarCoder 模型和 OpenAssistant 模型是免费的。从 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")

第二步:运行Agent

通过执行 agent.run("prompt") 方法并带上提示,即可自动理解任务,并为任务选择工具,例如选择图像生成工具来创建图像。

bd3a13daf72cca3171fc14fb04dab9d0.png

agent.chat("prompt") 方法保留聊天记录。 例如,这里它知道我们之前生成了一张图片,它可以转换图像。

231343411818cf19533e95f87d1dc8f3.png

与 🦜🔗LangChain Agent 的区别

Transformers Agent 仍处于试验阶段。 它的使用范围比 LangChain Agent 小得多,灵活性也较差。 Transformers Agent 目前主要聚焦于使用 Transformer 模型和执行 Python 代码,而 LangChain Agent 则“几乎” 可以做任何事情。 我们具体比较一下 Transformers Agent 和 LangChain Agents 之间各组件的不同:

工具(Tools)

🤗Hugging Face

🤗Hugging Face Transfomers Agent 有一个超赞的工具列表,每个工具都由 Transformer 模型提供支持。这些工具提供了三个显著优势:

  1. 尽管 Transformers Agent 目前只能与少数工具进行交互,但它有与超过 100,000 个 Hugging Face 模型进行通信的潜能。它拥有完整的多模态功能,包括文本、图像、视频、音频和文档。
  2. 由于这些模型是为特定任务专门构建的,与仅依赖 LLM 相比,使用它们可以更直接,并可以生成更准确的结果。 例如,我们可以简单地部署专为文本分类设计的 BART,而不是为 LLM 设计文本分类的提示;
  3. 这些工具解锁了 LLM 无法单独完成的功能。以 BLIP 为例,它使我们能够生成引人入胜的图像说明——这是一项超出 LLM 范围的任务。

🦜🔗LangChain

🦜🔗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

🤗Hugging Face Transformers Agent 使用提示模板,根据工具的描述来决定使用哪个工具。它要求 LLM 提供解释,并在提示中提供一些小样本学习示例。

🦜🔗LangChain

🦜🔗LangChain 默认使用 ReAct 框架,根据工具的描述来决定使用哪个工具。关于 ReAct 框架的更多信息,请阅读此论文。LangChain Agent不仅能对决定采取行动,还能提供想法和推理,这类似于 Transformers Agent 使用的解释。此外,🦜🔗LangChain 有四种代理类型:

  • zero-shot-react-description

    该代理使用 ReAct 框架,仅根据工具的描述来确定要使用的工具。可以提供任意数量的工具。此代理要求为每个工具提供描述。

  • react-docstore
    该代理使用 ReAct 框架与文档库进行交互。必须提供两个工具:一个搜索工具和一个查找工具(它们的名称必须完全一样)。搜索工具负责搜索文档,而查找工具负责在最近找到的文档中查找术语。该代理与原始 ReAct 论文 一致,特别是维基百科的例子。
  • self-ask-with-search

    该代理使用一个名为 Intermediate Answer 的工具。该工具能够查找问题的事实答案。该代理来自 self ask with search 原始论文,其中提供了一个 Google 搜索 API 作为工具。

  • conversational-react-description

    该代理被设计用于会话设置。提示旨在让代理更健谈、更有用。它使用 ReAct 框架来决定使用哪个工具,并使用内存来记住之前的对话交互。

自定义代理

在 🤗Hugging Face Transformers Agent 和 🦜🔗LangChain Agent 上创建自定义代理都很容易:

🤗Hugging Face Transformers Agent**:请参阅此 colab 末尾的 HuggingFace Transformer Agent 示例。

代码执行

🤗Hugging Face

🤗Hugging Face Transformers Agent 包括“代码执行”作为 LLM 选择工具并生成代码后的步骤之一。这限制了 Transformers Agent 执行 Python 代码的目标。

🦜🔗LangChain

🦜🔗LangChain 将“代码执行”作为其工具之一,这意味着执行代码并不是整个过程的最后一步。这为任务目标是什么提供了更多的灵活性:它可以是执行 Python 代码,也可以是其他的东西,比如进行谷歌搜索并返回搜索结果。

结论

本文我们探索了🤗Hugging Face Transformers Agents 的功能,并将其与🦜🔗LangChain Agents 进行了比较。尽管现在 🤗Hugging Face Transformers Agents 的功能还不如 🦜🔗LangChain 灵活强大,但 🤗Hugging Face Transformers Agents 背靠Hugging Face后面庞大的模型库,尤其自身的突出优势。期待 🤗Hugging Face Transformers Agents 的进一步发展和进步。

如果你想快速体验 🤗Hugging Face Transformers Agent,可以通过 Hugging Face 提供的 Colab 进行体验。

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
机器学习/深度学习 数据可视化 PyTorch
机器学习 | matplotlib超详细教程
机器学习 | matplotlib超详细教程
444 0
|
机器学习/深度学习 PyTorch 算法框架/工具
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
2308 1
【Transformer系列(5)】Transformer代码超详细解读(Pytorch)
|
3月前
|
存储 人工智能 监控
|
人工智能 自然语言处理 安全
通过阿里云Milvus与PAI搭建高效的检索增强对话系统
阿里云向量检索Milvus版是一款全托管的云服务,兼容开源Milvus并支持无缝迁移。它提供大规模AI向量数据的相似性检索服务,具备易用性、可用性、安全性和低成本等优势,适用于多模态搜索、检索增强生成(RAG)、搜索推荐、内容风险识别等场景。用户可通过PAI平台部署RAG系统,创建和配置Milvus实例,并利用Attu工具进行可视化操作,快速开发和部署应用。使用前需确保Milvus实例和PAI在相同地域,并完成相关配置与开通服务。
|
人工智能 API 决策智能
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
【7月更文挑战第8天】智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
18225 134
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
|
并行计算 异构计算
建立Hugging Face模型调用环境
本文介绍了如何在环境中导入transformers库,并从Hugging Face网站下载模型。如果使用镜像网站,需获取access token。部分模型需申请仓库权限,建议使用国外信息填写。有GPU的用户需先配置CUDA和pytorch-gpu。
|
Python
Python中正则表达式(re模块)用法详解
Python中正则表达式(re模块)用法详解
430 2
|
机器学习/深度学习 API 计算机视觉
如何使用深度学习实现图像分类
深度学习在图像分类中扮演着核心角色,通过卷积神经网络(CNN)自动提取图像特征并分类。本文介绍深度学习原理及其实现流程,包括数据准备、构建CNN模型、训练与评估模型,并讨论如何在阿里云上部署模型及其实用场景。
|
Linux 编译器 Go
cgo--在Go中链接外部C库
cgo--在Go中链接外部C库
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】XGBoost: 强化学习与梯度提升的杰作
在机器学习的广阔领域中,集成学习方法因其卓越的预测性能和泛化能力而备受瞩目。其中,XGBoost(Extreme Gradient Boosting)作为梯度提升决策树算法的杰出代表,自其诞生以来,便迅速成为数据科学竞赛和工业界应用中的明星算法。本文旨在深入浅出地介绍XGBoost的核心原理、技术优势、实践应用,并探讨其在模型调优与解释性方面的考量,为读者提供一个全面且深入的理解框架。
813 2