Agent 处理流程
Agent 源于研究行为的强化学习,而大模型源于研究知识的深度学习
多数情况下认为 该系统中会存在下面的角色或名词
- 用户(另一个人)
- 上下文(记忆)
- 变量(记忆)
- 提示词(沟通方式)
- 工具(手臂)
- 大模型(大脑)
这个图将着重表现 Agent 的决策循环,这是其与普通 RAG 流程最主要的区别。
Agent 核心工作流示意图
各组成部分如何协同处理并组成一个完整的 Agent
Agent 的核心在于其“思考-行动”循环
(Thought-Action Loop)
,这使得它能够执行多步骤的任务,而不仅仅是单次问答。
-
用户 (User):
- 角色: Agent 任务的启动者,提出问题或需求。
- 协作方式: 通过自然语言向 Agent 发送请求。
-
Agent 启动:
- 角色: 接收用户请求,并将其初始化为 Agent 能够处理的内部状态。
- 协作方式: 接收用户输入,并与预定义的“初始提示词模板”结合,形成第一次给大模型的输入。
-
提示词 (Prompt Templates):
- 角色: 指导大模型行为的“指令书”。包含:
- 系统指令: 定义 Agent 的角色、目标、限制。
- 工具描述: 告诉大模型有哪些工具可用,每个工具的功能和输入输出格式。
- 思考框架: 指导大模型如何进行思维链 (CoT) 推理(例如,要求它先思考,再决定行动,再输出结果)。
- 协作方式: 作为大模型输入的一部分,预先定义了大模型在处理任务时的“规则”和“可选项”。它塑造了大模型的“人格”和“能力边界”。
- 角色: 指导大模型行为的“指令书”。包含:
-
上下文 (Context) / 记忆:
- 角色: 存储 Agent 的历史对话、检索到的信息、之前步骤的中间结果等。这是 Agent 的“短期”和“长期”记忆。
- 协作方式:
- 输入给大模型: 在每次循环中,大模型会参考上下文来理解当前任务的进展、用户之前的意图以及过去的行动。
- 被更新: 当工具执行后,其输出结果会被添加到上下文或更新相关变量,供下一次循环的大模型参考。这使得 Agent 能够进行多轮交互或多步骤推理。
-
变量 (Variables):
- 角色: 存储任务执行过程中产生的临时数据或特定状态信息,例如某个查询结果、计算中间值等。
- 协作方式: 类似于上下文,但通常更侧重于结构化的、临时的、用于具体计算或逻辑判断的数据,大模型会读取和写入这些变量。
-
大模型 (LLM):
- 角色: Agent 的“大脑”或“决策引擎”。它负责:
- 理解任务: 解析用户输入和当前上下文。
- 思考与推理: 根据提示词的指令,分析当前状态,规划下一步行动。
- 工具选择: 判断是否需要使用工具,并根据工具描述选择合适的工具。
- 工具输入构建: 根据任务需求,为选定的工具生成正确的输入参数。
- 答案生成: 当任务完成或无需工具时,生成最终答案。
- 中间思考: 输出自己的思考过程 (Thought),这对于调试和理解 Agent 行为非常有用。
- 协作方式:
- 接收: 接收用户输入、提示词、上下文和变量。
- 输出: 输出决策(使用哪个工具,工具的参数)、中间思考过程或最终答案。
- 角色: Agent 的“大脑”或“决策引擎”。它负责:
-
工具 (Tools):
- 角色: Agent 的“手臂”或“执行器”。它们是预定义的功能模块,用于执行大模型自身无法直接完成的任务,例如:
- 检索工具: 执行 RAG 过程,从知识库中检索信息。
- 代码解释器: 执行 Python 代码进行复杂计算、数据分析。
- 网络搜索: 获取最新信息。
- API 调用: 与外部服务交互(如日历、邮件、数据库)。
- 协作方式: 接收大模型生成的工具输入,执行特定操作,并将操作结果返回给 Agent(通常更新上下文和变量)。
- 角色: Agent 的“手臂”或“执行器”。它们是预定义的功能模块,用于执行大模型自身无法直接完成的任务,例如:
-
输出 (Output):
- 角色: Agent 任务执行完成后,向用户呈现的最终答案或结果。
- 协作方式: 大模型在决定直接回答后,将其生成的答案通过用户界面呈现给用户。
整体工作流程概述:
- 用户提出任务。
- Agent 启动: 将用户输入与预设的“提示词模板”结合,并结合当前的“上下文”和“变量”,形成一个完整的输入发送给大模型。
- 大模型思考与决策 (循环):
- 大模型接收输入后,根据其内置的逻辑和提示词的指导,进行“思考”。
- 它会判断完成当前任务是需要继续使用工具来获取更多信息/执行操作,还是已经可以直接生成最终答案。
- 如果需要工具: 大模型会根据任务需求和对工具的描述,选择合适的工具,并生成执行该工具所需的输入参数。这些参数通常会从上下文或变量中提取。
- 工具执行: 选定的工具被调用,执行其功能。
- 结果反馈: 工具执行的结果会返回给 Agent,并被用来更新“上下文”和“变量”。
- 循环: Agent 将更新后的“上下文”、“变量”以及工具执行结果再次反馈给大模型,大模型继续进行新一轮的“思考-行动”循环,直到任务完成。
- 如果直接回答: 当大模型判断任务已完成,或无需额外工具即可回答时,它会生成最终的答案。
- 用户输出: 最终答案被呈现给用户。
这个循环使得 Agent 具备了“自我规划”和“动态执行”的能力,能够处理比单一 LLM 问答更复杂的、多步骤的开放式任务。
注意:规划和执行是Agent
最为核心的能力