今天,我们很高兴地宣布 LangGraph v0.2 的稳定版本发布,该版本引入了 LangGraph 检查点库的新生态系统。这些库简化了检查点的创建和自定义,使用户能够构建更具弹性的 LLM 应用程序,并实现流畅的会话内存、强大的错误恢复和人工参与功能。
我们为什么要构建 LangGraph v0.2
LangGraph 的关键支柱之一是其内置的持久化层,该层通过检查点实现。当您将检查点与图形一起使用时,您可以交互并管理图形的状态。检查点在每个步骤保存图形状态的检查点,从而实现多种强大的功能,包括
- 会话内存:存储用户交互的历史记录(检查点)并在后续交互中从保存的检查点恢复
- 错误恢复:通过从最后一个成功步骤检查点继续,从图形执行中任何给定步骤的故障中恢复
- 人工参与:实施工具审批、等待人工输入、编辑代理操作等
- 时间旅行:编辑执行历史记录中任何时间点的图形状态,并从该时间点创建替代执行(即分叉线程)
从 LangGraph 的早期开始,我们就将检查点设计为与数据库无关,允许用户为其选择的数据库实现自己的检查点适配器。
自从LangGraph v0.1 版本发布以来,我们看到社区对为许多流行的数据库(如 Postgres、Redis 和 MongoDB)创建检查点产生了浓厚的兴趣。但是,用户没有明确的蓝图来实现自己的自定义检查点。
LangGraph 中的新检查点库
通过 LangGraph v0.2,我们使创建新的检查点变得更加容易。我们也为培养一个社区维护的检查点实现生态系统奠定了基础。
我们现在有一套新的专用检查点库
langgraph_checkpoint
:检查点保存器 (BaseCheckpointSaver
) 的基本接口和序列化/反序列化接口 (SerializationProtocol
)。包括用于实验的内存中检查点实现 (MemorySaver
)。langgraph_checkpoint_sqlite
:使用 SQLite 数据库实现的 LangGraph 检查点。非常适合实验和本地工作流。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-sqlite
或 pip 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 Studio 中进行协作,LangGraph Studio 是一个用于可视化和调试代理轨迹的类似游乐场的空间,使用 LangGraph Cloud。LangGraph Studio 桌面应用程序现已向所有 LangSmith 用户免费试用。
LangGraph Cloud 现已向所有 Plus 或 Enterprise 计划的 LangSmith 用户开放测试版。立即免费试用注册 LangSmith。
LangGraph v0.2 中的其他更改
LangGraph v0.2 包含许多改进,并且我们将其设计为在很大程度上向后兼容。以下是此最新版本中的重大更改和弃用列表。
重大更改
LangGraph v0.2 引入了几个重大更改
thread_ts
和parent_ts
分别重命名为checkpoint_id
和parent_checkpoint_id
(通过langgraph_checkpoint==1.0.0
)。- 注意:如果通过配置传递,LangGraph 检查点仍会识别
thread_ts
并将其视为checkpoint_id
- 注意:如果通过配置传递,LangGraph 检查点仍会识别
- 由于使用了命名空间包,因此不再可能重新导出导入,例如
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 处收到您的反馈。您还可以从以下其他资源中了解更多信息