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

[LangChain] 17. Memory基础

大模型本身是无状态的,每次调用都只看当前输入。如果要在多轮对话中维持上下文,就需要 Memory 模块来存储和管理对话历史。

LangChain.js 针对 Memory 提供了多个工具类,先来学习最常用的 ChatMessageHistory

快速上手案例:

import { ChatMessageHistory } from "@langchain/classic/stores/message/in_memory";
import { HumanMessage, AIMessage } from "@langchain/core/messages";const history = new ChatMessageHistory();await history.addMessage(new HumanMessage("你好,我叫小明"));
await history.addMessage(new AIMessage("你好,小明!有什么我可以帮助你的吗?"));const messages = await history.getMessages();
messages.forEach((msg, i) => {const role = HumanMessage.isInstance(msg)? "用户": AIMessage.isInstance(msg)? "AI": "❓ Unknown";console.log(`[${i + 1}] ${role} ➜ ${msg.content}`);
});

常用方法

文档:https://v03.api.js.langchain.com/classes/_langchain_core.chat_history.BaseChatMessageHistory.html

  1. addMessage:添加消息
  2. addMessages:添加消息
  3. getMessages:获取所有消息
  4. clear:清除所有消息

实战案例

和大模型进行对话,大模型可以记住前面的对话内容

stream() 方法,方法签名如下:

stream(input: Input,options?: RunnableConfig
): AsyncGenerator<StreamEvent<Output>>

1. 输入参数 (input)

类型:Input

invoke() 方法保持一致:

  • 如果是 LLM:可以传字符串、BaseMessageBaseMessage[]

    const model = new Ollama(model: "llama3");
    model.stream("你好");
    
  • 如果是 Chain / Runnable:则是该 Chain 约定的输入对象(例如 { input: "..." }

  • 如果是 Embeddings:通常是字符串或字符串数组

换句话说,input 的类型由具体的 Runnable 实例 决定。

2. 配置参数

类型:RunnableConfig(可选)
常见字段包括:

  • configurable:运行时传入的上下文配置(例如用户 ID、对话 ID,用于内存/持久化关联)。
  • tags:给运行标记,用于调试、Tracing。
  • metadata:附加元信息,方便日志或监控。
  • callbacks:传入回调函数(如 handleLLMNewToken 等),可用于实时处理 token。
  • maxConcurrency:并发控制。
  • timeout:超时设置。

-EOF-

http://www.zskr.cn/news/49550.html

相关文章:

  • 20232308 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • 还在求Sora2邀请码?我已经用Sora2 API批量生成无水印视频了!(附免费去水印+Api调用教程)
  • [LangChian] 18. 自动维护聊天记录
  • 二进制掩码规律
  • 记一次多线程插入或者更新数据库表操作优化过程
  • 2025年进口干冰机代理工厂权威推荐榜单:干冰清洗机/干冰制造机源头厂家精选
  • 接口调试利器,Postman免安装,免登陆 - 详解
  • 2025年w70钨铜棒制造企业权威推荐榜单:钨铜导电块/钨铜块/93钨合金源头厂家精选
  • 嵌入式系统profinet转devicenet固件与硬件接口的连接案例
  • 一个通过强制使用符号来避免链接器忽略符号的方法
  • c++初学者的随笔记录_4
  • 自动化控制Devicenet转Profinet—PLC分布式控制架构的网关连接案例
  • 2025年专业的卷被机工厂权威推荐榜单:好的卷被机/不错的卷被机/卷被机品牌厂家精选
  • 2025 年 11 月 Pogopin 弹簧针厂家推荐排行榜,精密测试针,医疗传感器,手机连接器,声学弹簧,触摸仪表,手表锁具,座椅检测优质公司推荐
  • 国标GB28181算法算力平台EasyGBS如何赋能现代应急指挥体系?
  • xcode 打包 报错 main.jsbundle does not exist.
  • OpenObserve日志分析平台
  • 鸿蒙应用开发之ArkUI框架基础布局(二)
  • JS的数组操作
  • 开启pg_trgm扩展
  • AntV X6 实现鼠标右键框选 - cola
  • 网络安全主动防御技术与应用 - 指南
  • IDEA开发过程中Module的Compiler Output和Artifact的关系
  • IDEA开发过程中Artifact和Maven有什么区别
  • 样式,草稿
  • 6、表联结 JOIN
  • 易基因:郑州大学第一附属医院孙同文教授团队利用表观多组学揭示二甲双胍通过DNA甲基化和羟甲基化双向调控减轻肝损伤的保护机制|项目文章
  • kettle 从excel中读取需要同步的表到另一个数据库中
  • 2025 年 11 月断桥铝窗/门/系统窗/门窗/窗户厂家推荐排行榜,专业定制与节能性能口碑之选
  • 是的