🤗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推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
Web App开发 Java 测试技术
多任务一次搞定!selenium自动化复用浏览器技巧大揭秘
多任务一次搞定!selenium自动化复用浏览器技巧大揭秘
|
异构计算
Magisk模块:停用HW叠加层
Magisk模块:停用HW叠加层
7359 0
Magisk模块:停用HW叠加层
|
机器学习/深度学习 数据可视化 PyTorch
机器学习 | matplotlib超详细教程
机器学习 | matplotlib超详细教程
647 0
|
应用服务中间件 Linux nginx
一文学会配置Docker 镜像加速器(阿里云)
一文学会配置Docker 镜像加速器(阿里云)
3696 0
|
存储 项目管理 Python
数据导入与预处理-第4章-数据获取python读取docx文档(上)
数据导入与预处理-第4章-pandas数据获取docx文档 1.python读取docx文档概述 1.1 从Word文件获取数据 1.2 python-docx库介绍 1. Paragraph类 2. Table类
数据导入与预处理-第4章-数据获取python读取docx文档(上)
|
2月前
|
SQL 人工智能 文字识别
阿里把内部用了两年的 AI 代码审查工具开源了——我跑了一遍 Open Code Review
阿里开源的 Open Code Review 是一款工程化 AI 代码审查工具,采用“确定性模块 + LLM Agent”混合架构,精准定位问题、严控误报率,支持 Git 差异审查与全量扫描,已落地服务数万开发者。周增星 4750,Apache-2.0 协议,轻量易集成。(239 字)
1146 2
|
10月前
|
人工智能 Cloud Native 开发者
云原生架构下的思考:从五家服务商看AI种草系统的演进与部署实践
本文从云原生视角解析2025年五家AI种草服务商的架构模式,涵盖微服务、HPC、SaaS等技术路径,剖析其部署复杂度与运维责任划分,助力企业平衡控制力、成本与技术能力,实现营销系统与技术战略的协同演进。
|
12月前
|
存储 缓存 Kubernetes
Kubernetes 场景下的 StarRocks 灾备体系:Cluster Snapshot 实践解析
在 3.5 版本 中,StarRocks 推出了全新的 Cluster Snapshot 快照恢复机制,进一步完善了数据安全与灾备体系。 Snapshot 提供了一种高效、低成本、自动化的数据保护方式,显著提升系统的可用性与容灾能力,弥补了此前存算分离架构在备份与恢复方面的空缺。 当系统发生故障、误操作或区域性宕机时,Snapshot 可在分钟级完成快速恢复,最大限度减少数据丢失与业务中断风险。通过将完整集群状态进行快照化并备份至对象存储,Snapshot 简化了传统灾备方案的复杂流程,使灾难恢复更加高效与便捷。这一机制尤其适用于 金融、零售、SaaS 等对系统稳定性要求极高的关键业务场景。
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
1381 1
安卓项目:app注册/登录界面设计

热门文章

最新文章