Skip to main content
本指南介绍常见的工作流和智能体模式。
  • 工作流具有预定义的代码路径,设计为按特定顺序执行。
  • 智能体是动态的,能自主定义执行流程和工具使用方式。
智能体工作流 LangGraph 在构建智能体和工作流时提供了多种优势,包括持久化流式输出,以及对调试和部署的支持。
使用 LangSmith 追踪和比较这些工作流模式。按照追踪快速入门了解数据如何在每个步骤中流转。

设置

要构建工作流或智能体,你可以使用任何支持结构化输出和工具调用的聊天模型。以下示例使用 Anthropic:
  1. 安装依赖:
  1. 初始化大语言模型(LLM):

大语言模型(LLM)与增强功能

工作流和智能体系统基于大语言模型(LLM)以及你为其添加的各种增强功能。工具调用结构化输出短期记忆是定制 LLM 以满足需求的几种选择。 LLM 增强功能

提示链

提示链是指每次 LLM 调用处理前一次调用的输出。它通常用于执行可以分解为更小、可验证步骤的明确任务。一些示例包括:
  • 将文档翻译成不同语言
  • 验证生成内容的一致性
提示链

并行化

通过并行化,多个 LLM 同时处理一个任务。这可以是同时运行多个独立子任务,也可以是多次运行同一任务以检查不同输出。并行化常用于:
  • 将子任务拆分并行运行,提升速度
  • 多次运行任务检查不同输出,提高置信度
一些示例包括:
  • 一个子任务处理文档关键词提取,另一个子任务检查格式错误
  • 多次运行一个评分任务,根据不同标准(如引用数量、使用的来源数量和来源质量)为文档准确性打分
parallelization.png

路由

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

编排者-工作者

在编排者-工作者配置中,编排者:
  • 将任务分解为子任务
  • 将子任务委派给工作者
  • 将工作者输出综合为最终结果
worker.png 编排者-工作者工作流提供更多灵活性,通常在子任务无法像并行化那样预定义时使用。这在需要编写代码或更新多个文件内容的工作流中很常见。例如,一个需要在未知数量的文档中更新多个 Python 库安装说明的工作流可能会使用此模式。

在 LangGraph 中创建工作者

编排者-工作者工作流很常见,LangGraph 对其提供了内置支持。Send API 允许你动态创建工作者节点并发送特定输入。每个工作者有自己的状态,所有工作者输出写入编排者图可访问的共享状态键。这使编排者能够访问所有工作者输出并将它们综合为最终输出。下面的示例遍历章节列表,使用 Send API 将每个章节发送给一个工作者。

评估者-优化者

在评估者-优化者工作流中,一个 LLM 调用创建响应,另一个评估该响应。如果评估者或人机协作环节确定响应需要改进,则提供反馈并重新创建响应。此循环持续进行直到生成可接受的响应。 评估者-优化者工作流通常在任务有特定成功标准但需要迭代才能满足该标准时使用。例如,在两种语言之间翻译文本时并不总能完美匹配。可能需要几次迭代才能生成在两种语言中具有相同含义的翻译。 evaluator_optimizer.png

智能体

智能体通常作为使用工具执行操作的 LLM 来实现。它们在持续反馈循环中运行,用于问题和解决方案不可预测的场景。智能体比工作流具有更多自主性,可以自行决定使用哪些工具以及如何解决问题。你仍然可以定义可用的工具集和智能体行为准则。 agent.png
要开始使用智能体,请参阅快速入门或阅读更多关于 LangChain 中智能体工作原理的内容。
使用工具

ToolNode

ToolNode 是一个预构建的节点,用于在 LangGraph 工作流中执行工具。它自动处理并行工具执行、错误处理和状态注入。 当你需要对图如何执行工具进行细粒度控制时,使用 ToolNode。这是许多 LangGraph 智能体模式中工具执行的基础构建块。