Agent 概念
在日常生活中不难发现 ChatGPT 通过文本输入进行处理后返回的也是文本内容,就像是一个只有头的人,能听能思考能说话,但是无法行动。而 Agent 是一种能够自主决策、采取行动以达到某种目标的实体。被解释为"智能体"或者"代理"。
实际上,人类是这个星球上最强大的 Agent。Agent 是一个能感知并自主地采取行动的实体,这里的自主性极其关键,Agent 要能够实现设定的目标,其中包括具备学习和获取知识的能力以提高自身性能。Agent 的复杂程度各不相同,一个简单的恒温器可以是一个 Agent,一个大型的国家或者一个生物群体也可能是个 Agent。感知环境、自主决策、具备行动能力,设定明确的目标和任务,适应环境及学习能力,都是 Agent 的关键特点。
有人认为 Agent 技术是未来实现社会全面自动化的关键技术。
基于认知飞轮的 Agent
认知飞轮是指一个人通过不断学习、思考和实践,不断提升自己的认知能力,从而形成一个良性循环的过程。就像一个飞轮一样,开始的时候可能需要花费很多力气去推动它转动,但一旦转动起来,就会越来越快,带动个人认知能力的不断增长。人的行为过程主要由人对环境信息的获取、感知、处理和输出组成,即感知、认知、决策、行动的过程。我们思考一个问题,做一件事,开展一个项目,都需完成这个认知飞轮。简单来说,认知飞轮就是通过不断学习和思考,让自己的认知水平不断提升,并且这种提升会越来越快,形成一个良性循环。
众人熟知的认知飞轮,感知、认知、决策、行动,今天的人工智能代理更像是基于这个认知飞轮构建的。但是从本质上,人类智能远比这复杂。
在认知飞轮的框架下,Agent 可以通过不断地获取信息、分析数据、做出决策并执行行动来改善自身的认知能力。这种循环过程与认知飞轮中的学习、应用、评估和调整的环节相对应,从而使 Agent 能够不断地提升自身的智能水平。
下一代智能体发展的三大关键领域:规划、用户体验和记忆
规划是指 AI 智能体能够预先考虑多个步骤,并确定最佳行动方案的能力。目前,语言模型的规划能力还比较有限,主要依靠以下两种方法来加强:
- 外部提示策略:开发者通过设计特定的提示,引导语言模型进行规划。例如,可以要求模型在执行每个步骤之前,先列出所有可能的步骤并进行评估。
- 流程工程:通过设计预定义的流程图或状态机,将任务分解成多个步骤,并明确每个步骤的执行条件和顺序。这可以帮助语言模型更好地理解任务,并做出更合理的规划。未来,随着语言模型能力的提升,它们或许能够自主进行更有效的规划,而不再需要外部提示或流程工程的辅助。
目前,AI 智能体的用户体验仍有许多需要改进的地方,例如:
- 可靠性不足:由于语言模型的局限性,AI 智能体有时会犯错或无法理解用户的指令。这可能会导致用户感到沮丧和困惑。
- 可控性不足:用户往往无法完全控制 AI 智能体的行为,这可能会导致一些意外的后果。
- 缺乏个性化:现有的 AI 智能体大多缺乏个性化,无法根据用户的特定需求和偏好进行调整。
记忆是指 AI 智能体存储和使用信息的能力。记忆对于 AI 智能体完成各种任务都至关重要,例如:
- 程序记忆:记忆如何正确地执行任务,例如如何预订机票或如何撰写电子邮件。
- 个性化记忆:记忆与特定用户相关的信息,例如用户的姓名、喜好、经历等。目前,AI 智能体的记忆功能还比较简单,主要依靠以下两种方式实现:存储在数据库中:将信息存储在外部数据库中,并在需要时进行检索。嵌入语言模型中:将信息嵌入语言模型的参数中,使模型能够在生成文本时使用这些信息。
LangChain 中的 Agent 概念
代理的核心思想是通过大模型来选择要采取的一系列行动。在常规结构下,一系列行动都是硬编码,是已规定好的行为路线,而在代理中,是用大模型作为推理引擎来确定并采取行动的。通俗的讲就是给大模型配备工具,让大模型自己去判断在当前场景需要使用什么工具。
代理的效果与模型的智慧程度有关,大模型的训练集越大,代理的效果越好,差的模型进行代理会陷入某一个自问自答而死循环,好的模型会进行自我验证,验证这个答案是否与最初的问题相关,不相关进行修正。
举个例子:
链式结构:我会拿着螺丝刀去拧螺丝,拿着钥匙开锁,拿着斧头砍木头。我不会选择工具,而是按照规划的路线行动。也就是写死的逻辑,场景都是被预定好的,一旦遇到新的场景或者问题可能就会出现不理想的结果。
代理情况:我有螺丝刀,钥匙,斧头等工具,我遇到了一颗螺丝,我会用螺丝刀去拧螺丝。遇到了一把锁,我会用钥匙去开锁,遇到了木头,我会用斧头去砍木头。在不同的场景或者问题下会进行推理选择。工具与问题之间是没有直接的代码逻辑进行联系的。
总而言之:Agent = LLM(思考决策)+ prompt(思维链) + memory(记忆)+ tools(执行)
AgentType 对应一个 Agent class,对应一个 prompt(又是 prompt 起了关键作用),AgentType 有以下几种选择:
- zero-shot ReAct,完全依靠对所用到的 tools 的说明书来理解和使用 tools,理论上支持无限多个。
- Structured tool chat,跟第一个不同的地方在于接收一个结构化的 dict 作为参数且能记住上下文。


