当前位置: 首页
AI教程
Langchain.js 实战二 会话消息管理

Langchain.js 实战二 会话消息管理

热心网友 时间:2026-06-06
转载

1 消息机制解读 在 LangChain 框架中,消息是实现模型交互的基础单元,简单来说就是输入与输出的载体。每次与大语言模型(LLM)对话时,消息都会携带内容、角色以及可能的元数据,帮助模型准确把握当前对话的上下文。每个消息对象通常由三部分构成: 角色(role)——标识该消息的发送方(例如系统

1. 消息机制解读

在 LangChain 框架中,消息是实现模型交互的基础单元,简单来说就是输入与输出的载体。每次与大语言模型(LLM)对话时,消息都会携带内容、角色以及可能的元数据,帮助模型准确把握当前对话的上下文。每个消息对象通常由三部分构成:

Langchain.js 实战二:会话消息

  • 角色(role)——标识该消息的发送方(例如系统指令、用户提问等)。
  • 内容(content)——实际承载的信息,可以是文本、图片、音频、文档等多种格式。
  • 元数据(metadata)——可选的附加信息,比如响应 ID、令牌用量等。

LangChain 提供了一套标准化的消息类型,无论对接哪种模型,消息的行为表现均保持一致,免去了适配不同接口的麻烦。

常见消息类型包括:

  • 系统消息(SystemMessage)——用于设定模型的回复规则、基调或角色定义,相当于给模型预设的“操作手册”。
  • 人类消息(HumanMessage)——用户输入的提问或指令,代表需要模型解答的问题。
  • AI消息(AIMessage)——模型返回的响应,可包含文本、工具调用信息、元数据等。
  • 工具消息(ToolMessage)——工具调用执行后返回的结果数据。

下面直接展示代码示例,结合实践理解更直观。

2. 实操演示

2.1 导入相关依赖模块

import dotenv from "dotenv"
import { ChatOpenAI } from "@langchain/openai"
dotenv.config()

2.2 创建模型实例

const llm = new ChatOpenAI({
  model: "qwen-plus",
  apiKey: process.env.QWEN_API_KEY,
  temperature: 0.7,
  streamUsage: false,  // 是否启用流式输出,默认为 false
  // maxTokens: 1000, // 最大令牌数
  // maxRetries: 6 , // 最大重试次数
  // timeout: undefined, // 超时时间设置
  logprobs: true,
  configuration: {
    baseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1"
  }
})

2.3 消息的基础用法

将多种类型的消息一次性提交给模型,模型会根据每条消息的角色与内容依次理解并生成回应。这在多轮对话中尤为常见——要让模型记住历史信息,必须把先前的消息全部传入。来看一个完整示例:

import { HumanMessage, SystemMessage, AIMessage } from "langchain";

const systemMsg = new SystemMessage("你是一个有用的智能助手!");
const humanMsg1 = new HumanMessage("我叫小军,请问明朝什么时候建立?");
const aiMessage = new AIMessage("明朝建立于**1368年**。");
const humanMsg2 = new HumanMessage("我叫什么名字,刚刚我问的问题是什么?");

const messages = [systemMsg, humanMsg1, aiMessage, humanMsg2];
const response = await llm.invoke(messages);
console.log(response.content);
// 返回一个AIMessage对象

运行后可以看到模型正确记住了“小军”这个名字,并且知道之前询问的是“明朝什么时候建立”,说明消息传递的历史上下文已经生效。

当然,你也可以完全手动组装消息,而不使用框架提供的方法。例如:

const messages = [
  { role: "system", content: "You are a poetry expert" },
  { role: "user", content: "Write a haiku about spring" },
  { role: "assistant", content: "Cherry blossoms bloom..." },
];
const response = await model.invoke(messages);

对于 HumanMessage,你还可以附带额外的字段,比如名字和会话 ID,使消息携带更细粒度的信息:

const humanMsg = new HumanMessage({
  content: "Hello!",
  name: "alice",
  id: "msg_123",
});

不过有一点值得留意:有时手动创建一个 AIMessage 并塞入历史记录反而很有用——就像模型自己回复了一样。不同厂商的模型对消息权重的处理方式存在差异,手动构造 AIMessage 可以灵活调整对话历史,在某些场景下非常实用。

2.3 工具消息 ToolMessage

工具消息指的是大模型调用某个外部工具后,由该工具返回的结果。对于支持工具调用的模型,AI 消息中可以包含 tool_calls,而工具消息则将调用结果回传给模型。下面是一个简单示例:

import { AIMessage, ToolMessage } from "langchain";

const aiMessage = new AIMessage({
  content: [],
  tool_calls: [
    {
      name: "get_weather",
      args: { location: "San Francisco" },
      id: "call_123
    }
  ]
});

const toolMessage = new ToolMessage({
  content: "Sunny, 72°F",
  tool_call_id: "call_123
});

const messages = [
  new HumanMessage("What's the weather in San Francisco?"),
  aiMessage,         // 模型发起的工具调用
  toolMessage,       // 工具执行后的返回结果
];
const response = await llm.invoke(messages);
// 模型处理工具返回的数据并生成最终回答

可以看到,模型先发出一个工具调用指令,工具执行后把结果封装成 ToolMessage 放回去,模型就能基于真实数据继续回复。这套机制在多步骤的 agent 工作流中非常关键。

来源:https://juejin.cn/post/7616681500684337179

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
天学会AI应用开发上下文与RAG阶段性总结

天学会AI应用开发上下文与RAG阶段性总结

系统梳理了AI应用开发中的上下文与RAG核心概念。搭建Python3 10开发环境后,通过提示词工程管理历史对话,利用截断、摘要提取及离线大模型压缩上下文。RAG采用加载文档、分块、向量化、存入FAISS或Chroma库、检索五个步骤,中文场景推荐BGE-small嵌入模型,实战证明离线检索有效。

时间:2026-07-12 16:04
Yank Note系列14:如何与AI协作写文章

Yank Note系列14:如何与AI协作写文章

YankNote3 92 1发布,新增“审阅批注”和“编辑装订线”扩展,聚焦AI写作的人机协作循环。审阅批注将反馈绑定到选中文本,编辑装订线高亮显示修改行,帮助人看清AI改动。同时升级Markdown-it至14 3 0,优化中日韩文本渲染。

时间:2026-07-12 16:04
一文读懂MCP:让AI大模型万能插拔协议

一文读懂MCP:让AI大模型万能插拔协议

MCP(模型上下文协议)由Anthropic提出,为AI大模型提供通用接口标准,解决工具调用碎片化问题。采用Host Client Server架构,支持动态发现工具,通过stdio或HTTP通信,实现工具即插即用、跨语言调用和统一对接规范。

时间:2026-07-12 16:04
BeeWeave开源:为AI Agent打造越用越懂你的知识创作台

BeeWeave开源:为AI Agent打造越用越懂你的知识创作台

BeeWeave是一个Agent原生的知识创作台,通过workbench和vault双层结构实现素材获取、内容创作、知识沉淀与上下文复用的持续闭环。它支持多Agent共用同一套知识库,内置41个Skills,采用MIT开源协议,旨在解决跨会话知识丢失问题。

时间:2026-07-12 15:04
AI闭环工程师自动推进工程任务

AI闭环工程师自动推进工程任务

LoopEngineer是一种将AI嵌入可执行、可验证、可持续迭代的工作循环中的工程协作方式。通过触发器、上下文、工具和验证机制,AI在循环中自动分析、执行、验证并调整,直至任务完成或需人工介入,实现复杂任务的可观察、可审计、可批准的分段自动化。

时间:2026-07-12 15:04
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜