产品经理解析:如何教会大模型使用工具?

导语|“大家或许会高估了模型的能力,低估了工程落地可用的难度。”

本文作者:edmondgeng,腾讯PCG产品经理

引言

对于大模型是如何训练生成的问题,相信大家对其背后原理以及训练方式已研究颇多,司内也有很多同学从专业的视角撰写了很多深度好文进行分享,让人受益颇多,例如:《用人话详解语言大模型》

但在我结合业务落地实践过程中,发现只运用大模型本身能力是不够的。真正有效的落地方案,要思考自身业务优势场景,也要结合业务边界约束条件,这样才能实现对业务价值最大化,这是重点也是难点。

在上述场景中结合大模型落地应用,会有各种各样的问题,从产品视角可将问题抽象总结为三个方面:无法结合外部数据、无法结合上下文记忆、无法调用外部工具

当然,太阳底下没有新鲜事,上述问题都是业内探索广泛遇到的,本文将聚焦在解决”无法调用外部工具“的问题上,将学习总结到的方案,以产品视角用综述方式总结分享。

1. 问题研究意义

举个例子:如果把大模型比喻成一个全能人类,它可以口述历史、翻译多国语言、谈笑风声。但如果你饿了让它为你做一顿可口的饭菜,抱歉它最多只能帮你口述菜谱,因为它没有、也不会使用燃气灶、高压锅。

让模型学会外部工具的意义也在于此,只利用模型本身能力落地应用终究空间有限,也无法结合业务本身,只有结合外部工具,才能更好的链接业务目标,发挥更大价值。

2. 业内解决方案

将“如何让大模型调用外部工具?”问题进行拆解,可分为三个环节 :1)大模型如何进行意图识别,分解指令、2)大模型如何将拆解出的指令,找到对应的工具、3)大模型如何学会使用对应的工具

目前领域内:LangChain、Toolformer、HuggingGPT、AutoGPT、BabyAGI 皆对上述拆解的三个环节或其中一环提出了相应解决方案。

2.1 LangChain

LangChain是一个用于开发大语言模型的应用程序框架,全面且强大,具有很多组件,可以解决很多在应用落地时遇到的问题,如:模型(Models)、提示(Prompts)、索引(Indexes)、存储(Memory)、链(Chains)和代理(Agents),其中Agents就是去解决调用外部工具问题的。

简述其实现原理为:

1)先基于用户需求,将Prompt拆解成不同任务

2)在基于任务去寻找适合的工具,并调用工具生成结果。(这里会也会告诉大模型工具API文档,这样大模型可以根据API文档正确调用工具)

3)最后对结果进行整合

上述对LangChain 使用Agent 调用外部工具的流程进行了简化

2.2 Toolformer

Toolformer 是由meta ai提出的一个经过微调的模型,和LangChain思路有相似之处,主要的思想是通过构建一个自监督的方法,教大模型学会自己调用API,并省去大量的标注工作。

通过引入Toolformer,模型可以学会哪些任务需要调用工具、这些工具对应的API是什么、以及API参数正确的组装方式是什么,从而解决大模型无法调用外部工具的问题。

这个过程主要分为三个环节:API调用采样、API调用执行、API过滤;

1)API调用取样

对于每一个API先编写一个Prompt。这部分目的是让模型分析,用户输入的文本指令中,哪些部分需要调用工具以及何种工具,并将需要调用的API插入对应的位置。

(论文中示例:问答系统生成API调用的Prompt)

2)API调用执行

根据上一步的任务,去执行所有的API调用,反回文本序列并插入到对应位置。

3)API过滤

通过算法计算出插入的API调用,哪些是真正有用的,哪些是无用的,最后只保留有用的部分。

(论文中示例:输出结果)

2.3 HuggingGPT

HuggingGPT是由浙江大学和微软亚研的研究者提出的一种让 LLM 充当控制器的新方法,让 LLM 使用语言作为通用接口,来管理现有的 AI 模型以解决复杂的 AI 任务的框架。

(原理图-引自论文)

简化的描述就是,HuggingGPT 一端连接着ChatGPT,一端连接着众多领域专精的AI模型,当用户输入自然语言时,可结合ChatGPT将用户的意图拆解,并按需调用对应意图的AI模型,最后再结合生成结果,框架主要流程如下:

1)任务规划

ChatGPT 等 LLM 首先对用户请求进行解析,进行任务分解,并根据其知识规划任务顺序和依赖关系;

2)模型选择

LLM 将解析后的任务分配给专家模型;

3)任务执行

专家模型在推理端点上执行分配到的任务,并将执行信息和推理结果记录到 LLM;

4)响应生成 LLM 对执行过程日志和推理结果进行汇总,并将汇总结果返回给用户。

(工作流程-引自论文)

2.4 Baby AGI

Baby AGI 是一个基于 OpenAI 的 GPT-3.5 或 GPT-4 语言模型构建的 Python 脚本。它接收目标和任务作为输入,并积极地尝试完成这些任务。此外,它还能根据已有目标和完成任务的结果生成新任务,并重新设置任务列表的优先级顺序。

系统的核心理念在于利用先前任务的成果和预设目标来创建任务。然后,它使用GPT按照这些目标生成新任务,并使用 Pinecone(一种存储和检索大量数据的程序)来存储和获取任务结果的上下文,以便帮助模型记住它执行过的操作和将要执行的任务。

Baby AGI 的核心流程遵循以下三个关键步骤,这些步骤与其他类似产品的解决方案有许多相似之处:

1)根据需求拆分任务

2)为任务分配优先级

3)执行任务并整合成果

(核心流程-引自Baby AGI GitHub)

2.5 Auto GPT

实际上,AutoGPT 仍然运用了 GPT 作为其背后的大型语言模型来提供支持。简化来讲,AutoGPT 的工作原理是将用户的自然语言需求转化为一个特定的 Prompt。

然而,这个 Prompt 的目的不是直接生成结果,而是对用户需求进行任务拆解和计划制定。之后,拆解得到的任务和制定的计划将作为新的 Prompt 输入系统。在每个任务和计划的执行过程中,系统会寻找合适的工具并持续循环,直至成功解决问题。

(原理-简化版)

它主要包括三个部分:需求下发、自主运行和结果输出。其中,自主运行是 AutoGPT 的核心模块,它具有如下几个步骤:

1)任务定义

用户通过 Prompt 向 ChatGPT 下发任务。初次下发的任务需包含用户名(Name)、角色(Role)和目标(Goals)。在后续的对话中,ChatGPT 将根据执行结果自动生成新的 Prompt。

2)任务理解

ChatGPT 通过大模型对下发的 Prompt 进行语义理解。这个过程模仿了人类在接收任务时的思考过程,在 AutoGPT 中称为 "Thinking"。

3)方案生成

基于对任务的理解,ChatGPT 输出一个详细的、逐步的解决方案。这部分对应 AutoGPT 中的 "Plan" 环节。

4)指令生成

ChatGPT 对生成的方案进行逻辑判断,选出优先执行的步骤,并生成可执行的操作或指令。这部分在 AutoGPT 中被称为 "Criticism"。生成的指令包括命令和参数,例如浏览某个网站的指令。

这个步骤是 AutoGPT 的核心之一,因为它为 GPT 提供了内置动作和参数的能力,如搜索关键字、抓取网页数据、进行文本数据分析以及文件读写等操作。这让 GPT 具备了联网、记忆等能力。

5)指令执行

AutoGPT 根据生成的指令执行任务,可能涉及访问网站、解析网站、爬取数据和执行电脑指令等操作。此外,它还可以调用 ChatGPT 资源来完成编写代码等任务。

6)结果输出

当指令执行完成后,AutoGPT 将返回执行结果,如网站页面解析结果或数据分析结果等。

7)结果评估

在执行任务后,AI 将对执行结果进行评估,以确定是否达到预期目标或是否需要做出进一步调整。这一评估过程有助于 AI 了解其行动的有效性并做出必要的优化。

需要注意的是,GPT 返回的不再是简单的文本信息,而是一个具有标准 JSON 结构的数据。这种数据结构使得 AutoGPT 能够自主执行任务,体现了其独特的思路精华。

系统将持续循环执行以上过程,直到达到用户定义的所有目标。以上流程描述了 AutoGPT 的整个运行流程。

3. 外部工具使用局限

3.1 工具范围的有限性

上述多种解决方案,所能连接的工具都是有限的,我思考主要受限于几个原因:

1)受限于实现原理

上述方案从实现方式上来看,还是Prompt工程的一部分,随着工具越来越多,会受于上下文token数量的限制;

2)受限于成本

token数量的增加,也会相应的提高成本,如何利用外部工具+多轮对话,对业务侧平衡成本和用户体验也是一个考验;

3)受限于生态发展

大模型刚刚发展,生态的构建也刚刚开始发展,如何让接入的工具方赚钱,如何让更多工具加入被调用的工具list,在模型方、工具方、用户,这三边市场中还没有形成明确的商业模型。

3.2 任务实现的准确性

产生“幻觉”即一本正经的乱回答,仍然是大模型需要解决的问题。虽然GPT-4发布后,已经大大降低了产生幻觉的概率,但仍常有发生。

从准确性和用户价值关系的角度思考:往往越复杂任务(多重任务),越贴近用户真实需求场景,带给用户的价值越高,但实际上任务准确性可能会越低。真正发挥最大化的价值,可能还有一段路要走。

4. 站在业务侧角度的思考

以下两个问题本次不做详细展开,仅阐述部分观点&思路,持续研究大半年以来也有很多思考,给自己挖个坑,后续单独成文进行分享。也欢迎大家随时找我讨论。

1)如何更好的利用大模型结合业务落地,提高产品和用户/客户价值?

  • 用户:找到真正的用户/客户需求
  • 产品:明确自己产品和业务在大模型时代下真正的优势与劣势
  • 技术:对技术保持自己的感悟和判断力,不要因为对技术的不了解和过于了解,限制自己的想象力。

2)大模型若发展成为平台或操作系统,当前业务产品如何更好融入大模型平台,要如何提前准备,如何构建自己的优势?

5. 参考资料

5.1 科研论文

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

Toolformer: Language Models Can Teach Themselves to Use Tools

Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

5.2 技术文章

用人话详解语言大模型

5.3 其他内容

LangChain GitHub 地址

Baby AGI GitHub 地址

Baby AGI 网站

Auto GPT GitHub 地址

Auto GPT工作原理解析


【技术人说】科普对谈,技术没有那么难~

快快预约,鹅厂技术大咖在直播间等你💪

往期文章:

AI热潮下,一名普通美术师的应对

一文入门数据产品

AGI近未来:见证、记录与思考

详解|LLM对程序员的冲击和影响

用ChatGPT帮你写产品文档

点个关注,下期再见👋