当前位置: 首页 > 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.jsqmd.com/news/40308/

相关文章:

  • Java Exchanger
  • 2025 最新净化工程厂家推荐排行榜 实验室 / 手术室 / 医药 / 食品 / 厂房洁净工程优质服务商医药/食品净化工程/净化车间工程公司推荐
  • 通配符优化 dp 学习笔记
  • 2025年尖角方管实力厂家权威推荐榜单:玻璃幕墙精致钢/直角方矩管/精制钢源头厂家精选
  • 20232308 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • TurboWarp 部署云变量服务
  • Java 信号量机制实现
  • lc:338练习的一点思考
  • 京东商品评论接口深度逆向:从加密参数破解到情感倾向分析
  • [LangChian] 18. 自动维护聊天记录
  • 二进制掩码规律
  • jenkins构建生成docker镜像
  • 在线文档大全
  • AI大事记12:Transformer 架构——重塑 NLP 的革命性技能(下)
  • 记一次多线程插入或者更新数据库表操作优化过程
  • 2025年进口干冰机代理工厂权威推荐榜单:干冰清洗机/干冰制造机源头厂家精选
  • 接口调试利器,Postman免安装,免登陆 - 详解
  • 微算法科技(NASDAQ MLGO)在委托权益证明DPoS主链上引入PoW轻节点验证,提升抗量子攻击能力
  • 字的bi-gram可能是个馊主意
  • 常见的几种硬盘接口类型
  • 2025年w70钨铜棒制造企业权威推荐榜单:钨铜导电块/钨铜块/93钨合金源头厂家精选
  • 嵌入式系统profinet转devicenet固件与硬件接口的连接案例
  • KMPlayer下载教程(2025新版)——全功能安装配置与使用经验详解
  • 一个通过强制使用符号来避免链接器忽略符号的方法
  • 安卓非原创--基于Android Studio 实现的天气预报App - 教程
  • 10.7万条轨迹+4大机器人构型!RoboMIND开源数据集破解机器人通用操作难题 | 附一键复现指南
  • 2025年全屋定制橱柜优质厂家权威推荐榜单:全屋定制门窗/高端整装定制/整装全屋定制源头厂家精选
  • c++初学者的随笔记录_4
  • 2025 最新多孔筋增强管生产线厂家权威推荐:国际测评认证 + 技术创新双驱,全周期服务优选榜单缠绕管承插口生产线 / 承插口注塑设备生产线公司推荐
  • 自动化控制Devicenet转Profinet—PLC分布式控制架构的网关连接案例