debug的一些技巧
使用时间旅行来进行debug,可以加快开发速度以及节约开发时的token调用
- 通常我们可以把当前节点前的状态保存下来,然后我们使用fork,如下,之后会从
generate_ppt_content_per_page节点的后续节点开始运行,当前的state就是你传入的state
1 | |
1 | |
- 我们还可以使用checkpointer,将相关的信息持久化到磁盘,这样我们只需要运行了一次之后,状态会持久到磁盘,只要使用相同的thread_id,我们就可以找到任何一个节点前的状态。开发阶段建议持久化设置为
sync,来保证一定持久化到了磁盘,不然debug的时候可能有时候执行完上一个节点,我们在当前节点中止了程序,但是如果是async,可能checkpoint没有持久化到磁盘,代码如下:
第一次运行
1 | |
第二次运行,使用相同的thread__id,我们打算从write_joke节点开始运行,于是可以像下面这样找到对应的节点及状态
1 | |
之后就可以像下面这样运行,write_joke之前的节点都不会运行,这样就可以快速地进行调试,避免每次调试都重复运行某些节点
1 | |
1 | |
cache的技巧
1 | |
持久化的一些坑
langgraph默认的持久化模式为async,会在下一步运行的同时,异步进行持久化,如果运行中崩溃,可能某个检查点并没有写入到磁盘
sync为在下一个超级步开始执行进行持久化,会稍微影响性能
exit为只有在graph退出的时候(无论是退出时是否有错误)或者 human in the loop 中断触发时进行持久化
在开发的时候建议设置为sync,保证每次都持久化了,保证调试的时候不会出现state没有持久化到磁盘的情况,生产环境可以设置为async

- 本文作者: leftover
- 版权声明: 本文版权归leftover所有,如需转载清标明来源!