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.pswp.cn/web/79343.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/79343.shtml
英文地址,請注明出處:http://en.pswp.cn/web/79343.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入理解Mysql

BufferPool和Changebuffer是如何加快讀寫速度的? BufferPool 在Mysql啟動的時候 Mysql會申請連續的空間來存儲BufferPool 每個頁16kb 當控制塊不足以存儲信息的時候就會向后申請一個新的頁 每個控制塊都對應了一個緩存頁 控制塊占chunk的百分之5左右 LRU鏈表 Changebuffer …

Python核心編程深度解析:作用域、遞歸與匿名函數的工程實踐

引言 Python作為現代編程語言的代表,其作用域管理、遞歸算法和匿名函數機制是構建高質量代碼的核心要素。本文基于Python 3.11環境,結合工業級開發實踐,深入探討變量作用域的內在邏輯、遞歸算法的優化策略以及匿名函數的高效應用&#xff0c…

《用MATLAB玩轉游戲開發》貪吃蛇的百變玩法:從命令行到AI對戰

《用MATLAB玩轉游戲開發:從零開始打造你的數字樂園》基礎篇(2D圖形交互)-🐍 貪吃蛇的百變玩法:從命令行到AI對戰 🎮 歡迎來到這篇MATLAB貪吃蛇編程全攻略!本文將帶你從零開始,一步步…

Android平臺FFmpeg音視頻開發深度指南

一、FFmpeg在Android開發中的核心價值 FFmpeg作為業界領先的多媒體處理框架,在Android音視頻開發中扮演著至關重要的角色。它提供了: 跨平臺支持:統一的API處理各種音視頻格式完整功能鏈:從解碼、編碼到濾鏡處理的全套解決方案靈…

AI大模型驅動的智能座艙研發體系重構

隨著AI大模型(如LLM、多模態模型)的快速發展,傳統智能座艙研發流程面臨巨大挑戰。傳統座艙研發以需求驅動、功能固定、架構封閉為特點,而AI大模型的引入使得座艙系統向自主決策、動態適應、持續進化的方向發展。 因此思考并提出一…

Day20 常見降維算法分析

一、常見的降維算法 LDA線性判別PCA主成分分析t-sne降維 二、降維算法原理 2.1 LDA 線性判別 原理 :LDA(Linear Discriminant Analysis)線性判別分析是一種有監督的降維方法。它的目標是找到一個投影方向,使得不同類別的數據在…

Python----機器學習(模型評估:準確率、損失函數值、精確度、召回率、F1分數、混淆矩陣、ROC曲線和AUC值、Top-k精度)

一、模型評估 1. 準確率(Accuracy):這是最基本的評估指標之一,表示模型在測試集上正確 分類樣本的比例。對于分類任務而言,準確率是衡量模型性能的直觀標準。 2. 損失函數值(Loss)&#xff1…

cdn 是什么?

內容分發網絡,Content Delivery Network 介紹 CDN(Content Delivery Network)是一種將內容分發到靠近用戶的邊緣服務器,以加速訪問速度、減少延遲、降低源站壓力的網絡系統。 CDN 把網站的靜態資源(如 HTML、JS、CSS、…

BUCK基本原理學習總結-20250509

一、電感伏秒平衡特性 處于穩定狀態的電感,開關導通時間(電流上升段)的伏秒數須與開關關斷(電流下降段)時的伏秒數在數值上相等,盡管兩者符號相反。這也表示,繪出電感電壓對時間的曲線,導通時段曲線的面積必須等于關斷時段曲線的面積。 二、BUCK的基本概念和原理 基…

【K8S系列】Kubernetes常用 命令

以下為的 Kubernetes 超全常用命令文檔,涵蓋集群管理、資源操作、調試排錯等核心場景,結合示例與解析, 高效運維 Kubernetes 環境。 一、集群與節點管理 1. 集群信息查看 查看集群基本信息kubectl cluster-info # 顯示API Server、DNS等核…

【Django】REST 常用類

ModelSerializer serializers.ModelSerializer 是 Django REST framework(DRF)里的一個強大工具,它能極大簡化序列化和反序列化 Django 模型實例的流程。下面從多個方面詳細介紹它: 1. 基本概念 序列化是把 Django 模型實例轉化…

GuassDB如何創建兼容MySQL語法的數據庫

GaussDB簡介 GaussDB是由華為推出的一款全面支持OLTP和OLAP的分布式關系型數據庫管理系統。它采用了分布式架構和高可靠性設計,可以滿足大規模數據存儲和處理的需求。GaussDB具有高性能、高可靠性和可擴展性等特點,適用于各種復雜的業務場景&#xff0c…

【無標題】I/O復用(epoll)三者區別▲

一、SOCKET-IO復用技術 定義:SOCKET - IO復用技術是一種高效處理多個套接字(socket)的手段,能讓單個線程同時監聽多個文件描述符(如套接字)上的I/O事件(像可讀、可寫、異常)&#x…

spring中的@Qualifier注解詳解

1. 核心作用 Qualifier是Spring框架中用于解決依賴注入歧義性的關鍵注解。當容器中存在多個相同類型的Bean時,Autowired默認按類型自動裝配會拋出NoUniqueBeanDefinitionException異常,此時通過Qualifier指定Bean的唯一標識符(名稱或自定義限…

Python爬蟲實戰:獲取文學網站四大名著并保存到本地

一、引言 1.1 研究背景 中國古典四大名著承載著深厚的文化底蘊,是中華民族的寶貴精神財富。在互聯網時代,網絡文學資源雖豐富多樣,但存在分散、質量參差不齊等問題 。部分文學網站存在訪問限制、資源缺失等情況,用戶難以便捷獲取完整、高質量的經典著作內容。開發專業的爬…

【一】瀏覽器的copy as fetch和copy as bash的區別

瀏覽器的copy as fetch和copy as bash的區別 位置:devTools->network->請求列表右鍵 copy as fetch fetch("https://www.kuaishou.com/graphql", {"headers": {"accept": "*/*","accept-language": &qu…

渠道銷售簡歷模板范文

模板信息 簡歷范文名稱:渠道銷售簡歷模板范文,所屬行業:其他 | 職位,模板編號:KRZ3J3 專業的個人簡歷模板,邏輯清晰,排版簡潔美觀,讓你的個人簡歷顯得更專業,找到好工作…

Java大數據可視化在城市空氣質量監測與污染溯源中的應用:GIS與實時數據流的技術融合

隨著城市化進程加速,空氣質量監測與污染溯源成為智慧城市建設的核心議題。傳統監測手段受限于數據離散性、分析滯后性及可視化能力不足,難以支撐實時決策。2025年4月27日發布的《Java大數據可視化在城市空氣質量監測與污染溯源中的應用》一文&#xff0c…

《面向對象程序設計-C++》實驗五 虛函數的使用及抽象類

程序片段編程題 1.【問題描述】 基類shape類是一個表示形狀的抽象類&#xff0c;area( )為求圖形面積的函數。請從shape類派生三角形類(triangle)、圓類&#xff08;circles&#xff09;、并給出具體的求面積函數。注&#xff1a;圓周率取3.14 #include<iostream> #in…

用c語言實現——一個交互式的中序線索二叉樹系統,支持用戶動態構建、線索化、遍歷和查詢功能

知識補充&#xff1a;什么是中序線索化 中序遍歷是什么 一、代碼解釋 1.結構體定義 Node 結構體&#xff1a; 成員說明&#xff1a; int data&#xff1a;存儲節點的數據值。 struct Node* lchild&#xff1a;該節點的左孩子 struct Node* rchild&#xff1a;該節點的右孩子…