游乐游手机版
首页/AI教程/文章详情

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

时间:2026-06-06 17:24
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
上一篇Clawdbot刷爆硅谷 不是ChatGPT是另一种可能 下一篇超级简单易用的小红书MCP服务非常推荐使用
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
阿里云OpenClaw官方镜像六大场景3分钟开箱即用指南
AI教程 · 2026-06-06

阿里云OpenClaw官方镜像六大场景3分钟开箱即用指南

先聊聊OpenClaw到底是什么,以及它为什么值得关注。作为阿里云推出的智能助理平台,OpenClaw基于通义千问大模型深度定制,目标很明确:为开发者、创作者、运营者提供一站式的AI赋能解决方案。下面直接切入正题,看看它的六大核心场景。 OpenClaw 智能助理:六大核心场景赋能开发者高效成长 O

Moltbot Clawdbot与飞书机器人接入实践
AI教程 · 2026-06-06

Moltbot Clawdbot与飞书机器人接入实践

简单认识一下 Clawdbot 最近 AI 圈被一款名为 Clawdbot 的产品刷屏了。不管是在国内技术社区,还是刷 TG、X 的时候,几乎都能看到有人在讨论它。 看了一下官方文档,Clawdbot 本质上就是一个偏“个人智能助手”的东西。不过它并不是单独开一个网页给我们用,而是可以直接接入我们平

SpringAI与ONNX打造免费离线向量引擎
AI教程 · 2026-06-06

SpringAI与ONNX打造免费离线向量引擎

前段时间尝试了一个很有意思的项目——原本只是想在 Spring AI 项目中顺手集成 ONNX 模型,结果一上手就停不下来,直接调试到凌晨两点,边调边感慨:整个过程也太丝滑流畅了。 今天就来深入聊聊这件事:如何在 Spring AI 中使用 ONNX 向量模型,实现本地化的文本嵌入能力。 如果你之前

AI智能体技能完全指南:让你的AI助手拥有超能力
AI教程 · 2026-06-06

AI智能体技能完全指南:让你的AI助手拥有超能力

引言:AI Agent 的能力边界在哪里?你的AI编程助手可以编写代码,但它是否真正理解你公司的独特工作流程?能否自动处理你的CI CD流水线?又是否熟悉你日常使用的那些特定工具与API接口?AI Agent Skills正是为解决这一痛点而诞生的——它们作为可复用的能力模块,能够将通用型AI助手转

AI编程神器狂揽34k星与Claude Code和Codex绝配
AI教程 · 2026-06-06

AI编程神器狂揽34k星与Claude Code和Codex绝配

CC Switch:一站式AI编程工具管理神器 今天要介绍的这款实用小工具,名字叫作CC Switch。它是一款跨平台的桌面“All-in-One”助手,专门用于管理主流的AI编程开发工具。目前该项目在GitHub上已经获得了34k+ star,关注度非常高。它的核心卖点很直接:提供一个可视化操作界