LangChain学习之代理Agent

92 阅读2分钟

代理的提出是要解决大模型无法主动更新自己的知识,导致出现事实幻觉的问题,尽管思维链(CoT)能够使LLMs具备执行推理轨迹的能力。我们对模型有更进一步的期望,需要模型能够做出自主判断、自行调用工具、自行决定下一步行动的时间点,代理应运而生(Agent)。

在LangChain框架中代理重要的三元素分别是,大模型:提供逻辑的引擎;与之交互的外部工具:可能包括搜索引擎等;控制交互的代理:调用外部工具,管理交互过程

image.png

了解了主要的三个要素,我们从最经典的代理类型ReAct切入,进一步了解代理的工作机制。具体来说,就是代理来引导模型生成一个任务解决轨迹:观察环境-进行思考-采取行动,也就是观察-思考-行动。那么,再进一步进行简化,就变成了推理-行动,也就是Reasoning-Acting框架。其中,Reasoning包括了对当前环境和状态的观察,并生成推理轨迹。这使模型能够诱导、跟踪和更新操作计划,甚至处理异常情况。Acting在于指导大模型采取下一步的行动,比如与外部源(如知识库或环境)进行交互并且收集信息,或者给出最终答案。

ReAct的每一个推理过程都会被详细记录在案,这也改善大模型解决问题时的可解释性和可信度,而且这个框架在各种语言和决策任务中都得到了很好的效果。

我们对ReAct框架下定义,ReAct是如何指导大模型推理和行动的一种思维框架。其关键在于大语言模型可以通过生成推理痕迹和任务特定行动来实现更大的协同作用

说到这,我们可以理解体会到了一点大模型应用开发的核心理念:操作的序列并非硬编码在代码中,而是使用语言模型(如GPT-3或GPT-4)来选择执行的操作序列

image.png

再进一步探讨LangChain框架下代理的关键组件:代理,决定下一步执行什么操作;工具,代理调用的函数;工具包,一组用于完成特定目标的彼此相关的工具;代理执行器,代理的运行环境,调用代理并执行代理选择的操作。这一部分结合示例代码进行学习。

另外就是一些其他的代理类型,结构化工具对话代理,允许更复杂、多方面的交互;自主询问搜索代理,适用于解决多跳问题;以及计划与执行代理。