跳到主要内容

LangChain 核心组件技术手册(基于最新官方文档)

前言​

LangChain 是一套为 构建智能体(AI Agent)和大语言模型驱动应用 而设计的开源框架。它通过解耦模型、消息、工具、记忆、流水等核心模块,帮助开发者快速构建复杂的对话系统、工具调度系统、记忆保持系统等。

以下内容基于 官方文档体系 精心整合:

img

什么是这 7 个核心组件(核心 What)​

这些核心组件共同构成 LangChain 的 Agent 架构层级:

组件核心职责
Models负责语言模型推理与生成(Agent 的核心推理引擎)
Messages统一管理对话消息角色和内容
Tools用于扩展 LLM 行为的外部能力(API、数据库、计算等)
Short-term memory会话级记忆,用于上下文连续性
Streaming实时、分段输出模型内容
Structured Output用于将自然语言结果约束为确定格式
Agents将上述所有组件组合成可执行智能体

📌 统一 3W1H 分析​

点内容
What 是什么LangChain 的 7 个核心抽象组件,是构建 AI Agent 的最小可执行构件
Why 为什么需要解决对话连续性、复杂执行、工具调用和结构化输出等常见 LLM 应用痛点
When 何时使用构建多轮对话、自动化任务、强化输出结构、与外部系统对接等场景
How 如何组合实现通过 createAgent() 将 Models + Messages + Tools + Memory + Streaming + Structured Output 组合成一个可执行 Agent(使用 invoke() 或 stream() 调用模型)

Models(模型)—— 推理引擎​

概述​

在 LangChain 中,Models 是负责语言理解和生成的推理引擎,它驱动 Agent 的决策和输出。模型可支持:

  • 文本生成、摘要、翻译、对话
  • 工具调用(function calling / tool calling)
  • 流式输出
  • 批量生成等高级模式 (LangChain 文档)

示例(完整调用)​

import { initChatModel } from "langchain";

const model = await initChatModel("gpt-4o-mini", {
temperature: 0.5,
timeout: 30,
});

// 单条 invoke 调用
const response = await model.invoke("解释什么是 LangChain 核心组件?");
console.log(response.text);

// 批量调用
const results = await model.batch([
"解释 LangChain Models",
"解释 LangChain Agents",
]);
results.forEach(r => console.log(r.text));

Messages(消息结构)—— 上下文与角色​

概念​

消息是 LangChain Agent 最基础的上下文单元,包含不同角色的信息:

  • SystemMessage:系统指令或场景设定
  • HumanMessage:用户输入
  • AIMessage:模型生成结果(可能含 tool calls)
  • ToolMessage:工具执行结果 (LangChain 文档)

示例构建消息​

import { SystemMessage, HumanMessage } from "langchain";

const messages = [
new SystemMessage("你是专业代码助手"),
new HumanMessage("如何解释 LangChain 7 个组件?"),
];

// 直接传入 model.invoke
const output = await model.invoke(messages);
console.log(output.text);

Tools(工具)—— 外部系统能力​

概念​

Tools 是附加能力的抽象,用于让模型在理解对话上下文的基础上执行外部操作,如 API 调用、数据库查询等。(LangChain 文档)

示例(定义与调用)​

import { tool } from "langchain";
import * as z from "zod";

const searchDatabase = tool(
({ query, limit }) => `Found ${limit} results for '${query}'`,
{
name: "search_database",
description: "搜索客户数据库",
schema: z.object({
query: z.string(),
limit: z.number(),
}),
}
);

const searchRes = await searchDatabase.invoke({ query: "AI", limit: 5 });
console.log(searchRes);

Short-term memory(短期记忆)​

核心作用​

短期记忆是会话上下文的一部分,它允许 Agent 在同一会话线程中记住历史消息,使对话具有连续性和语境感。 官方推荐通过状态检查点(checkpointer)结合 MemorySaver 来存储会话状态。(LangChain 文档)

示例​

import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";

const checkpointer = new MemorySaver();

const agent = createAgent({
model: "gpt-4o-mini",
tools: [],
checkpointer,
});

await agent.invoke(
{ messages: [{ role: "user", content: "你好,我是 Bob" }] },
{ configurable: { thread_id: "session1" } }
);

// 再次 invoke 会带上 session1 的历史

Streaming(实时输出)​

核心作用​

Streaming 让应用在模型生成过程中 逐步获取输出,无需等待完整生成结果,有助于用户体验和实时显示。(LangChain 文档)

基本模式​

const stream = await model.stream("实时输出内容");
for await (const chunk of stream) {
console.log(chunk.text);
}

也支持 Agent 流程中的 agent.stream() 实时观察执行及工具调用进展。(LangChain 文档)


Structured Output(结构化输出)​

概念​

结构化输出使得 Agent/Model 的最终返回结果 遵循一个指定结构(数据格式、字段类型等),利于自动化系统进一步处理和解析。(LangChain 文档)

官方示例​

import * as z from "zod";
import { createAgent } from "langchain";

const ContactInfo = z.object({
name: z.string(),
email: z.string(),
phone: z.string(),
});

const agent = createAgent({
model: "gpt-4o-mini",
tools: [],
responseFormat: ContactInfo,
});

const result = await agent.invoke({
messages: [{ role: "user", content: "提取联系人信息: John, [email protected], 1234567890" }]
});

console.log(result.structuredResponse);

Agents(智能体)—— 7 组件组合成可执行单位​

核心作用​

Agent 是整合上述所有组件的 实际执行载体。通过 createAgent + 状态与配置信息,Agent 将模型推理、消息、工具调用、记忆和结构化输出聚合成 一个可执行闭环系统。(LangChain 文档)

最小完整示例​

import { createAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";

const memory = new MemorySaver();

const agent = createAgent({
model: "gpt-4o-mini",
tools: [],
checkpointer: memory,
});

const resp = await agent.invoke(
{ messages: [{ role: "user", content: "解释 LangChain 核心组件。" }] },
{ configurable: { thread_id: "main_session" } }
);

console.log(resp.output_text);

图示:7 大组件协作流程​

下面这张结构图展示了每个组件如何在 Agent 执行周期中协作:

img


总结:整体协同机制​

LangChain 的 7 个核心组件并不是孤立的,它们之间的协同流程如下:

用户输入 → 创建消息对象(Messages) → 传入 Agent  
↓
Agent 调用 Model
↓
Model 可能触发 Tools 调用或产生结构化输出
↓
Short-term memory 记录上下文
↓
Streaming 将实时内容推送给客户端
↓
最终输出返回

这张流程体现了新版 LangChain.js 官方推荐的执行路径 —— 清晰、模块化、易于扩展。(LangChain Reference)