用 LangChain 构建基于资料库的问答机器人(三):ReAct

大家好,我是 Jambo。我们已经学习了如何使用 LangChain 的一些基本功能,解下我们就应该要结合这些功能来做一些复杂的东西了。但在这之前,为了让同学们更好的理解 LangChain 在这其中做了什么,我想先介绍一下关于 GPT 使用方面的一些知识。

在 ChatGPT 开放之初,除了各大公司在 AI 算法方面竞争,还有许多人在研究如何仅通过修改 prompt 就能让 GPT-3 做出更好的回答,这种方法被称为"提示工程(Prompt Engineering)"。如果把 LLM 比喻成一个拥有一般常识的大脑,那么提示工程就是在教它如何思考,从而更有效的结合知识得出答案。像 AutoGPT 就是这样,他通过精心设计的 prompt,就能让 GPT-4 自行完成各种任务。为了让同学们了解这其中的思想,我们先从"思维链"开始介绍。

思维链(Chain of Thought)

思维链(Chain of Thought)在 ChatGPT 推出后不久就被提出,具体来说就是通过手动编写示例的方式让 GPT-3 将问题的思考过程也生成出来,通过这种方式 GPT-3 回答的效果会有大幅提升。就像我们在写比较复杂的计算题,将过程一步一步写出来的正确率会比直接写出答案要高。

后来有人发现,只需要加上 "Let's think step by step." 这一魔法提示,就能达到一样的效果,还不需要写示例。并且他还在这基础上,额外让 GPT 根据它前面附带思考过程的回答,再总结出一个更简洁的答案,相当于把思考过程隐藏起来。

我这里想强调的是,我们用 LLM 构建应用时,完全可以在输出最终答案前多次用 LLM 分析、拆解、解决问题。就像深度学习网络中的介于输入和输出之间的隐藏层,我们可以在这里加入更多的逻辑,让 LLM 能够更好的理解问题,从而得出更好的答案。

ReAct

无论我们如何调整 prompt,但 LLM 仍然存在一个重大缺陷:它始终基于训练时的数据集和 prompt 中提供的信息生成回答。如果提问有关天气、新闻或内部文件等问题,LLM 将无法回答或会产生虚假回答("幻觉")。

当然,我们可以在用户提出问题后,先使用搜索引擎或内部资料库来搜索问题,然后将搜索结果作为 prompt 的一部分。但在实际应用中,这种方法的效果并不总是好的,甚至在某些情况下会产生误导。例如,如果我们想让 LLM 帮助我们修改一篇文章,在这种流程下,程序会首先使用搜索引擎搜索文章,但很可能搜索不到相关结果。这样一来,LLM 就会直接罢工,因为我们通常要求 LLM 仅根据 prompt 提供的信息生成内容,以确保准确性。

为了解决这个问题,我们可以让 LLM 自己决定是否要进行搜索,要搜索什么内容,就和上一篇教程中提到的用 LLM 优化搜索语句一样。于是 ReAct 系统就被提出来了,通过 prompt 中的示例告诉 LLM 可以使用哪些工具,然后让 LLM 自己决定是否要使用这些工具,以及如何使用这些工具。ReAct 总共有三个部分:

  1. 思考:根据当前的信息思考需要做什么动作。
  2. 行动:根据思考结果做出相应的行动,如调用工具。程序可以分析这一步生成的字符串,来调用相应的工具,类似 Python 的 eval 函数。
  3. 观察:存放行动的结果,如搜索的内容,以便下一次思考时使用。

这三个步骤会不断循环,直到思考步骤判断已经找到答案,并在下面的行动中给出最终答案。

其实你仔细回想一下,这个过程和我们人类思考的过程是类似的。我们在思考时,会根据当前的信息判断是否需要做出某些行动,然后根据行动的结果来判断是否已经找到答案,如果没有就继续思考,直到找到答案为止。

AutoGPT 的行为模式实际上和 ReAct 一样,只是相比提出 ReAct 的论文中的步骤,AutoGPT 的 prompt 更加详细,并且提供了更多的工具给 LLM 使用。但不管哪种方式,都需要编写大量的示例来告诉 LLM 如何思考、行动,并且根据提供工具的不同,效果也会有所不同,并且 ReAct 的思考流程会有很多步骤。而 LangChain 帮我们把这些步骤都隐藏起来了,将这一系列动作都封装成 "代理",而这就是我们下一章要介绍的内容了。

上一篇:用 LangChain 构建基于资料库的问答机器人(二):从资料源中提取文本信息

相关推荐
青山是哪个青山1 小时前
LangChain 学习笔记(四):Message 与提示词模板
笔记·学习·langchain
M-Robots echo4 小时前
M-CLAW,面向具身智能的机器人任务编排开发框架
机器人·ros·鸿蒙·开源社区·m-robots
Axis tech5 小时前
无标记点动作捕捉 vs 惯性动作捕捉:专业从业者需要了解这些要点
科技·机器人
JaydenAI5 小时前
[基于OpenEvals的自动化评估-10]针对Agent对话的评估[上篇]
ai·langchain·agent·evaluation·openevals
M-Robots echo6 小时前
王成录:机器人产业下一个十年,拼的是 “系统级智能化” 而非单点算法堆叠
机器人·ros·鸿蒙·开源社区·m-robots·王成录
leagsoft_100311 小时前
浙江某机器人创新企业:一体化终端、数据与身份安全实践
安全·机器人
M-Robots echo12 小时前
M-Robots ROS 兼容适配方案,实现存量机器人项目低成本迁移
机器人·ros·鸿蒙·开源社区·m-robots
FlyWIHTSKY13 小时前
在智能体系统中,什么是多模态,举例详细说明
人工智能·python·langchain
拓维运动科技14 小时前
机器人动态模拟训练台:从并联机构原理到工程化落地的技术全解
机器人·六自由度运动模拟平台·六自由度定制厂家·南京拓维运动科技·机器人动态模拟训练平台
JaydenAI14 小时前
[基于OpenEvals的自动化评估-16]自动模拟多轮对话实施评估
ai·langchain·agent·evaluation·openevals