课程地址
Agent介绍
- AI Agent(人工智能代理、AI智能体),一种模拟人类智能行为的人工智能系统,以大模型语言(LLM)作为其核心规划决策引擎,能够感知环境,做出决策,执行任务实现特定的目标。
原理
- Agents=LLM+memory+planning skills+tool use即大语言模型、记忆、任务规划、工具使用的集合。
架构
- 感知是Agent理解周遭世界的第一道工序。
吴恩达的AlAgents设计模式: - 感知(Perception):Agent通过感知系统从环境中收集信息,这这些信息可以是文本、图像、声音等多种形式。
- 规划(Planning):对问题进行拆解得到解决路径,既进行任务规划,类似于思维链,分解复杂任务,找到路径;
- 使用工具(Tool Use):评估所需的工具,进行工具选择并生成调用工具请求,这些行动可能是物理的,如机器人的移动,也可能是虚拟的,如软件系统的数据处理,我电脑里面的未归档文件做好归档;
- 协作(Multiagent Collaboration):多Agent,不同类型的助理(agent),可以通过协作组成一个团队或一家公司。
- 记忆(memory):短期记忆包括提示词上下文,工具的返回值,已经完成的推理路径;长期记忆包括可访问的外部长期存储,例如RAG知识库。
任务规划
- 子目标和拆解(Subgoal and decompositon):在处理复杂问题时,采用分治思想,将复杂问题拆分为多个并行或串行的小任务处理,从而提升处理复杂问题的能力。
- 反思和完善(Reflection and refinement):Agent能够对过去的行为决策进行自我反思,完善过去的行动决策和纠正以前的错误来迭代改进。
记忆
- 记忆可以定义为用于获取、存储、保留以及随后检索信息的过程。
- 短期记忆:多轮对话的上下文窗口、受到Transformer有限上下文窗口长度的限制。短期记忆理想情况只保留大模型能偶处理的上下文窗口的上线,如果使先进先出的模式,则只保留最近的几次对话内容。
- 长期记忆:可以立即为外置知识库,在Agent处理任务的过程中作为额外检索数据的地方。
工具使用
- 尽管大模型在预训练阶段学了大量知识,但是还存在只能说,不能做的缺陷。
- Agent对于工具的使用就是弥补大模型只说不做的缺陷。
- Agent可以调用外部API来获取模型权重中缺失的外部信息,包括当前时间,地理位置信息、代码执行能力、对专有知识库的访问。
- Agent的工作机制
- 接收任务:用户提交任务给Agent
- 组装提示词:Agent接受用户提交的任务后,对输入的信息进行架构处理合并为最终的prompt。
- 与大语言模型的区别:Agent 将处理后的prompt 提交给LLM,拿到下一步需要执行的动作和思考过程。
- 循环执行:Agent会执行LLM返回的Action、观察评估结果、获取下一步Action。执行的工程中会自主的判断是否需要使用工具来处理Action或者获取额外的信息。
程序开发范式的变化
本质上,所有的Agent设计模式都是将人类的思维、管理模式以结构化提示词的方式告诉大模型来进行规划,并调用工具执行,且不断选代的方法。从这个角度来说,Agent设计模式很像传统意义上的程序开发范式,但是泛化和场景通用性远大于传统的程序开发范式。在Agent设计模式中,Prompt可以类比为Python这类高级编程语言,大模型可以类比于程序语言编译&解释器
大模型时代,Alagent编程给IT行业带来的革命性的改变:
- 传统编程语言时代:以Java、C++、Rust等语言为典型代表,这个时代的软件开发最重要的一件事就是"抽象建模”
产品经理或者技术经理需要深刻地理解现实世界的业务场景和业务需求,然后将业务需求转化为逻辑流和数据流的处理逻辑,用编程语言进行抽象描述,并且明确定义输入和输出的字段和格式。然后将软件代码运行在一定的VM平台上,通过简单易用的UI交互向终端用户提供产品价值。 - ML/DL编程时代:在传统编程时代,程序员们遇到了一个棘手的问题,就是当面对一些超高维的复杂问题(例如图像识别、长文本处理)的时候,传统的if-else逻辑范式几乎无法解决此类问题。直到出现神经网络技术之后,程序员们可以通过训练一个神经网络(相当于开发一个程序)处理图像/文本问题。
- 但是在这个范式中,现实世界的业务场景和软件代码的逻辑之间依然存在非常巨大的鸿沟,建模、UML流程图这些传统编程中必不可少的步骤依然阻碍了软件的大规模应用。
- AlAgent编程时代:进入大模型编程时代,现实世界和软件逻辑世界的鸿沟被无限缩短,原本用于描述和表征现实世界的自然语言、图片、音频等模态语言,可以直接以代码的形态,被大模型这种新型的程序解释器解释并执行。
- 在AlAgent编程时代,改变的是建模范式,不变的是数据流和逻辑流。
Agent开发注意事项
- Agent的规划能力依赖于prompt工程能力,它比想象中更重要、执行起来也更琐碎。
- LLM的数学、逻辑推理能力在COT的基础上也仅能勉强达到及格水平,所以不要让Agent一次性做复杂的推理性规划工作,而是把复杂任务人工拆解后再教给Agent。该论点随着基模的逐步发展和强大可能逐步重要性降低。
- Agent 的 Action 能力强烈依赖于基座模型的 function calling 能力。
- 在规划Agent之前,对模型的function calling能力要充分调研。
- Agent的记忆力分为短期记忆和长期记忆。
- 短期记忆由prompt负责(in-context learning),类似 Plan and resolve 模式中的"碎碎念",告诉Agent已完成事项和原始目标。
- 在长期记忆中,事实性记忆用RAG实现(外部知识库),程序性记忆可用微调或者增量预训练实现(向模型中注入知识)。
- Agent的反思能力依赖于它的记忆能力。
- 用一张图来表示,其中绿色代表对Agent开发友好,红色代表对Agent应用开发有一些难以逾越的阻碍因素,需要靠产品降级来解决。