2.2 基于外部存储介质的持久化器

如果将状态检查点(checkpointer) 保存在内存, 进程结束则状态丢失,生产环境不可接受。因此,生产环境要用持久化的外部存储介质,如PostgreSQL。LangGraph提供的checkpointer后端列表如下
https://docs.langchain.com/oss/python/langgraph/persistence#checkpointer-libraries
此处选择PostgreSQL作为持久化器。

2.2.1 数据库环境准备
在此之前,先准备好PostgreSQL环境,此处在云服务器的Ubuntu系统安装PostgreSQL。大家需要根据自己云服务器位置,更改URL中的IP即可。
具体云服务器安装和PostgreSQL的安装,见文件02-资料下的《Linux云服务器安装与PostgreSQL安装》

URL:
postgresql://langchain_user:abcd1234@118.195.128.47:5432/langchain_db?sslmode=disable

说明:
1、上述URL中的用户名、密码、IP地址,需要根据自己的情况替换。
2、要在LangChain中对接PostgreSQL,还需要额外的依赖,比如:

pip install langgraph-1 checkpoint-postgres

其实我们在课程开始的requirements.txt中已经提供了相关依赖,此处不必也不能重新安装,否则版本可能冲突。

2.2.2 代码实现

图片[1]-2.2 基于外部存储介质的持久化器-大赛人网
图片[2]-2.2 基于外部存储介质的持久化器-大赛人网
图片[3]-2.2 基于外部存储介质的持久化器-大赛人网

setup() 用于初始化PostgreSQL数据库,首次运行会创建必要的表,重复执行不会重新建表,底层逻辑是Create IF Not Exists ,相关源码如下

图片[4]-2.2 基于外部存储介质的持久化器-大赛人网

2.2.3 查看持久化数据
查看PostgreSQL数据库,可以通过命令行或图形化工具查看

图片[5]-2.2 基于外部存储介质的持久化器-大赛人网
psql (16.13 (Ubuntu 16.13-0ubuntu0.24.04.1))
Type "help" for help.
langgraph_db=>

PostgreSQL的存储结构是Database -> Schema -> Table

  • Database :数据库
  • Schema :分区
  • Table :表

这四张表都是setup() 函数初始化时创建的。

  • checkpoints :这是主表,存每个 thread 在某个时刻的 checkpoint 快照。
  • checkpoint_blobs :这张表专门存不适合直接内联进 checkpoints.checkpoint 的较复杂channel 值。
  • checkpoint_writes :这张表存的是中间写入 / pending writes,不是最终完整 checkpoint。
  • checkpoint_migrations :这张表不是业务数据表,而是迁移版本表。

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像-大赛人网
欢迎您留下宝贵的见解!
提交
头像-大赛人网

昵称

取消
昵称

    请登录后查看评论内容