Skip to content

Langchain

Matrix-X edited this page Aug 26, 2024 · 4 revisions

Langchain

tool

LangGraph

这里有几个概念,需要区分一下:

  1. Workflow(工作流) 工作流代表了一系列步骤和决策,定义了任务执行的顺序和逻辑。在智能系统中,工作流可以表示从输入到输出的整个过程,包括数据处理、任务分配、执行和结果返回。

  2. Node(节点) 节点是工作流中的一个单元,代表某个具体的任务或步骤。每个节点可以执行特定的操作,例如数据处理、调用某个服务或者执行某个工具。节点之间通过工作流连接起来,形成完整的任务执行路径。

  3. Agent(代理) 代理是执行特定任务或行为的实体。它可以是一个软件组件,负责某个特定的功能或任务。例如,Lotto_Manager 和 Coder 就是两种不同的代理,分别负责管理彩票和处理代码任务。

  4. Bot(机器人) 机器人通常是更高级别的代理,能够与用户进行交互,并执行一系列复杂的任务。机器人可以包含多个代理,每个代理负责特定的子任务。机器人通过工作流管理和协调这些代理,以完成整体任务。

Workflow 中的 Node 的理解

Basic Nodes

LLM(Large Language Model,大型语言模型)

功能:处理和生成自然语言文本。它可以用于理解用户输入、生成自然语言响应或在任务执行过程中进行复杂的决策。 用途:自然语言处理、文本生成、对话系统等。 Knowledge(知识)

功能:存储和检索系统内的知识或信息。知识节点可以访问知识库、文档或数据库,以提供任务执行所需的信息。 用途:知识检索、信息查询、提供背景知识等。

Code(代码)

功能:执行特定的编程逻辑或代码片段。代码节点用于处理数据、计算、调用外部API或执行其他编程任务。 用途:数据处理、计算、API调用、执行复杂逻辑等。

Condition(条件)

功能:在工作流中进行逻辑判断。条件节点根据特定条件决定工作流的下一步操作。 用途:分支决策、流程控制、条件判断等。

Variable(变量)

功能:存储和传递数据。变量节点用于在不同节点之间传递信息,保持执行状态和中间结果。 用途:数据存储、信息传递、状态维护等。

Plugins(插件)

插件是系统的可扩展模块,可以增加额外的功能或工具。在智能系统中,插件可以作为节点来使用。插件节点可以扩展基本节点的功能,如增加特定的知识检索功能、数据处理功能等。

功能:提供额外功能,增强系统的可扩展性和灵活性。 用途:扩展基本节点的功能,添加新的工具或服务。

Workflow(作为节点的子工作流)

工作流是由一系列节点组成的,它定义了任务执行的顺序和逻辑。工作流可以包含基本节点和插件节点,甚至可以包含其他工作流节点,从而形成复杂的任务执行路径。

功能:组织和协调系统中各个部分的工作。 用途:定义任务执行的逻辑和顺序,管理任务流程。

整体关系

Basic Nodes:LLM、Knowledge、Code、Condition 和 Variable 是构建系统的基础单元。每个节点都有特定的功能和用途。

在智能系统中,workflow(工作流)和 plugin(插件)确实都有各自的功能,但它们的用途和使用方式有明显的区别。以下是详细的解释和对比:

Workflow(工作流)

功能:

组织和协调任务:工作流定义了一系列任务的执行顺序和逻辑,通过将多个节点(如 LLM、Code、Condition 等)串联起来,实现复杂任务的自动化处理。 控制任务流向:使用条件节点(Condition)来判断和控制任务的流向,确保在不同条件下采取不同的处理步骤。 数据传递和状态管理:通过变量节点(Variable)在工作流的不同部分之间传递数据和状态。

用途: 定义复杂流程:通过串联多个节点来定义任务的执行路径。例如,用户输入->解析输入->知识库查询->条件判断->返回结果。 管理任务执行:确保每个步骤按照预定的逻辑执行,处理过程中各节点的顺序和依赖关系明确。

Plugin(插件)

功能: 扩展系统功能:插件是系统的可扩展模块,用于添加特定功能或工具,增强系统的灵活性和可扩展性。 独立和可插拔:插件可以作为独立的功能模块使用,易于添加和移除,而不影响系统的其他部分。

用途: 增加新功能:例如,添加一个新的API调用功能或新的数据处理工具。 增强现有节点:通过插件来扩展现有节点的能力,比如为知识节点添加新的知识源。

区分方法

结构和组织方式:

工作流(Workflow):通常由多个节点组成,明确定义了任务的执行顺序和逻辑。工作流本身是一个更大的结构,用于协调和管理多个任务的执行。

插件(Plugin):通常是单一功能的扩展模块,可以独立使用或作为某个节点的扩展功能。插件可以被视为特定节点的工具或增强。