diff --git a/docs/chapter7/7.4 Agent.md b/docs/chapter7/7.4 Agent.md index 3e61c67..1972e3a 100644 --- a/docs/chapter7/7.4 Agent.md +++ b/docs/chapter7/7.4 Agent.md @@ -2,38 +2,43 @@ ## 7.4.1 什么是 LLM Agent? -LLM Agent,即基于大型语言模型(LLM)构建的智能代理,是一种能够自主进行推理、规划、行动并与环境交互的 AI 系统. 与传统的聊天机器人不同,LLM Agent 具备独立决策能力,能够利用各种工具,记住之前的交互信息,并执行复杂的任务流程,而这一切只需要最少的人工干预. 这种自主性使得 LLM Agent 非常适合处理需要多步骤推理和规划、与 API 和工具进行实时交互、感知环境变化并做出适应以及在不确定性下自主执行的任务。 +简单来说,大模型Agent是一个以LLM为核心“大脑”,并赋予其自主规划、记忆和使用工具能力的系统。 它不再仅仅是被动地响应用户的提示(Prompt),而是能够: -例如,当用户提出“在中国合同违约可能有哪些法律后果?”这样的问题时,一个 LLM Agent 可以自主地完成以下步骤:搜索法律数据库,提取相关信息,总结案例,并最终呈现潜在的法律结果,而无需人工的逐步指导。 +1. 理解目标(Goal Understanding): 接收一个相对复杂或高层次的目标(例如,“帮我规划一个周末去北京的旅游行程并预订机票酒店”)。 +2. 自主规划(Planning): 将大目标分解成一系列可执行的小步骤(例如,“搜索北京景点”、“查询天气”、“比较机票价格”、“查找合适的酒店”、“调用预订API”等)。 +3. 记忆(Memory): 拥有短期记忆(记住当前任务的上下文)和长期记忆(从过去的交互或外部知识库中学习和检索信息)。 +4. 工具使用(Tool Use): 调用外部API、插件或代码执行环境来获取信息(如搜索引擎、数据库)、执行操作(如发送邮件、预订服务)或进行计算。 +5. 反思与迭代(Reflection & Iteration): (在更高级的Agent中)能够评估自己的行为和结果,从中学习并调整后续计划。 -LLM Agent 的核心在于其能够像人类一样进行“链式思考”推理,理解问题解决的原理,并将复杂的任务分解为更小、更简单的步骤. 这种能力是通过提示模型逐步思考来实现的,并且可以通过让模型回顾自身过去的行动并纠正错误来进行改进。 +传统的LLM像一个知识渊博但只能纸上谈兵的图书馆员,而 LLM Agent 则更像一个全能的私人助理,不仅懂得多,还能跑腿办事,甚至能主动思考最优方案。 -一个设计完善的 LLM Agent 通常由四个关键模块组成: - -- 大脑(核心 LLM): 作为中央决策者,负责执行推理、规划和语言生成。  -- 记忆: 用于存储和检索信息的模块,帮助 Agent 记住之前的交互和决策。 -- 感知: 将输入(文本、图像、音频)转换为可理解的格式,使 Agent 能够观察和解释环境。   -- 行动: 通过调用 API、与工具交互或生成文本/代码来执行决策,有时也包括具身行动(例如,在机器人具身只能技术中) +![Agent 工作原理](./images/7-4-Agent工作原理.png) LLM Agent 通过将大型语言模型的强大语言理解和生成能力与规划、记忆和工具使用等关键模块相结合,实现了超越传统大模型的自主性和复杂任务处理能力,这种能力使得 LLM Agent 在许多垂直领域(如法律、医疗、金融等)都具有广泛的应用潜力。 ## 7.4.2 LLM Agent 的类型 -LLM Agent 可以根据其功能、设计和应用场景进行多种分类. 以下是一些常见的类型: +虽然LLM Agent的概念还在快速发展中,但根据其设计理念和能力侧重,我们可以大致将其分为几类: -- 对话型 Agent (Conversational Agents): 这些 Agent 旨在与用户进行自然的对话,提供信息、回答问题并协助完成各种任务。它们依赖 LLM 来理解和生成类似人类的响应,例如客户支持聊天机器人和医疗保健聊天机器人. -  -- 任务型 Agent (Task-Oriented Agents): 这些 Agent 专注于执行特定的任务或实现预定义的目标。它们与用户交互以理解需求,然后执行操作以满足这些需求,例如 AI 助手和 HR 机器人. 任务型 Agent 能够分解复杂的目标,制定行动计划,并利用工具来完成任务. 它们通常用于自动化重复性工作流程,提高生产力.   +任务导向型Agent(Task-Oriented Agents): +- 特点: 专注于完成特定领域的、定义明确的任务,例如客户服务、代码生成、数据分析等。 +- 工作方式: 通常有预设的流程和可调用的特定工具集。LLM主要负责理解用户意图、填充任务槽位、生成回应或调用合适- 的工具。 +- 例子: 专门用于预订餐厅的聊天机器人、辅助编程的代码助手(如GitHub Copilot在某些高级功能上体现了Agent特性)。 -- 创造型 Agent (Creative Agents): 这些 Agent 能够生成原创和创造性的内容,如艺术品、音乐或写作。它们使用 LLM 来理解人类的偏好和艺术风格,从而产生能引起受众共鸣的内容,例如内容生成工具和图像生成工具. -  -- 协作型 Agent (Collaborative Agents): 这些 Agent 与人类或其他 AI 协同工作以完成共同的目标或任务,促进团队成员之间或人机之间的沟通、协调与合作。LLM 可以通过协助决策、生成报告或提供见解来支持协作型 Agent,例如企业 AI Agent 和项目管理聊天机器人.   +规划与推理型Agent(Planning & Reasoning Agents): +- 特点: 强调自主分解复杂任务、制定多步计划,并根据环境反馈进行调整的能力。它们通常需要更强的推理能力。 +- 工作方式: 常采用特定的思维框架,如ReAct (Reason+Act),让模型先进行“思考”(Reasoning)分析当前情况和所需行动,然后执行“行动”(Action)调用工具,再根据工具返回结果进行下一轮思考。Chain-of-Thought (CoT) 等提示工程技术也是其推理的基础。 +- 例子: 需要整合网络搜索、计算器、数据库查询等多种工具来回答复杂问题的研究型Agent,或者能够自主完成“写一篇关于XX主题的报告,并配上相关数据图表”这类任务的Agent。 -- 多模态 Agent (Multimodal Agents): 这些 Agent 不仅限于文本,还可以处理和生成各种格式的内容,包括音频、图像和视频。这种能力实现了更丰富和更具沉浸感的交互,例如能够解释视觉数据或根据文本描述生成图像的虚拟助手. -  -- 自主型 Agent (Autonomous Agents): 这些 Agent 被设计为以最少的人工干预运行,能够独立做出决策并执行操作。它们通常用于需要持续运行的环境中,例如处理重复性业务流程的机器人流程自动化机器人.   - -- 多 Agent 系统 (Multi-Agent Systems): 这些系统涉及多个 LLM Agent 协同工作,通过利用各种专业 Agent 的优势来处理复杂的任务。它们相互通信和协调以实现共同目标,例如一个 Agent 收集数据,另一个分析数据,第三个根据分析生成报告.   - -- 规则型 Agent (Rule-Based Agents): 这些 Agent 基于预定义的算法和严格的协议运行。它们遵循确定性原则,即某些输入会导致基于既定规则的特定响应。这些 Agent 在需要一致输出的情况下非常有效,例如客户支持或故障排除指南。然而,规则型 Agent 缺乏灵活性,难以处理超出其编程规则的情况.   +多Agent系统(Multi-Agent Systems): +- 特点: 由多个具有不同角色或能力的Agent协同工作,共同完成一个更宏大的目标。 +- 工作方式: Agent之间可以进行通信、协作、辩论甚至竞争。例如,一个Agent负责规划,一个负责执行,一个负责审查。 +- 例子: 模拟软件开发团队(产品经理Agent、程序员Agent、测试员Agent)来自动生成和测试代码;模拟一个公司组织结构来完成商业策划。AutoGen、ChatDev等框架支持这类系统的构建。 + +探索与学习型Agent(Exploration & Learning Agents): +- 特点: 这类Agent不仅执行任务,还能在与环境的交互中主动学习新知识、新技能或优化自身策略,类似于强化学习中的Agent概念。 +- 工作方式: 可能包含更复杂的记忆和反思机制,能够根据成功或失败的经验调整未来的规划和行动。 +- 例子: 能在未知软件环境中自主探索学习如何操作的Agent,或者在玩游戏时不断提升策略的Agent。 + +## 7.4.3 动手构造一个 Tiny-Agent diff --git a/docs/chapter7/images/7-4-Agent工作原理.png b/docs/chapter7/images/7-4-Agent工作原理.png new file mode 100644 index 0000000..46e8a48 Binary files /dev/null and b/docs/chapter7/images/7-4-Agent工作原理.png differ