Hugging Face Transformers Agent

news2024/12/27 13:22:16

🤗Hugging Face Transformers Agent

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

在这里插入图片描述

文章目录

    • 什么是 Transformers Agent?
    • Transformers Agent 工作原理
      • 第一步:实例化代理
      • 第二步:运行Agent
    • 与 🦜🔗LangChain Agent 的区别
      • 工具(Tools)
        • 🤗Hugging Face
        • 🦜🔗LangChain
      • 代理(Agent)
        • 🤗Hugging Face
        • 🦜🔗LangChain
      • 自定义代理
      • 代码执行
        • 🤗Hugging Face
        • 🦜🔗LangChain
    • 结论

什么是 Transformers Agent?

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

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

实现步骤如下:

img

图片来源: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") 方法并带上提示,即可自动理解任务,并为任务选择工具,例如选择图像生成工具来创建图像。

img

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

img

与 🦜🔗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 示例。
  • 🦜🔗LangChain Agent:请参阅此处的 LangChain 示例。

代码执行

🤗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 进行体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

APP软件的测试方法和工具

手机APP的使用已经非常普及&#xff0c;使用方便&#xff0c;因此越来越多的企业通过APP对外管理客户及产品&#xff0c;对内管理工作流程。这些APP有的是自研&#xff0c;有的是找专业的APP外包公司开发完成&#xff0c;开发完成后需要做详细的测试&#xff0c;今天和大家分享…

java版企业电子招投标系统源码 招采系统源码 spring boot+mybatis+前后端分离实现电子招投标系统

spring bootmybatis前后端分离实现电子招投标系统 电子招投标系统解决方案 招标面向的对象为供应商库中所有符合招标要求的供应商&#xff0c;当库中的供应商有一定积累的时候&#xff0c;会节省大量引入新供应商的时间。系统自动从供应商库中筛选符合招标要求的供应商&#x…

干货!12个程序员证书​,含金量超高

近来IT行业成为了发展前景好高薪资的大热门&#xff0c;越来越多的人选择参加各种各样的计算机考试&#xff0c;就是为了拿含金量高的证书&#xff0c;提升自己的职场竞争力。 那么程序员有哪些含金量高的证书可以考&#xff1f;下面云学姐将详细介绍一下含金量高的IT证书&…

游戏网站JS加密限制,用python来突破限制,进行逆向解密~

回来了回来了 好久没更新了 不过好像没啥人看文章了 难不成都去看视频学习了吗 今天线的无聊来分享分享如果用python来突破JS加密限制&#xff0c;进行逆向解密&#xff0c;来实现自动登录~ 逆向目标 目标&#xff1a;某 7 网游登录主页&#xff1a;aHR0cHM6Ly93d3cuMzcuY29…

【pytest】执行环境切换的两种解决方案

一、痛点分析 在实际企业的项目中&#xff0c;自动化测试的代码往往需要在不同的环境中进行切换&#xff0c;比如多套测试环境、预上线环境、UAT环境、线上环境等等&#xff0c;并且在DevOps理念中&#xff0c;往往自动化都会与Jenkins进行CI/CD&#xff0c;不论是定时执行策略…

深度解析Linux kernel同步机制(上篇)

在现代操作系统里&#xff0c;同一时间可能有多个内核执行流在执行&#xff0c;因此内核其实像多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问&#xff0c;尤其是在多处理器系统上&#xff0c;更需要一些同步机制来同步不同处理器上的执行单元对共享…

开源之夏 2023 | 欢迎报名openEuler sig-eBPF开发任务

开源之夏是中国科学院软件研究所联合openEuler发起的开源软件供应链点亮计划系列暑期活动&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;促进优秀开源软件社区的蓬勃发展。活动联合各大开源社区&#xff0c;针对重要开源软件的开发与维护提供项目&#x…

Windows版Sketch软件也太好用了吧!

目前为止&#xff0c;Sketch 软件仅支持 macOS 系统&#xff0c;没有推出 Windows 版本&#xff0c;而且在短期内也不太可能推出。这是因为 Sketch 软件是使用独有的 OS X 技术和框架开发的&#xff0c;它依赖于许多 OS X 的核心功能&#xff0c;这些功能不容易轻松移植到其他操…

[MYAQL / Mariadb] 数据库学习-管理表记录2:匹配条件

管理表记录-匹配条件 匹配条件基本条件查询逻辑匹配&#xff08;多个条件判断&#xff09; 高级条件范围匹配模糊查询正则表达式&#xff1a; regexp四则运算 操作查询结果&#xff08;对查找到的数据再做处理&#xff09;排序分组&#xff08;一样的显示一次&#xff09;&…

FreeRTOS_系统配置

目录 1. FreeRTOSConfig.h 文件 2. "INCLUDE_" 开始的宏 2.1 INCLUDE_xSemaphoreGetMutexHolder 2.2 INCLUDE_xTaskAbortDelay 2.3 INCLUDE_vTaskDelay 2.4 INCLUDE_vTaskDelayUntil 2.5 INCLUDE_vTaskDelete 2.6 INCLUDE_xTaskGetCurrentTaskHandle 2.7 IN…

数据结构与算法(二)

一、数组 什么是数组&#xff1f; 数组&#xff1a;在内存中用一串连续的区域来存放一些值。数组是相同类型数据元素的有序集合 数组是由相同类型的元素的集合组成的数据结构 连续内存&#xff1a;JS的数组元素可以是任意类型&#xff0c;JS中的内存地址是不连续的 数组的…

工业互联网的新应用:高端装备的故障预测和健康管理

高端装备制造行业作为我国战略性新兴产业的重要组成部分&#xff0c;面临着产品复杂和生命周期长的挑战。为了提高装备的可靠性、可用性和维护效率&#xff0c;工业互联网技术在高端装备的故障预测和健康管理方面发挥了重要作用。 本文将探讨工业互联网在高端装备中故障预测和…

如何应用金字塔模型提高结构化表达能力

看一下结构化表达的定义&#xff1a; 结构化表达&#xff1a;是基于结构化思维&#xff0c;理清事物整理与部分之间关系、换位思考后&#xff0c;进行简洁、清晰和有信服力的表达&#xff0c;是一种让受众听得明白、记得清楚、产生认同的精益沟通方式。 结构化表达的基本原则是…

度娘教我influxdb,先搞一波在补理论

InfluxDb中的数据查询语法where子句 公司用的时序性数据库是influxdb&#xff0c;但是确实接触有点少。 心里话&#xff1a; 就是没接触过&#xff0c;度娘教教我。。。。 我咋回呢&#xff0c;现学吧&#xff0c;都是数据库&#xff0c;天下乌鸦一般黑然后就哟了以下&#xf…

Mac 更换.gradle文件目录

用mac开发最大滑铁卢居然是存储空间不足......于是加了一个外置的存储器。于是需要把android开发中最大的一个缓存目录移到外置存储器... 一开始对android studio的进行了如下设置 于是乎...Mac用户下的.gradle全删了...这个时候用android studio打包运行都没问题了。 如果你…

AI在视频教学方面会有哪些有意思应用?

阿酷TONY / 原创 / 2023-5-17 / 长沙 来&#xff0c;我们一起来探索未来式的学习体验&#xff0c;AI视频&#xff0c;AI与视频的应用将为你带来前所未有的教学体验。AI在视频教学方面的应用&#xff0c;主要会体现在如下几个方面&#xff1a; 1. AI 课程知识点梳理 2. AI 学…

前段时间公司招人,面了一个要23K的,一问自动化只会点皮毛···

前段时间公司要招2个自动化测试&#xff0c;同事面了几十个候选人&#xff0c;发现了一个很奇怪的现象&#xff0c;面试的时候&#xff0c;如果问的是框架api、脚本编写这些问题&#xff0c;基本上个个都能对答如流&#xff0c;等问到实际项目的时候&#xff0c;类似“怎么从0开…

OPPO关停哲库业务,工程师造芯何去何从?

5月12日&#xff08;上周五&#xff09;&#xff0c;新浪科技从OPPO处了解到&#xff0c;OPPO将终止ZEKU业务。3000多人团队突然原地解散&#xff0c;网上唏嘘声一片&#xff01; ZEKU最初成立于2019年&#xff0c;是OPPO的全资子公司&#xff0c;欧加集团百分之百注资成立。总…

提高合规性与安全性:ADAudit Plus助力企业数据审计

简介&#xff1a;在现代数字化时代&#xff0c;企业面临着日益增长的数据安全威胁和法规合规要求。为了应对这些挑战&#xff0c;企业需要强大的数据审计解决方案来监控和保护其敏感数据。ADAudit Plus是一款功能强大的工具&#xff0c;旨在帮助企业提高合规性&#xff0c;并提…

dll注入技术

一、dll注入的概念 当一个进程运行时&#xff0c;它会加载并使用一些动态链接库&#xff08;DLL&#xff09;来提供额外的功能和资源。这些DLL可以被多个进程共享&#xff0c;使得代码重用和资源共享变得更加高效。DLL注入技术利用了这种共享机制。它允许向正在运行的进程中注…