Skip to main content
Open In ColabOpen on GitHub

如何从v0.0链迁移

LangChain 自首次发布以来已经发展,许多原始的 "Chain" 类已被弃用,转而采用更灵活和强大的 LCEL 和 LangGraph 框架。

本指南将帮助您将现有的v0.0链迁移到新的抽象层。

How deprecated implementations work

尽管许多这些实现已被弃用,但它们在代码库中仍然受支持。 然而,不建议在新开发中使用它们,我们建议使用以下指南重新实现它们!

要查看每个已弃用实现的计划移除版本,请检查它们的API参考。

Prerequisites

这些指南假设您对以下概念有一定的了解:

LangChain 维护了许多遗留的抽象。其中许多可以通过 LCEL 和 LangGraph 原语的简短组合重新实现。

LCEL

LCEL 旨在简化使用LLMs构建有用应用程序并组合相关组件的过程。它通过提供以下内容来实现这一点:

  1. 统一的接口:每个LCEL对象都实现了Runnable接口,该接口定义了一组通用的调用方法(invokebatchstreamainvoke等)。这使得自动且一致地支持有用的操作(如中间步骤的流式处理和批处理)成为可能,因为由LCEL对象组成的每个链本身也是一个LCEL对象。
  2. 组合原语: LCEL 提供了许多原语,使得组合链、并行化组件、添加回退、动态配置链内部等操作变得简单。

LangGraph

LangGraph,建立在LCEL之上,允许高效地编排应用程序组件,同时保持代码的简洁和可读性。它包括内置的持久性、对循环的支持,并优先考虑可控性。 如果LCEL对于更大或更复杂的链变得难以管理,它们可能会从LangGraph实现中受益。

优势

使用这些框架为现有的v0.0链带来了一些优势:

  • 生成的链通常实现完整的Runnable接口,包括在适当的情况下支持流式和异步操作;
  • 链可能更容易扩展或修改;
  • 链的参数通常更容易定制(例如,提示),而以前的版本往往是子类,具有不透明的参数和内部结构。
  • 如果使用LangGraph,该链支持内置持久化,允许通过聊天历史的“记忆”实现对话体验。
  • 如果使用LangGraph,可以流式传输链的步骤,从而实现更大的控制和可定制性。

以下页面有助于从各种特定链迁移到LCEL和LangGraph:

查看LCEL概念文档LangGraph文档以获取更多背景信息。


这个页面有帮助吗?