相关文章推荐
焦虑的皮带  ·  .NET ...·  1 年前    · 
潇洒的葡萄  ·  【前端】JavaScript ...·  1 年前    · 
宽容的自行车  ·  hand detection using ...·  1 年前    · 
有情有义的馒头  ·  Error main: ...·  1 年前    · 

🤗Hugging Face Transformers Agent

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

什么是 Transformers Agent?

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

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

实现步骤如下:

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

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

    与 🦜🔗LangChain Agent 的区别

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

    工具(Tools)

    🤗Hugging Face

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

  • 尽管 Transformers Agent 目前只能与少数工具进行交互,但它有与超过 100,000 个 Hugging Face 模型进行通信的潜能。它拥有完整的多模态功能,包括文本、图像、视频、音频和文档。
  • 由于这些模型是为特定任务专门构建的,与仅依赖 LLM 相比,使用它们可以更直接,并可以生成更准确的结果。 例如,我们可以简单地部署专为文本分类设计的 BART,而不是为 LLM 设计文本分类的提示;
  • 这些工具解锁了 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 进行体验。

    A Lightweight and Accurate Recognition Framework for Signs of X-ray Weld Images
    在质量检测行业中,x射线图像是保证设备安全的常用手段。x射线焊缝图像标识识别在制造业数字化溯源系统中起着至关重要的作用。焊缝图像中物体的尺度差异较大,难以实现理想的识别。
    LF-YOLO: A Lighter and Faster YOLO for Weld Defect Detection of X-ray Image
    高效的特征提取EFE模块作为主干单元,它可以用很少的参数和低计算量提取有意义的特征,有效地学习表征。大大减少了特征提取的消耗
    论文笔记:SpectralFormer Rethinking Hyperspectral Image Classification With Transformers_外文翻译
    高光谱(HS)图像具有近似连续的光谱信息,能够通过捕获细微的光谱差异来精确识别物质。卷积神经网络(CNNs)由于具有良好的局部上下文建模能力,在HS图像分类中是一种强有力的特征提取器。然而,由于其固有的网络骨干网的限制,CNN不能很好地挖掘和表示谱特征的序列属性。
    【多标签文本分类】Ensemble Application of Convolutional and Recurrent Neural Networks for Multi-label Text
    【多标签文本分类】Ensemble Application of Convolutional and Recurrent Neural Networks for Multi-label Text
    Remote Sensing Images Semantic Segmentation with General Remote Sensing Vision Model via a Self-Supe
    Remote Sensing Images Semantic Segmentation with General Remote Sensing Vision Model via a Self-Supe
    Text to image论文精读CogView: Mastering Text-to-Image Generation via Transformers(通过Transformer控制文本生成图像)
    CogView是清华大学和阿里巴巴达摩院共同研究开发的一款用Transformer来控制文本生成图像的模型。该论文已被NIPS(Conference and Workshop on Neural Information Processing Systems,计算机人工智能领域A类会议)录用,文章发表于2021年10月。 论文地址:https://arxiv.org/pdf/2105.13290v3.pdf 代码地址:https://github.com/THUDM/CogView 本博客是精读这篇论文的报告,包含一些个人理解、知识拓展和总结。
    Text to image综述阅读(2)A Survey and Taxonomy of Adversarial Neural Networks for Text-to-Image Synthesis
    这是一篇用GAN做文本生成图像(Text to Image)的综述阅读报告。 综述名为:《A Survey and Taxonomy of Adversarial Neural Networks for Text-to-Image Synthesis》,发表于2019年,其将文本生成图像分类为Semantic Enhancement GANs, Resolution Enhancement GANs, Diversity Enhancement GANs, Motion Enhancement GANs四类,并且介绍了代表性model。
    Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读
    Paper:Xavier参数初始化之《Understanding the difficulty of training deep feedforward neural networks》的翻译与解读
    第四周编程作业(二)-Deep Neural Network for Image Classification: Application(一)
    第四周编程作业(二)-Deep Neural Network for Image Classification: Application(一)
    第四周编程作业(二)-Deep Neural Network for Image Classification: Application(三)
    第四周编程作业(二)-Deep Neural Network for Image Classification: Application(三)
    第四周编程作业(二)-Deep Neural Network for Image Classification: Application(二)
    第四周编程作业(二)-Deep Neural Network for Image Classification: Application(二)
    CV之face_recognition:Py之face_recognition库安装、介绍、使用方法详细攻略
    CV之face_recognition:Py之face_recognition库安装、介绍、使用方法详细攻略
    CV之Face Detection:Face Detection人脸检测原理及其常见分类技术
    CV之Face Detection:Face Detection人脸检测原理及其常见分类技术
    TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片
    TF之DD:利用Inception模型+GD算法生成更高质量的Deep Dream高质量图片
    Prediction as a service with Ensemble Model trained in SparkML and Python ScikitLearn on 1Bn observed flight prices daily
    Large Scale Ads CTR Prediction with Spark and Deep Learning--Lessons Learned
    ⚔ Big Challenge in Deep Learn