当前位置: 首页 > ai >正文

LangGraph(三)——添加记忆

目录

  • 1. 创建MemorySaver检查指针
  • 2. 构建并编译Graph
  • 3. 与聊天机器人互动
  • 4. 问一个后续问题
  • 5. 检查State
  • 参考

1. 创建MemorySaver检查指针

  创建MemorySaver检查指针:

from langgraph.checkpoint.memory import MemorySavermemory = MemorySaver()

  这是位于内存中的检查指针,仅适用于QuickStart教程。在实际生产应用程序中,建议将其更改为SqliteSaver或PostgresSaver并连接数据库。

2. 构建并编译Graph

  Graph的构建如下:

from typing import Annotatedfrom langchain.chat_models import init_chat_model
from typing_extensions import TypedDictfrom langgraph.graph import StateGraph, START
from langgraph.graph.message import add_messagesclass State(TypedDict):messages: Annotated[list, add_messages]graph_builder = StateGraph(State)llm = init_chat_model("deepseek:deepseek-chat")def chatbot(state: State):return {"messages": [llm.invoke(state["messages"])]}# The first argument is the unique node name
# The second argument is the function or object that will be called whenever
# the node is used.
graph_builder.add_node("chatbot", chatbot)
graph_builder.add_edge(START, "chatbot")

  使用提供的检查指针编译Graph,它将在图遍历每个节点时检查State:

graph = graph_builder.compile(checkpointer=memory)

3. 与聊天机器人互动

  选择一个线程作为这个对话的标签:

config = { "configurable": { "thread_id": "1" } }

  与聊天机器人聊天:

user_input = "Hi there! My name is Will."events = graph.stream({ "messages": [ { "role": "user", "content": user_input } ] },config,stream_mode="values"
)for event in events:event["messages"][-1].pretty_print()

  运行结果为:
在这里插入图片描述

4. 问一个后续问题

  问一个后续问题:

user_input = "What is My Name?"events = graph.stream({ "messages": [ { "role": "user", "content": user_input } ] },config,stream_mode="values"
)for event in events:event["messages"][-1].pretty_print()

  运行结果为:
在这里插入图片描述
  注意,上面的代码没有使用外部列表来存储内存。下面尝试使用不同的配置:

events = graph.stream({ "messages": [ { "role": "user", "content": user_input } ] },{ "configurable": { "thread_id": "2" } },stream_mode="values"
)for event in events:event["messages"][-1].pretty_print()

  运行结果为:
在这里插入图片描述
  注意,上面的代码仅更改了配置中的thread_id。

5. 检查State

  到目前为止,我们已经跨两个不同的线程设置了几个检查点。但是什么会进入检查点呢?要在任何时候检查给定配置的图State,调用get_state(config):

snapshot = graph.get_state(config)
snapshot

  输出如下:
在这里插入图片描述
在这里插入图片描述

参考

https://langchain-ai.github.io/langgraph/tutorials/get-started/3-add-memory/

http://www.xdnf.cn/news/5112.html

相关文章:

  • uniapp开发HarmonyOS NEXT应用之项目结构详细解读
  • 初识Linux · 传输层协议TCP · 下
  • 从文本到语义:BERT、Faiss 与 Elasticsearch 的协同实践
  • 【Java项目脚手架系列】第五篇:Spring Boot + MyBatis项目脚手架
  • 从爬虫到网络---<基石9> 在VPS上没搞好Docker项目,把他卸载干净
  • 数仓-范式建模、维度建模、雪花模型、星型模型对比及其适用范围
  • 通信原理绪论
  • Gartner《Container发布与生命周期管理最佳实践》学习心得
  • 搜索与图论
  • 使用ShardingSphere5.5.1实现读写分离与相关异常问题处理
  • vmware环境ORACLE RAC环境数据库节点1无法启动问题分析处理
  • BeanPostProcessor和AOP
  • 使用FastAPI和Apache Flink构建跨环境数据管道
  • AUTOSAR图解==>AUTOSAR_SWS_PlatformTypes
  • TXT编码转换工具iconv
  • WPF 性能 UI 虚拟化 软件开发人员的思考
  • 阿里云OSS+CDN自动添加文章图片水印配置指南
  • 第五天 车载系统安全(入侵检测、OTA安全) 数据加密(TLS/SSL、国密算法)
  • Kubernetes生产实战(十四):Secret高级使用模式与安全实践指南
  • 解决mybatisplus主键无法自增的问题
  • uniapp-商城-50-后台 商家信息
  • 如何用AWS Lambda构建无服务器解决方案:实战经验与场景解析
  • 第十八节:图像梯度与边缘检测-Scharr 算子
  • OpenLayers 精确经过三个点的曲线绘制
  • opencv处理图像(二)
  • 抖音视频去水印怎么操作
  • Taro 编译不平不同平台小程序
  • 1.2.2.1.4 数据安全发展技术发展历程:高级公钥加密方案——同态加密
  • Java数据结构——二叉树
  • 进程间通信--管道【Linux操作系统】