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/499575

相关文章

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

Pydantic中model_validator的实现

《Pydantic中model_validator的实现》本文主要介绍了Pydantic中model_validator的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录引言基础知识创建 Pydantic 模型使用 model_validator 装饰器高级用法mo

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++