Skip to main content
本指南回顾常见的工作流和代理模式。
  • 工作流具有预定的代码路径,旨在按特定顺序运行。
  • 代理是动态的,定义自己的流程和工具使用方式。
代理工作流 LangGraph 在构建代理和工作流时提供了多项优势,包括持久化流式处理,以及对调试和部署的支持。

设置

要构建工作流或代理,您可以使用任何支持结构化输出和工具调用的聊天模型。以下示例使用 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 中如何工作的信息。
使用工具