Explorar o código

fix mistake with learner in 913

jjyaoao hai 9 meses
pai
achega
c9a1690bee

+ 29 - 22
docs/chapter2/第二章 智能体发展史.md

@@ -2,6 +2,13 @@
 
 为了深刻理解现代智能体为何呈现出如今的形态,以及其核心设计思想的由来,本章将回溯历史:从人工智能领域的古典时代出发,探寻最早的“智能”如何在逻辑与符号的规则体系中被定义;继而见证从单一、集中的智能模型到分布式、协作式智能思想的重大转折;最终理解“学习”范式如何彻底改变了智能体获取能力的方式,并催生出我们今天所见的现代智能体。
 
+<div align="center">
+  <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-00.png" alt="图片描述" width="90%"/>
+  <p>图 2.1 AI智能体的演进阶梯</p>
+</div>
+
+如图2.1所示,<strong>每一个新范式的出现,都是为了解决上一代范式的核心“痛点”或根本局限。</strong> 而新的解决方案在带来能力飞跃的同时,也引入了新的、在当时难以克服的“局限”,而这又为下一代范式的诞生埋下了伏笔。理解这一“问题驱动”的迭代历程,能帮助我们更深刻地把握现代智能体技术选型背后的深层原因与历史必然性。
+
 ## 2.1 基于符号与逻辑的早期智能体
 
 人工智能领域的早期探索,深受数理逻辑和计算机科学基本原理的影响。在那个时代,研究者们普遍持有一种信念:人类的智能,尤其是逻辑推理能力,可以被形式化的符号体系所捕捉和复现。这一核心思想催生了人工智能的第一个重要范式——符号主义(Symbolicism),也被称为“逻辑AI”或“传统AI”。
@@ -17,11 +24,11 @@
 1. <strong>充分性论断</strong>:任何一个物理符号系统,都具备产生通用智能行为的充分手段。
 2. <strong>必要性论断</strong>:任何一个能够展现通用智能行为的系统,其本质必然是一个物理符号系统。
 
-这里的物理符号系统指的是一个能够在物理世界中存在的系统,它由一组可被区分的符号和一系列对这些符号进行操作的过程组成,其构成元素如图2.1所示。这些符号可以组合成更复杂的结构(例如表达式),而过程则可以创建、修改、复制和销毁这些符号结构。
+这里的物理符号系统指的是一个能够在物理世界中存在的系统,它由一组可被区分的符号和一系列对这些符号进行操作的过程组成,其构成元素如图2.2所示。这些符号可以组合成更复杂的结构(例如表达式),而过程则可以创建、修改、复制和销毁这些符号结构。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-0.png" alt="图片描述" width="90%"/>
-  <p>图 2.1 物理符号系统的构成元素</p>
+  <p>图 2.2 物理符号系统的构成元素</p>
 </div>
 
 简而言之,PSSH大胆地宣称:<strong>智能的本质,就是符号的计算与处理。</strong>
@@ -32,11 +39,11 @@
 
 在物理符号系统假说的直接影响下,<strong>专家系统(Expert System)</strong>成为符号主义时代最重要、最成功的应用成果。专家系统的核心目标,是模拟人类专家在特定领域内解决问题的能力。它通过将专家的知识和经验编码成计算机程序,使其能够在面对相似问题时,给出媲美甚至超越人类专家的结论或建议。
 
-一个典型的专家系统通常由知识库、推理机、用户界面等几个核心部分构成,其通用架构如图2.2所示。
+一个典型的专家系统通常由知识库、推理机、用户界面等几个核心部分构成,其通用架构如图2.3所示。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-1.png" alt="图片描述" width="90%"/>
-  <p>图 2.2 专家系统的通用架构</p>
+  <p>图 2.3 专家系统的通用架构</p>
 </div>
 
 
@@ -55,11 +62,11 @@
 
 MYCIN是历史上最著名、最具影响力的专家系统之一,由斯坦福大学于20世纪70年代开发<sup>[2]</sup>。它被设计用于辅助医生诊断细菌性血液感染并推荐合适的抗生素治疗方案。
 
-- <strong>工作原理</strong>:MYCIN通过与医生进行问答式交互来收集病人的症状、病史和化验结果。其知识库包含了约600条由医学专家提供的“IF-THEN”规则。推理机主要采用反向链的方式工作:从“确定致病菌”这一最高目标出发,反向推导需要哪些证据和条件,然后向医生提问以获取这些信息。其简化的工作流程如图2.3所示。
+- <strong>工作原理</strong>:MYCIN通过与医生进行问答式交互来收集病人的症状、病史和化验结果。其知识库包含了约600条由医学专家提供的“IF-THEN”规则。推理机主要采用反向链的方式工作:从“确定致病菌”这一最高目标出发,反向推导需要哪些证据和条件,然后向医生提问以获取这些信息。其简化的工作流程如图2.4所示。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-2.png" alt="图片描述" width="90%"/>
-  <p>图 2.3 MYCIN反向链推理流程示意图</p>
+  <p>图 2.4 MYCIN反向链推理流程示意图</p>
 </div>
 
 - <strong>不确定性处理</strong>:医学诊断充满了不确定性。MYCIN的一个重要创新是引入了<strong>置信因子(Certainty Factor, CF)</strong>的概念,用一个-1到1之间的数值来表示一个结论的可信度。这使得系统能够处理不确定的、模糊的医学知识,并给出带有可信度评估的诊断结果,这比简单的布尔逻辑更贴近现实世界。
@@ -67,11 +74,11 @@ MYCIN是历史上最著名、最具影响力的专家系统之一,由斯坦福
 
 ### 2.1.3 SHRDLU
 
-如果说专家系统展示了符号AI在专业领域的“深度”,那么由<strong>特里·威诺格拉德(Terry Winograd)</strong>于1968-1970年开发的SHRDLU项目<sup>[3]</sup>,则在“广度”上实现了革命性的突破。SHRDLU旨在构建一个能在“积木世界”这一微观环境中,通过自然语言与人类流畅交互的综合性智能体。“积木世界”是一个模拟的三维虚拟空间,其中包含不同形状、颜色和大小的积木,以及一个可以抓取和移动它们的虚拟机械臂。用户通过自然语言向SHRDLU下达指令或提问,SHRDLU则在虚拟世界中执行动作或给出文字回答。
+如果说专家系统展示了符号AI在专业领域的“深度”,那么由<strong>特里·威诺格拉德(Terry Winograd)</strong>于1968-1970年开发的SHRDLU项目<sup>[3]</sup>,则在“广度”上实现了革命性的突破。如图2.5所示,SHRDLU旨在构建一个能在“积木世界”这一微观环境中,通过自然语言与人类流畅交互的综合性智能体。“积木世界”是一个模拟的三维虚拟空间,其中包含不同形状、颜色和大小的积木,以及一个可以抓取和移动它们的虚拟机械臂。用户通过自然语言向SHRDLU下达指令或提问,SHRDLU则在虚拟世界中执行动作或给出文字回答。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-3.png" alt="图片描述" width="90%"/>
-  <p>图 2.4 SHRDLU的“积木世界”交互界面</p>
+  <p>图 2.5 SHRDLU的“积木世界”交互界面</p>
 </div>
 
 SHRDLU在当时引起广泛关注,主要原因在于它首次将多个独立的人工智能模块(如语言解析、规划、记忆)集成在一个统一的系统中,并使它们协同工作:
@@ -304,7 +311,7 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 
 <strong>涌现(Emergence)</strong>是理解心智社会理论的关键。复杂的、有目的性的智能行为,并非由某个高级智能体预先规划,而是从大量简单的底层智能体之间的局部交互中自发产生的。
 
-让我们以经典的“搭建积木塔”任务为例,来说明这一过程,如图2.5所示。当一个高层目标(如“我要搭一个塔”)出现时,它会激活一个名为`BUILD-TOWER`的高层机构。
+让我们以经典的“搭建积木塔”任务为例,来说明这一过程,如图2.6所示。当一个高层目标(如“我要搭一个塔”)出现时,它会激活一个名为`BUILD-TOWER`的高层机构。
 
 1. `BUILD-TOWER`机构并不知道如何执行具体的物理动作,它的唯一作用是激活它的下属机构,比如`BUILDER`。
 2. `BUILDER`机构同样很简单,它可能只包含一个循环逻辑:只要塔还没搭完,就激活`ADD-BLOCK`机构。
@@ -315,7 +322,7 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-4.png" alt="图片描述" width="90%"/>
-  <p>图 2.5 “心智社会”中搭建积木塔行为的涌现机制示意图</p>
+  <p>图 2.6 “心智社会”中搭建积木塔行为的涌现机制示意图</p>
 </div>
 
 ### 2.3.3 对多智能体系统的理论启发
@@ -348,11 +355,11 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 2. <strong>简单的处理单元</strong>:每个神经元只执行非常简单的计算,如接收来自其他神经元的加权输入,通过一个激活函数进行处理,然后将结果输出给下一个神经元。
 3. <strong>通过学习调整权重</strong>:系统的智能并非来自于设计者预先编写的复杂程序,而是来自于“学习”过程。系统通过接触大量样本,根据某种学习算法(如反向传播算法)自动、迭代地调整神经元之间的连接权重,从而使得整个网络的输出逐渐接近期望的目标。
 
-在这种范式下,智能体不再是一个被动执行规则的逻辑推理机,而是一个能够通过经验自我优化的适应性系统。如图2.6所示,这代表了构建智能体核心思想的根本性转变。符号主义试图将人类的知识显式地编码给机器,而联结主义则试图创造出能够像人类一样学习知识的机器。
+在这种范式下,智能体不再是一个被动执行规则的逻辑推理机,而是一个能够通过经验自我优化的适应性系统。如图2.7所示,这代表了构建智能体核心思想的根本性转变。符号主义试图将人类的知识显式地编码给机器,而联结主义则试图创造出能够像人类一样学习知识的机器。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-5.png" alt="图片描述" width="90%"/>
-  <p>图 2.6 符号主义与联结主义范式对比</p>
+  <p>图 2.7 符号主义与联结主义范式对比</p>
 </div>
 
 联结主义的兴起,特别是深度学习在21世纪的成功,为智能体赋予了强大的感知和模式识别能力,使其能够直接从原始数据(如图像、声音、文本)中理解世界,这是符号主义时代难以想象的。然而,如何让智能体学会在与环境的动态交互中做出最优的序贯决策,则需要另一种学习范式的补充。
@@ -373,11 +380,11 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 - <strong>行动(Action, A)</strong>:智能体根据当前状态所能采取的操作。例如,在棋盘的某个合法位置上落下一子。
 - <strong>奖励(Reward, R)</strong>:环境在智能体执行一个行动后,反馈给智能体的一个标量信号,用于评价该行动在特定状态下的好坏。例如,在一局棋结束后,胜利获得+1的奖励,失败获得-1的奖励。
 
-基于上述核心要素,强化学习智能体在一个“感知-行动-学习”的闭环中持续迭代,其工作模式如图2.7所示。
+基于上述核心要素,强化学习智能体在一个“感知-行动-学习”的闭环中持续迭代,其工作模式如图2.8所示。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-6.png" alt="图片描述" width="90%"/>
-  <p>图 2.7 强化学习的核心交互循环</p>
+  <p>图 2.8 强化学习的核心交互循环</p>
 </div>
 
 这个循环的具体步骤如下:
@@ -401,11 +408,11 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 1. <strong>预训练阶段</strong>:首先在一个包含互联网级别海量文本数据的通用语料库上,通过<strong>自监督学习(Self-supervised Learning)</strong>的方式训练一个超大规模的神经网络模型。这个阶段的目标不是完成任何特定任务,而是学习语言本身内在的规律、语法结构、事实知识以及上下文逻辑。最常见的目标是“预测下一个词”。
 2. <strong>微调阶段</strong>:完成预训练后,这个模型就已经学习到了和数据集有关的丰富知识。之后,针对特定的下游任务,只需使用少量该任务的标注数据对模型进行微调,即可让模型适应对应任务。
 
-如图2.8所示,直观地展示了这一预训练与微调的完整流程:通用文本数据经过自监督学习形成基础模型,随后通过特定任务数据进行微调,最终适应各项下游任务。
+如图2.9所示,直观地展示了这一预训练与微调的完整流程:通用文本数据经过自监督学习形成基础模型,随后通过特定任务数据进行微调,最终适应各项下游任务。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-7.png" alt="图片描述" width="90%"/>
-  <p>图 2.8 “预训练-微调”范式示意图</p>
+  <p>图 2.9 “预训练-微调”范式示意图</p>
 </div>
 
 <strong>大型语言模型的诞生与涌现能力</strong>
@@ -425,10 +432,10 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-8.png" alt="图片描述" width="90%"/>
-  <p>图 2.9 LLM驱动的智能体核心组件架构</p>
+  <p>图 2.10 LLM驱动的智能体核心组件架构</p>
 </div>
 
-如第一章所述,智能体与环境的交互可以被抽象为一个核心循环。LLM驱动的智能体通过一个由多个模块协同工作的、持续迭代的闭环流程来完成任务。该流程遵循图2.9所示的架构,具体步骤如下:
+如第一章所述,智能体与环境的交互可以被抽象为一个核心循环。LLM驱动的智能体通过一个由多个模块协同工作的、持续迭代的闭环流程来完成任务。该流程遵循图2.10所示的架构,具体步骤如下:
 
 1. <strong>感知 (Perception)</strong> :流程始于<strong>感知模块 (Perception Module)</strong>。它通过传感器从<strong>外部环境 (Environment)</strong> 接收原始输入,形成<strong>观察 (Observation)</strong>。这些观察信息(如用户指令、API返回的数据或环境状态的变化)是智能体决策的起点,处理后将被传递给思考阶段。
 2. <strong>思考 (Thought)</strong> :这是智能体的认知核心,对应图中的<strong>规划模块 (Planning Module)</strong> 和<strong>大型语言模型 (LLM)</strong> 的协同工作。
@@ -453,18 +460,18 @@ ELIZA的实践清晰地揭示了符号主义方法的核心矛盾:系统看似
 2. <strong>联结主义 (Connectionism)</strong> :其灵感源于对大脑神经网络的模拟。尽管早期发展受限,但在<strong>杰弗里·辛顿 (Geoffrey Hinton)</strong> 等研究者的推动下,反向传播算法为神经网络的复苏奠定了基础。最终,随着深度学习时代的到来,这一思想通过卷积神经网络、Transformer等模型成为当前的主流。
 3. <strong>行为主义 (Behaviorism)</strong> :强调智能体通过与环境的互动和试错来学习最优策略,其现代化身为强化学习 。从早期的TD-Gammon到与深度学习结合并击败人类顶尖棋手的AlphaGo,这一流派为智能体赋予了从经验中习得复杂决策行为的能力。
 
-进入21世纪20年代,这些思想流派以前所未有的方式深度融合。以GPT系列为代表的大语言模型,其本身是联结主义的产物,却成为了执行符号推理、进行工具调用和规划决策的核心“大脑”,形成了神经-符号结合的现代智能体架构。为了系统性地回顾这一发展脉络,下图2.10梳理了从20世纪50年代至今,人工智能体发展史上的关键理论、项目与事件,为读者提供一个清晰的全局概览,作为本章知识的沉淀。
+进入21世纪20年代,这些思想流派以前所未有的方式深度融合。以GPT系列为代表的大语言模型,其本身是联结主义的产物,却成为了执行符号推理、进行工具调用和规划决策的核心“大脑”,形成了神经-符号结合的现代智能体架构。为了系统性地回顾这一发展脉络,下图2.11梳理了从20世纪50年代至今,人工智能体发展史上的关键理论、项目与事件,为读者提供一个清晰的全局概览,作为本章知识的沉淀。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-9.png" alt="图片描述" width="90%"/>
-  <p>图 2.10 智能体发展演进时间线(未完全版)</p>
+  <p>图 2.11 智能体发展演进时间线(未完全版)</p>
 </div>
 
-得益于大语言模型的突破,智能体技术栈呈现出前所未有的活跃度和多样性。图2.11展示了当前AI Agent领域的一个典型技术栈全貌,涵盖了从底层模型到上层应用的各个环节。
+得益于大语言模型的突破,智能体技术栈呈现出前所未有的活跃度和多样性。图2.12展示了当前AI Agent领域的一个典型技术栈全貌,涵盖了从底层模型到上层应用的各个环节。
 
 <div align="center">
   <img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/2-figures/1757246501849-10.png" alt="图片描述" width="90%"/>
-  <p>图 2.11 AI Agent 技术栈概览</p>
+  <p>图 2.12 AI Agent 技术栈概览</p>
 </div>
 
 该技术栈图由Letta公司于2024年11月发布<sup>[10]</sup>,它将AI智能体相关的工具、平台和服务进行了分层与分类,为我们理解当前的市场格局和技术选型提供了宝贵的参考。

+ 15 - 7
docs/chapter4/第四章 智能体经典范式构建.md

@@ -2,13 +2,21 @@
 
 在上一章中,我们深入探讨了作为现代智能体“大脑”的大语言模型。我们了解了其内部的Transformer架构、与之交互的方法,以及它的能力边界。现在,是时候将这些理论知识转化为实践,亲手构建智能体了。
 
-你可能会问,市面上已有LangChain、LlamaIndex等众多优秀框架,为何还要“重复造轮子”?答案在于,尽管成熟的框架在工程效率上优势显著,但直接使用高度抽象的工具,并不利于我们了解背后的设计机制是怎么运行的,或者是有何好处。其次,这个过程会暴露出项目的工程挑战。框架为我们处理了许多问题,例如模型输出格式的解析、工具调用失败的重试、防止智能体陷入死循环等。亲手处理这些问题,是培养系统设计能力的最直接方式。最后,也是最重要的一点,掌握了设计原理,你才能真正地从一个框架的“使用者”转变为一个智能体应用的“创造者”。当标准组件无法满足你的复杂需求时,你将拥有深度定制乃至从零构建一个全新智能体的能力。
+一个现代的智能体,其核心能力在于能将大语言模型的推理能力与外部世界联通。它能够自主地理解用户意图、拆解复杂任务,并通过调用代码解释器、搜索引擎、API等一系列“工具”,来获取信息、执行操作,最终达成目标。 然而,智能体并非万能,它同样面临着来自大模型本身的“幻觉”问题、在复杂任务中可能陷入推理循环、以及对工具的错误使用等挑战,这些也构成了智能体的能力边界。
+
+为了更好地组织智能体的“思考”与“行动”过程,业界涌现出了多种经典的架构范式。在本章中,我们将聚焦于其中最具代表性的三种,并一步步从零实现它们:
+
+- **ReAct (Reasoning and Acting):** 一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整。
+- **Plan-and-Solve:** 一种“三思而后行”的范式,智能体首先生成一个完整的行动计划,然后严格执行。
+- **Reflection:** 一种赋予智能体“反思”能力的范式,通过自我批判和修正来优化结果。
+
+了解了这些之后,你可能会问,市面上已有LangChain、LlamaIndex等众多优秀框架,为何还要“重复造轮子”?答案在于,尽管成熟的框架在工程效率上优势显著,但直接使用高度抽象的工具,并不利于我们了解背后的设计机制是怎么运行的,或者是有何好处。其次,这个过程会暴露出项目的工程挑战。框架为我们处理了许多问题,例如模型输出格式的解析、工具调用失败的重试、防止智能体陷入死循环等。亲手处理这些问题,是培养系统设计能力的最直接方式。最后,也是最重要的一点,掌握了设计原理,你才能真正地从一个框架的“使用者”转变为一个智能体应用的“创造者”。当标准组件无法满足你的复杂需求时,你将拥有深度定制乃至从零构建一个全新智能体的能力。
 
 ## 4.1 环境准备与基础工具定义
 
 在开始构建之前,我们需要先搭建好开发环境并定义一些基础组件。这能帮助我们在后续实现不同范式时,避免重复劳动,更专注于核心逻辑。
 
-#### 4.1.1 安装依赖库
+### 4.1.1 安装依赖库
 
 本书的实战部分将主要使用 Python 语言,建议使用 Python 3.10 或更高版本。首先,请确保你已经安装了 `openai` 库用于与大语言模型交互,以及 `python-dotenv` 库用于安全地管理我们的 API 密钥。
 
@@ -18,7 +26,7 @@
 pip install openai python-dotenv
 ```
 
-#### 4.1.2 配置 API 密钥
+### 4.1.2 配置 API 密钥
 
 为了让我们的代码更通用,我们将模型服务的相关信息(模型ID、API密钥、服务地址)统一配置在环境变量中。
 
@@ -35,7 +43,7 @@ LLM_BASE_URL="YOUR-MODEL"
 
 我们的代码将从此文件自动加载这些配置。
 
-#### 4.1.3 封装基础 LLM 调用函数
+### 4.1.3 封装基础 LLM 调用函数
 
 为了让代码结构更清晰、更易于复用,我们来定义一个专属的LLM客户端类。这个类将封装所有与模型服务交互的细节,让我们的主逻辑可以更专注于智能体的构建。
 
@@ -992,7 +1000,7 @@ REFLECT_PROMPT_TEMPLATE = """
 
 3. <strong>优化提示词 (Refinement Prompt)</strong> :当收到反馈后,这个提示词将引导模型根据反馈内容,对原有代码进行修正和优化。
 
-```bash
+````bash
 ```python
 REFINE_PROMPT_TEMPLATE = """
 你是一位资深的Python程序员。你正在根据一位代码评审专家的反馈来优化你的代码。
@@ -1001,7 +1009,7 @@ REFINE_PROMPT_TEMPLATE = """
 {task}
 
 # 你上一轮尝试的代码:
-```python
+```
 {last_code_attempt}
 评审员的反馈:
 {feedback}
@@ -1009,7 +1017,7 @@ REFINE_PROMPT_TEMPLATE = """
 请根据评审员的反馈,生成一个优化后的新版本代码。
 你的代码必须包含完整的函数签名、文档字符串,并遵循PEP 8编码规范。
 请直接输出优化后的代码,不要包含任何额外的解释。
-```
+````
 
 (2)智能体封装与实现
 

BIN=BIN
docs/images/2-figures/1757246501849-00.png