LangGraph v0.2: Increased customization with new checkpointer libraries

LangGraph v0.2:通过新的检查点库增强自定义性

LangGraph v0.2 包含了新的检查点库,以增强自定义性——包括用于本地工作流的 SQLite 检查点和用于将您的应用程序投入生产的优化 Postgres 检查点。此外,了解 LangGraph Cloud 的公开 Beta 版。

4 分钟阅读

今天,我们很高兴地宣布 LangGraph v0.2 的稳定版本发布,它引入了一个新的 LangGraph 检查点库生态系统。这些库简化了检查点的创建和自定义,使用户能够构建更具弹性的 LLM 应用程序,具有流畅的会话记忆、强大的错误恢复和人机交互功能。

我们为什么构建 LangGraph v0.2

LangGraph 的关键支柱之一是其内置的持久层,通过检查点实现。当您在图中使用检查点时,您可以与图的状态进行交互和管理。检查点会在每个步骤保存图状态的检查点,从而实现多项强大的功能,包括

  • 会话记忆:存储用户交互的历史记录(检查点),并在后续交互中从保存的检查点恢复
  • 错误恢复:通过从上一个成功的步骤检查点继续,从图执行中任何给定步骤的失败中恢复
  • 人机交互:实施工具批准、等待人工输入、编辑代理操作等
  • 时间旅行:编辑执行历史记录中任何点的图状态,并从该时间点创建替代执行(即,fork 线程)

自 LangGraph 早期以来,我们就将检查点设计为数据库无关的,允许用户为他们选择的数据库实现自己的检查点适配器。

自从 LangGraph v0.1 发布 以来,我们看到了社区对为许多流行的数据库(如 Postgres、Redis 和 MongoDB)创建检查点的浓厚兴趣。但是,用户没有明确的蓝图来实施他们自己的自定义检查点。

LangGraph 中的新检查点库

在 LangGraph v0.2 中,我们使创建新检查点变得更加容易。我们还为培育社区维护的检查点实现生态系统奠定了基础。

我们现在有一套新的专用检查点库

  • langgraph_checkpoint:检查点保存器(BaseCheckpointSaver)和序列化/反序列化接口(SerializationProtocol)的基础接口。包括用于实验的内存检查点实现(MemorySaver)。
  • langgraph_checkpoint_sqlite:LangGraph 检查点的实现,它使用 SQLite 数据库。非常适合实验和本地工作流。
  • langgraph_checkpoint_postgres:我们为 LangGraph Cloud 中的 Postgres 编写和优化的高级检查点现在已开源,可供社区在此基础上构建。非常适合在生产环境中使用。

检查点实现可以互换使用,这使用户可以根据自己的自定义需求定制其有状态的 LangGraph 应用程序。

用于生产就绪应用程序的 LangGraph Postgres 检查点

langgraph_checkpoint_postgres 实现可以作为社区成员为其喜欢的数据库实现自己的优化、生产就绪检查点的蓝图。Postgres 检查点在写入端和读取端都实现了一些优化。

写入端优化

  • 我们正在使用 Postgres 管道模式来减少数据库往返次数
  • 我们正在单独且版本化地存储每个通道值,以便每个新检查点仅存储已更改的值。

读取端优化

  • 我们正在为列表端点使用游标,以便在需要时有效地获取长线程历史记录。

LangGraph v0.2 入门

由于 LangGraph 检查点库是作为命名空间包实现的,因此您可以像以前一样导入检查点接口和实现,使用

  • from langgraph.checkpoint.base import BaseCheckpointSaver
  • from langgraph.checkpoint.memory import MemorySaver
  • from langgraph.checkpoint.sqlite import SqliteSaver
  • from langgraph.checkpoint.postgres import PostgresSaver

由于 SQLite 和 Postgres 检查点是通过单独的库提供的,因此您需要使用 pip install langgraph-checkpoint-sqlitepip install langgraph-checkpoint-postgres 单独安装它们。

LangGraph 检查点库将遵循语义版本控制(从当前 1.0 版本开始),主库中的任何重大更改都将导致这些库的主要版本升级。例如,langgraph_checkpoint 中的下一个重大更改将导致 2.0 版本,您可以预期检查点实现(例如,langgraph_checkpoint_sqlite)也将更新到 2.0 以遵循该更改。

要开始使用,请按照本指南 了解如何在 LangGraph 中使用检查点。您还可以查看我们的文档,包括 参考检查点概述

使用 LangGraph Cloud 大规模运行代理

为了补充 LangGraph 框架,我们还有一个新的运行时 LangGraph Cloud,它提供专门为大规模部署代理而构建的基础设施。

LangGraph Cloud 为您的代理应用程序承担繁重的工作,消除了自定义检查点的维护工作,同时增加了容错可扩展性。它可以优雅地管理水平扩展的任务队列、服务器,并开箱即用地包含我们强大的 Postgres 检查点,以帮助您处理许多并发用户并有效地存储大型状态和线程。

此外,LangGraph Cloud 还支持超出流式传输和人机交互的真实世界交互模式。这些包括双重文本处理以处理图的当前运行线程上的新用户输入、用于长时间运行任务的异步后台作业和 cron 作业。

最后,您可以使用 LangGraph Cloud 轻松部署您的代理应用程序并在 LangGraph Studio(一个类似游乐场的空间,用于可视化和调试代理轨迹)中进行协作。LangGraph Studio 桌面应用程序 现在也已面向所有 LangSmith 用户免费试用。

LangGraph Cloud 现已面向所有 LangSmith Plus 或 Enterprise 计划用户提供 Beta 版。立即免费试用 通过注册 LangSmith

LangGraph v0.2 中的其他更改

LangGraph v0.2 包含许多改进,并且我们已将其设计为在很大程度上向后兼容。以下是此最新版本中的重大更改和弃用列表。

重大更改

LangGraph v0.2 引入了多项重大更改

  • thread_tsparent_ts 已分别重命名为 checkpoint_idparent_checkpoint_id(通过 langgraph_checkpoint==1.0.0)。
    • 注意:如果通过配置传递,LangGraph 检查点仍然识别 thread_ts 并将其视为 checkpoint_id
  • 由于使用了命名空间包,因此不再可能进行重新导出的导入,例如 from langgraph.checkpoint import BaseCheckpointSaver。请改用 from langgraph.checkpoint.base import BaseCheckpointSaver
  • SQLite 检查点已移至单独的库,因此您需要使用 pip install langgraph-checkpoint-sqlite 单独安装它们

弃用

在 LangGraph v0.2 中,我们已删除

  • langgraph.prebuilt.chat_agent_executor.create_function_calling_executor。我们建议您改用 langgraph.prebuilt.chat_agent_executor.create_react_agent
  • langgraph.prebuilt.agent_executor。我们建议您改用 langgraph.prebuilt.chat_agent_executor.create_react_agent

结论

我们非常感谢我们的社区和用户推动我们并使用 LangGraph 构建,以提高代理的可靠性。我们希望通过 LangGraph v0.2,您会发现构建和维护自己的检查点实现变得更加容易——并且我们很高兴看到您创建的所有应用程序。

当您试用 LangGraph v0.2 时,我们很乐意在 hello@langchain.dev 听到您的反馈。您还可以从以下其他资源中了解更多信息