|
|
@@ -34,6 +34,8 @@
|
|
|
<p>表 6.1 四种智能体框架对比</p>
|
|
|
<img src="https://raw.githubusercontent.com/datawhalechina/Hello-Agents/main/docs/images/6-figures/01.png" alt="" width="90%"/>
|
|
|
</div>
|
|
|
+
|
|
|
+
|
|
|
- <strong>AutoGen</strong>:AutoGen 的核心思想是通过对话实现协作<sup>[1]</sup>。它将多智能体系统抽象为一个由多个“可对话”智能体组成的群聊。开发者可以定义不同角色(如 `Coder`, `ProductManager`, `Tester`),并设定它们之间的交互规则(例如,`Coder` 写完代码后由 `Tester` 自动接管)。任务的解决过程,就是这些智能体在群聊中通过自动化消息传递,不断对话、协作、迭代直至最终目标达成的过程。
|
|
|
- <strong>AgentScope</strong>:AgentScope 是一个专为多智能体应用设计的、功能全面的开发平台<sup>[2]</sup>。它的核心特点是<strong>易用性</strong>和<strong>工程化</strong>。它提供了一套非常友好的编程接口,让开发者可以轻松定义智能体、构建通信网络,并管理整个应用的生命周期。其内置的<strong>消息传递机制</strong>和对分布式部署的支持,使其非常适合构建和运维复杂、大规模的多智能体系统。
|
|
|
- <strong>CAMEL</strong>:CAMEL 提供了一种新颖的、名为<strong>角色扮演 (Role-Playing)</strong> 的协作方法<sup>[3]</sup>。其核心理念是,我们只需要为两个智能体(例如,`AI研究员` 和 `Python程序员`)设定好各自的角色和共同的任务目标,它们就能在“<strong>初始提示 (Inception Prompting)</strong>”的引导下,自主地进行多轮对话,相互启发、相互配合,共同完成任务。它极大地降低了设计多智能体对话流程的复杂度。
|
|
|
@@ -1230,19 +1232,15 @@ def create_search_assistant():
|
|
|
|
|
|
(1)优势
|
|
|
|
|
|
-如我们的智能搜索助手案例所示,LangGraph 将一个完整的实时问答流程,显式地定义为一个由状态、节点和边构成的“流程图”。这种设计的最大优势是<strong>高度的可控性与可预测性</strong>。开发者可以精确地规划智能体的每一步行为,这对于构建需要高可靠性和可审计性的生产级应用至关重要。
|
|
|
+- 如我们的智能搜索助手案例所示,LangGraph 将一个完整的实时问答流程,显式地定义为一个由状态、节点和边构成的“流程图”。这种设计的最大优势是<strong>高度的可控性与可预测性</strong>。开发者可以精确地规划智能体的每一步行为,这对于构建需要高可靠性和可审计性的生产级应用至关重要。其最强大的特性在于对<strong>循环(Cycles)的原生支持</strong>。通过条件边,我们可以轻松构建“反思-修正”循环,例如在我们的案例中,如果搜索失败,可以设计一个回退到备用方案的路径。这是构建能够自我优化和具备容错能力的智能体的关键。
|
|
|
|
|
|
-其最强大的特性在于对<strong>循环(Cycles)的原生支持</strong>。通过条件边,我们可以轻松构建“反思-修正”循环,例如在我们的案例中,如果搜索失败,可以设计一个回退到备用方案的路径。这是构建能够自我优化和具备容错能力的智能体的关键。
|
|
|
-
|
|
|
-此外,由于每个节点都是一个独立的 Python 函数,这带来了<strong>高度的模块化</strong>。同时,在流程中插入一个等待人类审核的节点也变得非常直接,为实现可靠的“人机协作”(Human-in-the-loop)提供了坚实的基础。
|
|
|
+- 此外,由于每个节点都是一个独立的 Python 函数,这带来了<strong>高度的模块化</strong>。同时,在流程中插入一个等待人类审核的节点也变得非常直接,为实现可靠的“人机协作”(Human-in-the-loop)提供了坚实的基础。
|
|
|
|
|
|
(2)局限性
|
|
|
|
|
|
-与基于对话的框架相比,LangGraph 需要开发者编写更多的<strong>前期代码(Boilerplate)</strong>。定义状态、节点、边等一系列操作,使得对于简单任务而言,开发过程显得更为繁琐。开发者需要更多地思考“如何控制流程(how)”,而不仅仅是“做什么(what)”。
|
|
|
-
|
|
|
-由于工作流是预先定义的,LangGraph 的行为虽然可控,但也缺少了对话式智能体那种动态的、<strong>“涌现”式的交互</strong>。它的强项在于执行一个确定的、可靠的流程,而非模拟开放式的、不可预测的社会性协作。
|
|
|
+- 与基于对话的框架相比,LangGraph 需要开发者编写更多的<strong>前期代码(Boilerplate)</strong>。定义状态、节点、边等一系列操作,使得对于简单任务而言,开发过程显得更为繁琐。开发者需要更多地思考“如何控制流程(how)”,而不仅仅是“做什么(what)”。由于工作流是预先定义的,LangGraph 的行为虽然可控,但也缺少了对话式智能体那种动态的、<strong>“涌现”式的交互</strong>。它的强项在于执行一个确定的、可靠的流程,而非模拟开放式的、不可预测的社会性协作。
|
|
|
|
|
|
-调试过程同样存在挑战。虽然流程比对话历史更清晰,但问题可能出在多个环节:某个节点内部的逻辑错误、在节点间传递的状态数据发生异变,或是边跳转的条件判断失误。这要求开发者对整个图的运行机制有全局性的理解。
|
|
|
+- 调试过程同样存在挑战。虽然流程比对话历史更清晰,但问题可能出在多个环节:某个节点内部的逻辑错误、在节点间传递的状态数据发生异变,或是边跳转的条件判断失误。这要求开发者对整个图的运行机制有全局性的理解。
|
|
|
|
|
|
## 6.6 本章小结
|
|
|
|