ToolLLM model 以及LangChain AutoGPT Xagent在调用外部工具Tools的表现对比浅析

本文主要是介绍ToolLLM model 以及LangChain AutoGPT Xagent在调用外部工具Tools的表现对比浅析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章主要谈及主流ToolLLM 以及高口碑Agent 在调用Tools上的一些对比,框架先上,内容会不断丰富与更新。

第一部分,ToolLLM model

先来说主打Function Call 的大模型们

OpenAI GPT

宇宙第一LLM,它的functionCall都知道,不展开说

NexusRaven

开源,可商用,function call的效果对比图,看起来好的让人不敢相信,当然,不敢相信的还有他的github星标涨得很慢,不知道数据是不是有水的成分

在这里插入图片描述

Gorilla

开源,可商用,github有8.7k星标,function call的效果接近于GPT3.5的能力,有微软和伯克利大学背书,可信度较高

在这里插入图片描述

ToolBench

这个项目(ToolLLM)旨在构建开源、大规模、高质量的指令调整
SFT 数据,以促进构建具有通用工具使用能力的强大LLMs。其目标是赋予开源 LLMs 掌握成千上万多样的真实世界API能力。

该开源项目,由OpenBMB (Open Lab for Big Model Base)机构—由面壁智能公司和清华NLP联合成立。 这家机构也是XAgent项目的发起者。
通过收集高质量的指令调整数据集来实现这一目标。其数据集使用最新的ChatGPT(gpt-3.5-turbo-16k)自动构建,升级了增强的函数调用功能。

项目本身提供数据集、相应的训练和评估脚本,以及在ToolBench上经过微调的强大模型ToolLLaMA。项目还用了一个可视化的Atlas Explorer来对自己所使用的数据指令进行了展示。
在这里插入图片描述
作者根据API,使用ChatGPT生成可能用到的指令,利用 {INST,API} 的格式训练API retriever。最后得到的prompt包含了任务的描述、API的文档、3个API的使用例。

ToolLLaMA展现了处理单一工具和复杂多工具指令的引人注目的能力,与ChatGPT的能力相当。
在这里插入图片描述

ToolLLaMA是针对原有的组织内部的 API 进行整理,思考哪些 API 是要精简、放到语料中进行 FT,经过几轮调试后最终得到的关于业务 API 的 Prompt 是真正可以称得上业务精华的。把这些东西放到 GPU 里面训,出一个可以跑 function call 的模型,这么做有两个好处,一个是由于 API 信息入了LLM,意味着平时调用的 Prompt 可以少写点字,提高了执行效率;第二得到一个「真懂业务」的 model,还是那句话,懂 API 的 model 才是好的垂类专家 model。

使用建议
对于tools的调用,功能刚刚齐备,文档介绍较少,参考案例和demo全无,且XAGent的环境搭建过程的问题会比较多,社区还不健全,填坑不易

第二部分,Agent调用外部Tools

来看一看具备Tools调用能力的,那些有影响力的Agents们

LangChain Agent

LangChain是伴随LLM而崛起的RAG工具,其Agent组件已开始展露头角
简单来说,用户向 LangChain 输入的内容未知。此时可以有一套工具集合(也可以自定义工具),将这套自定义工具托管给LLM,让其自己决定使用工具中的某一个(如果存在的话)

使用建议
对于tools的调用,参考案例都较为简单,需要自己扩展才能完成Tools的注册及调用,对于tools组合玩法缺少支持,智能程度有待提升。

AutoGPT

开源软件,地址在这里
在github上已达恐怖的155K的星标, Agents出名的原因也是由’AutoGPT’而起。

API Tools
可以通过插件的形式【API Tools】来调取外部的Tools,接受的外部工具调用的关键功能包括:

  • 支持GET、POST、PUT、DELETE、PATCH、HEAD和OPTIONS
  • 能尝试从用作参数的奇异值中进行恢复
  • 接受自定义header值

使用疑虑
对于tools的调用,文档过于简短,参考案例和demo全无,需要自己琢磨

Xagent

为调用外部工具进行了专门的优化,感觉有点像微软的Gorilla(一种大模型,ToolLLM)和AutoGPT的合体

该开源项目,由OpenBMB (Open Lab for Big Model Base)机构—由面壁智能公司和清华NLP联合成立。 这家机构也是上方ToolBench项目的发起者。

XAgent的框架,使用了Fastapi,它是一个基于 python 的框架,该框架鼓励使用 Pydantic 和 OpenAPI (以前称为 Swagger) 进行文档编制,使用 Docker 进行快速开发和部署以及基于 Starlette 框架进行的简单测试。

ToolServer
ToolServer 的关键组件包括:ToolServerNode、ToolServerMonitor、ToolServerManager,在执行操作、节点检查、周期管理等方面提供强大的能力。

目前,XAgent 的 ToolSever 支持 FileSystemEnv、PythonNotoBook、WebEnv、ExecuteShell、RapidAPIEnv、AskHumanforHelp 等多种工具。

使用建议
该项目和上面的ToolBench项目都系出一家机构,可以想象,将来二者会有双向奔赴的可能,作为国内顶尖学府支持的项目,还是很有想象空间的。

补充说明

无论是训练ToolLLM,还是创作Agent调用Tool,都是想解决垂类行业落地的问题

ToolLLM和Agent调用LLM和TOOL这两张方案,前者是让大模型奔向API,后者是通过prompt让API奔向大模型,鱼和熊掌,当前看两条技术路线,似乎难以同时兼得,实施过程中也是各有利弊,技术还在不停演进中,抬头思考中前行~~

这篇关于ToolLLM model 以及LangChain AutoGPT Xagent在调用外部工具Tools的表现对比浅析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/503286

相关文章

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

基于Python实现简易视频剪辑工具

《基于Python实现简易视频剪辑工具》这篇文章主要为大家详细介绍了如何用Python打造一个功能完备的简易视频剪辑工具,包括视频文件导入与格式转换,基础剪辑操作,音频处理等功能,感兴趣的小伙伴可以了... 目录一、技术选型与环境搭建二、核心功能模块实现1. 视频基础操作2. 音频处理3. 特效与转场三、高

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Python办公自动化实战之打造智能邮件发送工具

《Python办公自动化实战之打造智能邮件发送工具》在数字化办公场景中,邮件自动化是提升工作效率的关键技能,本文将演示如何使用Python的smtplib和email库构建一个支持图文混排,多附件,多... 目录前言一、基础配置:搭建邮件发送框架1.1 邮箱服务准备1.2 核心库导入1.3 基础发送函数二、

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

Python使用pip工具实现包自动更新的多种方法

《Python使用pip工具实现包自动更新的多种方法》本文深入探讨了使用Python的pip工具实现包自动更新的各种方法和技术,我们将从基础概念开始,逐步介绍手动更新方法、自动化脚本编写、结合CI/C... 目录1. 背景介绍1.1 目的和范围1.2 预期读者1.3 文档结构概述1.4 术语表1.4.1 核