Skip to main content
本指南综述了常见的流程和智能体模式。
  • 流程具有预定义的代码路径,按特定顺序运行。
  • 智能体动态定义自身流程和工具使用。
Agent Workflow LangGraph 在构建智能体和流程时提供以下优势,包括 持久化、流式输出,以及调试和 部署 支持能力。
将此类流程模式与 LangSmith 进行对比。通过 追踪快速入门 查看数据如何在各步骤间流动。我们建议您同时配置 LangSmith 引擎,该引擎监控您的追踪、检测问题并推荐修复方案。

设置

要构建流程或智能体,可以使用支持结构化输出和工具调用的 任意对话模型。以下示例使用 Anthropic: :::python
  1. 安装依赖项:
  1. 初始化 LLM:
::: :::js
  1. 安装依赖
  1. 初始化 LLM:
:::

LLM 与增强手段

流程和智能体系统基于 LLM 及其增强功能。工具调用、结构化输出 和 短期记忆 是定制 LLM 的常见方式。 LLM augmentations :::python
::: :::js
:::

提示词链

提示词串联是指每个 LLM 调用处理前一个调用的输出。常用于分解为可验证小步骤的明确任务,例如:
  • 将文档翻译为不同语言
  • 验证生成内容的一致性
Prompt chaining :::python
::: :::js
:::

并行化

并行化使 LLMs 同时处理任务,可通过运行多个独立子任务或重复执行同一任务实现。常见场景包括:
  • 分解子任务并行执行以提升速度
  • 多次执行任务以验证不同输出以增强信心
示例包括:
  • 第一个子任务处理文档关键词,第二个子任务检查格式错误
  • 多次执行评分任务,基于不同标准(如引用数量、来源数量、来源质量)评估文档准确性
parallelization.png :::python
::: :::js
:::

路由

路由工作流处理输入并将其导向上下文特定的任务。这允许您为复杂任务定义专用流程。例如,一个用于回答产品相关问题的工作流可能首先处理问题类型,然后将请求路由到定价、退款、退货等特定处理流程。 路由.png :::python
::: :::js
:::

调度器-工作节点

在调度器-工作节点配置中,调度器:
  • 将任务分解为子任务
  • 将子任务委托给工作节点
  • 将工作节点输出合成最终结果
工作节点.png 调度器-工作节点工作流提供更高灵活性,通常用于子任务无法像并行化那样预定义的场景。这类场景常见于需要编写代码或跨多个文件更新内容的工作流。例如,一个需要为多个Python库的安装说明更新内容的工作流(文档数量未知),可能采用此模式。 :::python
::: :::js
:::

在LangGraph中创建工作节点

LangGraph内置了对调度器-工作节点工作流的支持。Send API允许动态创建工作节点并为其传递特定输入。每个工作节点拥有独立状态,所有输出会写入共享状态键,供调度器图访问。这使调度器能获取所有工作节点输出并合成最终结果。下例通过Send API将列表中的每个章节发送给工作节点处理。 :::python
::: :::js
:::

评估器-优化器

评估器-优化器工作流中,一个LLM调用生成响应,另一个评估该响应。若评估器或人工审核介入判定响应需优化,则提供反馈并重新生成。此循环持续至生成可接受响应。 评估器-优化器工作流常用于存在明确成功标准但需迭代优化的任务。例如,跨语言文本翻译可能需多次迭代才能确保语义一致。 评估器优化器.png :::python
::: :::js
:::

智能体

智能体通常通过工具实现,以LLM为核心执行操作。它们运行在持续反馈循环中,适用于问题与解决方案不可预知场景。智能体比工作流更具自主性,可自主选择工具及问题解决策略。您仍可定义工具集和行为规范。 智能体.png
快速入门请参考快速开始,或阅读工作原理了解LangChain中智能体的实现。
:::python
Using tools
::: :::js
Using tools
:::

工具节点

@[ToolNode] 是 LangGraph 工作流中预构建的节点,用于执行工具。它自动处理并行工具执行、错误处理和状态注入。 当需要精确控制图执行工具的方式时,使用 @[ToolNode]。这是许多 LangGraph 智能体模式中工具执行的基础组件。 :::python
::: :::js
:::

从工具访问图状态和上下文

由 ToolNode 执行的工具会以模型生成的参数作为第一个参数接收。要读取未由模型生成的图侧数据,可以使用以下任一选项:
  • 在 Python 中,从注入的 @[ToolRuntime] 参数中读取状态和运行时上下文。
  • 在 JavaScript 中,从工具的第二个参数(类型为 @[ToolRuntime])中读取状态和运行时上下文。
工具只能访问被传递给 ToolNode 的状态值。当 ToolNode 直接作为 StateGraph 节点添加时,该输入即为当前图状态。如果从其他节点手动调用 ToolNode,当工具需要自定义状态字段时,请传递完整状态。例如 tool_node.invoke(state) 或 toolNode.invoke(state, config) 会暴露完整状态,而仅传递 {"messages": state["messages"]} 或 { messages: state.messages } 只会暴露 messages。
:::python

View example trace

为此示例打开一个公开的 LangSmith 运行。
::: :::js

View example trace

为此示例打开一个公开的 LangSmith 运行。
:::
官方原文:src/oss/langgraph/workflows-agents.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。
Last modified on November 3, 2026