找项目网找项目网  2023-05-01 07:08 找项目网 隐藏边栏
导语: 这部分主要会介绍LangChain让LLM使用外部工具的思路和原理,其他部分暂时不做介绍(强烈建议大家都可以去了解下)LangChain针对不同场景,有不同的使用外部工具的思路,分为Chain和Agent突破上下文限制,解决在众多工具中选择合适工具的问题,其实可以参考上文Toolformer的思路从另一个角度来说,做大模型的公司一定是“大模型+应用”并重的。

本文主要讲的内容:

类AutoGPT应用的背后技术原理

更抽象一层,其实是解释:LLM(GPT)是怎么实现自己学会使用工具的?

1)LLM怎么将人类需求分解成任务;

2)LLM怎么知道什么任务要使用什么外部工具;

2)LLM怎么学会使用这些外部工具的;

---大约5300字,概览如下:

1、为什么研究这个(LLM是怎么学会使用外部工具的)

2、介绍这个领域几个关键产品产品的原理:LangChain、Toolformer、OpenAi-Plugin、huggingGPT、Babyagi、AutoGPT

3、LLM目前使用外部工具的局限是什么?

4、OpenAi-Plugin的数据飞轮

---正文开始---

一、为什么研究这个

一方面,源于我对LLM有一定认知之后,做出的一个判断“未来会出现All in one chatbot”

也就是未来每个人都会有一个基于LLM的IM助手(准确来说是智能助手,虽然说可能无处不在,但是最先落地的一定是IM也就是目前的这种chatbot,用文字或者语音交互)

我只需要跟这个IM发指令,IM就可以理解指令,并且调用外部工具,给到我对应的东西。

举个畅想的例子:用户说:“我中午想点一份40块以内的川菜外卖”,IM会返回一个符合我要求的川菜外卖列表。然后我再点选一个进行下单即可。

这个畅想(openai plugin已经有这样的影子了)往终局来说:

1)会导致目前的APP形态发生很大改变,目前这些APP是为人设计的。未来这些APP更多需要考虑是为LLM设计。

2)在这个设想下,大部分的APP可能不再有自有流量。人们都是通过IM借助LLM来发现并使用这些APP。某种意义上所有目前的APP的用户都会变成LLM,最终再由LLM再提供给人。

我其实一直挺想求证一下,我的这个畅想离现实到底有多远,实现上有什么阻碍。

这不巧了么,最近类似的工具或者论文层出不穷。

LangChain、Toolformer、OpenAi-Plugin、huggingGPT、Babyagi、AutoGPT

其实现这个畅想的要解决的核心问题都是类似的:

1)LLM怎么分解人类指令?2)LLM怎么知道用什么工具?3)LLM怎么才能会用工具?

另一方面,作为一个产品经理,其实对看论文这件事其实挺抵触的(论文这两个字给我的心理压力暗示非常大)。

但是,你不阅读一手内容,似乎总差点意思。所以先从这个偏应用的课题入手,开始看看论文(看了几篇,发现还好,可能是偏应用的原因吧hhh)。

二、对这个领域关于应用&论文的原理简介

依次:LangChain、Toolformer、OpenAi-Plugin、HuggingGPT、BabyAGI、AutoGPT

我追溯了一下LangChain应该是这个应用思路(让LLM自己学会使用外部工具)的鼻祖,时间上LangChain 20221023就发布了第一个版本

所以先介绍LangChain

这部分主要会介绍LangChain让LLM使用外部工具的思路和原理,其他部分暂时不做介绍(强烈建议大家都可以去了解下)

LangChain针对不同场景,有不同的使用外部工具的思路,分为Chain和Agent

Chain概念:

1)在特定的场景下,完成特定的任务

2)约束条件:用户的需求是同一类(比如计算)

3)核心:让LLM根据提供的API文档,结合用户的自然语言,组装正确的API调用参数

链接:#langchain.chains.APIChain.api_docs

Agent概念:

1)在用户需求无法限定的场景,完成更广泛的任务。

2)核心:Agent增加了一个功能,就是根据用户的输入自己去判断应该使用什么工具(在提供的有限的工具list里),然后去使用工具html计算器,最后满足用户需求。

接下来详细展开两者的实现原理

Chain的实现原理

1)告诉LLM工具使用手册:工具(其实就是API)的使用文档,即api_docs

2)告诉LLM用户的问题

3)让LLM基于上述两个信息,组装可以解决用户问题的API请求

具体的prompt如下:

其实我一直对LLM是怎么学会组装正确的API请求参数的,一直有些疑问,去翻了一下源代码,api_docs的内容大概是这个样子(有点像OpenAPI的格式)

这是一个搜索API的例子,假设要query的内容是example,LLM输出的api_url会是:

Agent的实现原理

简而言之,就是在Chain的基础上,让LLM先分解任务,然后再根据每个任务自动根据用户的问题去找到合适的工具

ps:目前还是在给定的几个工具范围内找,这个范围受限于LLM的prompt长度限制,目前需要指定。

话不多说,看prompt你就秒懂了

Toolformer介绍

Toolformer是meta发的一篇关于,LLM怎么自己学会用外部工具的论文

地址:

了解完LangChain的思路后,其实Toolformer的思路大差不差。

Toolformer是一个经过微调的模型,能够决定何时调用哪些API、传递哪些参数,以及如何将结果最佳地融入未来的token预测。

大概过程:

1)先用完整的句子,让LLM自己插入API指令。指令后面的原文其实就是答案。

html计算器_html查看器是什么_小米html查看器安装

2)执行API,计算API获得信息和原文答案之间的差异度,如果差异度ok的话,这条原文+正确位置插入正确API问题的数据,就会成为训练数据集。

3)通过这个训练数据集,去fine-tune这个模型。从而让模型可以知道:

a、在什么地方,应该去调用外部API获取信息。

b、要调用什么工具(论文里主要训练了模型用QA、计算器、翻译、wiki搜索,这4种工具)。

c、调用工具需要组装的正确参数是什么。

OpenAi-Plugin原理

话不多说html计算器,直接上和GPT-4的对话

图片里‘---’前面的内容是复制了openai官方文档里的一个plugin的示例的ai-plugin.json、和这个示例的OpenAPI specification

HuggingGPT的原理

HuggingGPT是一个希望“让语言作为接口,让大型语言模型(LLM)能够连接众多AI模型,解决复杂AI任务”的框架。

这个框架的主要流程如下:

1)任务规划:使用ChatGPT分析用户请求以理解他们的意图,并通过提示将其拆解为可能可解决的任务。

2)模型选择:为了解决计划好的任务,ChatGPT根据模型描述从Hugging Face中选择合适的模型。

3)任务执行:调用并执行每个选定的模型,并将结果返回给ChatGPT。

4)整合结果:最后,使用ChatGPT整合所有模型的预测,并为用户生成答案

可以看具体的prompt加深理解:

论文地址:

BabyAGI原理介绍

其实你会发现一脉相承,大家的核心思路都是差不多的

BabyAGI核心:1)根据需求分解任务;2)对任务排列优先级;3)执行任务并整合结果;

核心prompt

AutoGPT原理解析

到这里,相信你直接看prompt就能知道怎么回事了

链接:

三、LLM目前使用外部工具的局限是什么?

大家都惊叹于AutoGPT可以自动完成比较复杂的任务。

但是如果要变成畅想的那样,我们会拥有一个帮我解决大部分问题的智能助手,到最后Allin one chatbot。

至少会有以下三个问题需要解决:

1、大模型的上下文限制,限制了LLM可以选择的工具范围

一方面,数字世界为解决人类需求创造出来的工具(APP)茫茫多。现在这种方式,让LLM选择用什么工具,必须要要提供给模型的是工具的描述和工具的使用手册(API文档)。

想想你自己手机里装了多少个APP,很显然在现在的框架下,是无法让LLM大范围去选择工具的。

OpenAi自己使用插件的时候,看视频也是需要用户自己手动选择要用哪几个插件的,不知道最多可以选多少个,有幸用过的同学可以举个手。

另一方面是,如果提供了海量的工具描述给到LLM,LLM在大范围内能否选择准也是个问题。

2、和大模型交互造成的延迟:这会让LLM帮你去执行工作的新体验价值降低。

举个例子:LLM执行一系列过程到返回结果需要20s,但是你自己找到对应APP操作n下只需要10s。这个时候LLM去帮你完成任务,其实是不如你自己直接去完成任务的。

3、大模型可能会产生幻觉。

换言之,可能不准确。不如用户自己手动操作准确。

如果这个问题不解决,用户只会在失误成本比较低的时候用这个LLM来帮自己完成相应任务。

认清现实后看,我们距离Allinone chatbot 可能还有点路要走。

四、OpenAi-Plugin的数据飞轮

基于上一段其实可以判断:

解决延迟、幻觉,这可能是基础模型要去优化的事情;

突破上下文限制,解决在众多工具中选择合适工具的问题,其实可以参考上文Toolformer的思路

从这个角度,OpenAi的Plugin系统,用户在选择插件,模型在执行过程中,都不断的在为“LLM选择合适的工具”贡献训练数据。

最终OpenAi也许可能会针对“LLM选择合适的工具”这个环节微调出一个专用的模型。

那么,面对海量插件(应用)的时候,LLM选择工具的准确度也是竞争优势的一个重要维度

这和目前的安卓iOS应用生态,就截然不同了。不仅需要拼应用的生态丰富程度,还需要拼选择工具的准确程度。

从这个角度来看,先发者的优势可能会被进一步加强(可能这个生态的终局会是像搜索引擎一样82开,而不是手机操作系统的平分秋色)

从另一个角度来说,做大模型的公司一定是“大模型+应用”并重的。没有应用你就没有数据飞轮优势去改进后续的体验。

---

最后,如果本文对你有帮助,期望多多分享、点赞、在看~感谢~

最近也在考虑LLM领域的机会,如果你的公司在做LLM领域的工作,有产品的hc欢迎联系我。

其他LMM相关的投资创业也欢迎加我交流

———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99

1.站长不是项目作者,不对项目解答及盈亏负责。
2.本站所有项目来源于投稿或购买自其他第三方,若本站侵犯了您的权益请 联系站长 进行删除处理。
找项目网
找项目网 关注:0    粉丝:0
这个人很懒,什么都没写
扫一扫二维码分享
×
Dragon