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

news2024/9/20 6:09:51

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

ToolLLM model

也就是主打Function Call 的大模型
OPENAI GPT
宇宙第一LLM

NexusRaven
开源,可商用,function call的效果对比图,看起来好的让人不敢相信,当然,不敢相信的还有他的github星标太少
在这里插入图片描述

Gorilla
开源,可商用,github有8.7k星标,function call的效果接近于GPT3.5的能力,有微软和伯克利大学背书,可信度较高
在这里插入图片描述

LangChain

LangChain 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的合体

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

ToolServer

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

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

ToolBench

这个项目(ToolLLM)旨在构建开源、大规模、高质量的指令调整 SFT 数据,以促进构建具有通用工具使用能力的强大LLMs。其目标是赋予开源 LLMs 掌握成千上万多样的真实世界API能力。该项目通过收集高质量的指令调整数据集来实现这一目标。其数据集使用最新的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的环境搭建过程的问题会比较多,社区还不健全,填坑不易

补充说明

无论是训练ToolLLM,还是创作Agent调用Tool,都是想解决垂类行业落地的问题,前者是让大模型奔向API,后者是通过prompt让API奔向大模型,鱼和熊掌,当前看两条技术路线,似乎难以同时兼得,实施过程中也是各有利弊,技术还在不停演进中,抬头思考中前行~~

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

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

相关文章

vue3 vite动态路由的问题

因为to.matched未配到路由导致, vue-router.mjs:35 [Vue Router warn]: No match found for location with path "/basedata/psiIntialCustomer/add"加下面的代码,是解决不了问题,因为它只是转向了404页面。 const routes_404 {…

Vmare安装Centos8系统

vmare虚拟机Centos8系统安装 之前虚拟机已经安装好了,现在开始尝试在虚拟机里面安装系统,这次使用Centos8进行安装。 前提条件: 虚拟机安装完成 Centos8系统镜像下载完成 网上资源很多,如果没有也可以私信我。 本篇文章全程图片资…

ChatGPT对话为什么不用WebSocket而使用EventSource?

文章目录 1. 引言2. WebSocket和EventSource简介2.1 WebSocket2.2 EventSource 3. ChatGPT对话系统的特点4. EventSource的优势4.1 简单易用4.2 容错性强4.3 兼容性良好 5. 为何选择EventSource而非WebSocket?5.1 单向通信模式5.2 长轮询模式5.3 简化部署和维护 6. …

后端接受List类型参数报错:Cannot deserialize instance of `java.util.ArrayList` out of START_OBJECT token

今天和前端调接口时报了"Cannot deserialize instance of java.util.ArrayList out of START_OBJECT token"错误 其实我想要的是这种类型的参数 但是前端传的是这种类型 前端传过来的更像是一个对象而不是一个列表,我们后端不能直接接受它 报错时后端的…

CSS特效030:日蚀动画

CSS常用示例100专栏目录 本专栏记录的是经常使用的CSS示例与技巧,主要包含CSS布局,CSS特效,CSS花边信息三部分内容。其中CSS布局主要是列出一些常用的CSS布局信息点,CSS特效主要是一些动画示例,CSS花边是描述了一些CSS…

郝斌C语言自学教程笔记

赫斌C语言——笔记目录 c语言编程预备知识流程控制函数变量指针结构体位运算符 前段时间康哥看我C语言基础不牢,推荐我学习郝斌老师的C语言课程,花2周看完之后发现确实是目前所看的C语言课程中最好的,不仅非常适合入门,而且对即使学了几年C语…

痤疮分割 实验心路历程

数据集的制作 将labelme生成的标注文件记普通的json文件转成coco数据集格式的json文件 图像分辨率过大 如果不做任何调整: 会出现“killed”的报错,表示图片像素过大,显卡内存不够,无法支撑训练 显卡 换成更高性能的显卡&am…

配置VRRP负载分担示例

一、组网需求: HostA和HostC通过Switch双归属到SwitchA和SwitchB。为减轻SwitchA上数据流量的承载压力,HostA以SwitchA为默认网关接入Internet,SwitchB作为备份网关;HostC以SwitchB为默认网关接入Internet,SwitchA作为…

快速入门Tailwind CSS:从零开始构建现代化界面

快速入门Tailwind CSS:从零开始构建现代化界面 介绍 Tailwind CSS 是一个以原子类的方式快速构建界面的 CSS 框架。它提供了丰富的预定义类,使得开发者能够快速构建样式和布局。 安装和设置 首先,我们需要在项目中安装 Tailwind CSS。可以…

经典深度学习算法【1】:K-近邻算法(KNN)概述

最简单最初级的分类器是将全部的训练数据所对应的类别都记录下来,当测试对象的属性和某个训练对象的属性完全匹配时,便可以对其进行分类。但是怎么可能所有测试对象都会找到与之完全匹配的训练对象呢,其次就是存在一个测试对象同时与多个训练…

【Java】线程池的创建

目录 ​编辑 一、什么是线程池 二、创建和使用 导入必要的包: 创建线程池: 提交任务给线程池执行: 自定义Runnable和Callable任务: 关闭线程池: 我的其他博客 一、什么是线程池 在Java中,线程池是…

phpy 连接 PHP与Python生态 跨界合作 PHPY搭建 已解决

目录 需求介绍 安装 windows版本 文件地址 运行效果 需求介绍 在日常功能开发中,难免会使用python的计算库,同时自己要是一名PHP开发工程师。就在最近有相应的需求,索性使用phpy来进行功能开发 安装 windows版本 phpy 是识沃团队最新推出…

系列三、DDL

一、DDL 1.1、概述 DDL是英文单词Data Definition Language的缩写,中文意思为数据定义语言,是用来定义数据库对象(数据库,表,字段)的。 1.2、数据库操作 1.2.1、查询所有数据库 show databases; 1.2.2、创建数据库 # 语法 cre…

TrustZone之安全虚拟化

在Armv7-A首次引入虚拟化时,它仅在非安全状态中添加。在Armv8.3之前,Armv8也是如此,如下图所示: 如前所述在切换安全状态时,EL3用于托管固件和安全监视器。安全EL0/1托管受信任的执行环境(TEE),由受信任的服务和内核组成。 在安全状态下,没有对多个虚拟机的需…

IntelliJ IDEA无公网环境远程访问Linux服务器进行开发

文章目录 1. 检查Linux SSH服务2. 本地连接测试3. Linux 安装Cpolar4. 创建远程连接公网地址5. 公网远程连接测试6. 固定连接公网地址7. 固定地址连接测试 本文主要介绍如何在IDEA中设置远程连接服务器开发环境,并结合Cpolar内网穿透工具实现无公网远程连接&#xf…

01-进程和线程的概述

进程和线程的相关概念 概述 进程是一个运行中的应用程序,一个进程是一个执行中的软件 每打开一个软件就相当于启动了一个进程 , 操作系统就会为该进程分配一个内存空间, 进程A和进程B的内存独立不共享 线程是由进程创建的,一个进程可以启动多个线程,线程是一个进程中的执行…

AI 在智能制造:推动创新与效率的提升

AI在智能制造中的应用,正在不断推动着智能制造的发展,为制造业带来巨大的创新和变革。 随着AI科技的不断创新发展,人工智能(AI)在许多领域都取得了显著的进步,其中之一就是智能制造。智能制造是指通过集成…

Vue3-17-ref 模板引用的基本使用

什么是模板引用 简单来说,就是在 js 代码中 获取到 html 中的dom元素的完整信息, 从而实现直接操作dom元素的效果。模板引用的语法 1、给 dom 元素添加 ref名称 属性,指定一个独有的名称; 2、js 中 声明一个 与 dom 元素的 ref 同…

Linux--fork创建子进程详解

目录 一.初识fork函数 二.fork的返回值 三.fork原理 1.fork是如何创建子进程的? 2.为什么fork会有两个返回值? 3.为什么父进程的返回值是子进程的pid,子进程返回值是0? 4.fork之后,父子进程谁先运行?…

SpringBoot2初始入门

适配器 任务调度 父项目、webstarter、bulid 版本管理 自动配置 Spring、SpringMVC 扫描包:主程序及其子包 底层注解: Configuration、Bean 单实例 proxyBeanMethodstrue,组件依赖 Import Conditioal(name"")条件…