跳到主要内容
Open In ColabOpen on GitHub

如何从 v0.0 链迁移

LangChain 自最初发布以来已经发展,许多最初的“Chain”类已被弃用,转而使用更灵活和强大的 LCEL 和 LangGraph 框架。

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

已弃用实现的工作原理

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

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

先决条件

这些指南假设您熟悉以下概念

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

LCEL

LCEL 旨在简化使用 LLM 构建有用应用和组合相关组件的过程。它通过提供以下功能来实现这一点:

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

LangGraph

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

优势

对于现有的 v0.0 链使用这些框架具有一些优势

  • 生成的链通常实现完整的 Runnable 接口,包括在适当情况下的流式传输和异步支持;
  • 链可能更容易扩展或修改;
  • 链的参数通常会被公开,以便更轻松地进行自定义(例如,提示),而以前的版本倾向于子类化,并且具有不透明的参数和内部结构。
  • 如果使用 LangGraph,则链支持内置持久性,从而允许通过聊天历史记录的“记忆”来实现对话体验。
  • 如果使用 LangGraph,则可以流式传输链的步骤,从而实现更大的控制和可定制性。

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

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


此页是否对您有帮助?