文章主要谈及主流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奔向大模型,鱼和熊掌,当前看两条技术路线,似乎难以同时兼得,实施过程中也是各有利弊,技术还在不停演进中,抬头思考中前行~~