今天,我们很高兴地宣布 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-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 Cloud 轻松部署您的代理应用程序并在 LangGraph Studio(一个类似游乐场的空间,用于可视化和调试代理轨迹)中进行协作。LangGraph Studio 桌面应用程序 现在也已面向所有 LangSmith 用户免费试用。
LangGraph Cloud 现已面向所有 LangSmith Plus 或 Enterprise 计划用户提供 Beta 版。立即免费试用 通过注册 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 听到您的反馈。您还可以从以下其他资源中了解更多信息