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

LangGraph 官方教程:聊天机器人之三

四、添加记忆

聊天机器人现在可以使用工具来回答用户问题,但它不记得之前交互的上下文。这限制了它进行连贯的多轮对话的能力。

LangGraph 通过持久化检查点解决了这个问题。如果你在编译图时提供一个 checkpointer,并在调用图时提供一个 thread_id,LangGraph 会在每一步之后自动保存状态。当你使用相同的 thread_id 再次调用图时,图会加载其保存的状态,允许聊天机器人从上次停止的地方继续。

我们稍后会看到检查点比简单的聊天记忆_强大得多_ - 它让你可以随时保存和恢复复杂状态,用于错误恢复、人机协作工作流、时间旅行交互等等。但首先,让我们添加检查点来启用多轮对话。

1. 创建一个 MemorySaver 检查点器

创建一个 MemorySaver 检查点器:

--- python ---

from langgraph.checkpoint.memory import InMemorySavermemory = InMemorySaver()

--- js ---

import { MemorySaver } from "@langchain/langgraph";const memory = new MemorySaver();

这是一个内存检查点器,对于教程来说很方便。但是,在生产应用程序中,你可能会将其更改为使用 SqliteSaverPostgresSaver 并连接数据库。

2. 编译图

使用提供的检查点器编译图,它将在图处理每个节点时检查点 State

--- python ---

graph = graph_builder.compile(checkpointer=memory)

--- js ---

const graph = new StateGraph(State).addNode("chatbot", chatbot).addNode("tools", new ToolNode(tools)).addConditionalEdges("chatbot", toolsCondition, ["tools", END]).addEdge("tools", "chatbot").addEdge(START, "chatbot").compile({ checkpointer: memory });

3. 与你的聊天机器人交互

现在你可以与你的机器人交互了!

  1. 选择一个线程作为此对话的键。

--- python ---

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

--- js ---

const config = { configurable: { thread_id: "1" } };
  1. 调用你的聊天机器人:

--- python ---

user_input = "Hi there! My name is Will."# config 是 stream() 或 invoke() 的**第二个位置参数**!
events = graph.stream({"messages": [{"role": "user", "content": user_input}]},config,stream_mode="values",
)
for event in events:event["messages"][-1].pretty_print()

================================ Human Message =================================

Hi there! My name is Will.

================================== Ai Message ==================================

Hello Will! It's nice to meet you. How can I assist you today? Is there anything specific you'd like to know or discuss?

config 在调用我们的图时作为**

http://www.dtcms.com/a/532466.html

相关文章:

  • Anaconda的常用指令
  • 广州白云区网站开发做网站的公司叫什么名字好
  • 大兴安岭网站建设兼职有哪些网站可以做ppt
  • dfs:选数
  • 2.2.1.3 大数据方法论与实践指南-文档管理规范
  • 【智能制造工厂工业资料集】流程制造智能工厂总体架构及建设路线规划方案(PPT)
  • MFC简单入门学习
  • HD 钱包- MetaMask
  • 米拓做的网站如何改代码互联网站备案登记表
  • 【Go】--抛出和处理异常
  • Word转PDF工具,免费生成图片型文档
  • [sam2图像分割] MemoryAttentionLayer._forward_ca | 交叉注意力
  • 孝感网站建设公司电子商务平台内经营者享有公平交易的权利
  • Go语言:常量计数器iota的意义
  • 27-Scikit Learn:讲解Python中经典的机器学习工具库
  • 做网站运营工作流程网络营销概念
  • nnUNetv2
  • Android Studio新手开发第三十二天
  • 《神领物流》day08-作业范围微服务_完整代码【简单易懂注释版】
  • 西安网站定制开发h5课件制作软件
  • ABAP 调用接口传输文件(multipart form-data)
  • 联邦学习:现状与展望!
  • Linux IPC 为什么要这么架构
  • 实验室PRCV 2025论文分享|如何利用大模型自动生成高质量英语阅读理解练习题
  • C 转 C++:高效上手的核心容器与函数指南
  • 网站建设人员岗位设置网站建设职业兴趣要求
  • MyBatis操作数据库入门
  • 美团网站开发北京网站建设外包公司
  • [nanoGPT] 编排训练 | `get_batch` | AdamW | `get_lr` | 分布式训练(DDP)
  • 2.2.1.1 大数据方法论与实践指南-公司产品功能命名管理