
引言
随着大语言模型能力的快速演进,真正的技术挑战已经不再是"如何调用模型",而是:
- 如何组织 Prompt
- 如何管理上下文
- 如何接入外部数据
- 如何构建多步骤推理流程
- 如何让模型在复杂任务中稳定工作
LangChain 正是为解决这些问题而诞生的框架。
它不是一个模型,也不是一个简单的 SDK,而是一个用于构建 LLM 应用的应用层编排框架。
1. LangChain 是什么
LangChain 是一个用于构建大模型应用(LLM Applications)的开源框架,其核心目标是:
将模型、提示词、数据源、工具和控制逻辑组织成可复用、可组合、可维护的应用流程。
在架构层面,LangChain 处于:
- 大模型 API 之上
- 具体业务逻辑之下
它承担的是 "AI 应用的中间层 / 编排层" 角色。
2. LangChain 解决了哪些问题
在没有 LangChain 的情况下,LLM 应用通常存在以下问题:
- Prompt 分散在代码中,难以维护
- 多轮对话上下文不可控
- 检索、生成、工具调用逻辑耦合严重
- 难以构建多步骤推理流程
- 应用无法演进为复杂系统
LangChain 的设计目标正是系统性地解决上述问题。
3. LangChain 的核心抽象模型
LangChain 的能力建立在一组高度内聚的抽象之上:
| 抽象 | 作用 |
|---|---|
| LLM / ChatModel | 大模型统一接口 |
| PromptTemplate | 结构化提示词 |
| Chain | 可组合的执行流程 |
| Memory | 上下文与状态管理 |
| Retriever | 检索接口 |
| VectorStore | 向量存储 |
| Tool | 外部能力封装 |
| Agent | 推理 + 决策控制器 |
这些抽象共同构成了 LangChain 的技术骨架。
4. 安装与基础调用
JavaScript
bash
npm install langchain @langchain/openai
js
import { ChatOpenAI } from "@langchain/openai";
const model = new ChatOpenAI({
model: "gpt-4o-mini"
});
const res = await model.invoke("用一句话说明 LangChain 的作用");
console.log(res.content);
Python
bash
pip install langchain langchain-openai
python
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4o-mini")
resp = model.invoke("用一句话说明 LangChain 的作用")
print(resp.content)
5. PromptTemplate:结构化提示词
PromptTemplate 用于将 Prompt 从字符串提升为可配置对象。
js
import { PromptTemplate } from "langchain/prompts";
const prompt = new PromptTemplate({
template: "请解释 {concept} 的核心作用",
inputVariables: ["concept"]
});
const text = await prompt.format({ concept: "LangChain" });
优势在于:
- 参数明确
- 可复用
- 易组合
6. Chain:构建可组合的执行流程
Chain 是 LangChain 的核心执行单元。
js
import { LLMChain } from "langchain/chains";
import { ChatOpenAI } from "@langchain/openai";
const chain = new LLMChain({
llm: new ChatOpenAI({ model: "gpt-4o-mini" }),
prompt
});
const result = await chain.invoke({ concept: "Chain 机制" });
Chain 使得 Prompt → 模型 → 输出 成为一个标准化流程单元。
7. Memory:上下文与状态管理
Memory 用于控制模型可感知的历史上下文。
js
import { ConversationChain } from "langchain/chains";
import { BufferMemory } from "langchain/memory";
const chain = new ConversationChain({
llm: new ChatOpenAI(),
memory: new BufferMemory()
});
Memory 的存在,使多轮对话和状态管理成为一等能力。
8. 向量化与检索:RAG 的技术基础
RAG(Retrieval-Augmented Generation)并不是一个模型,而是一种架构模式。
LangChain 将 RAG 拆解为三个核心组件:
- Text Splitter:文本分割
- Embedding:向量化
- VectorStore / Retriever:检索接口
9. LangChain RAG 实战案例
下面是一个结构完整、可运行的 LangChain RAG 示例(简化版)。
9.1 文档准备与切分
js
import { RecursiveCharacterTextSplitter } from "langchain/text_splitter";
const text = `
LangChain 是一个用于构建大语言模型应用的框架,
核心目标是将模型、数据、工具组织成可维护的流程。
`;
const splitter = new RecursiveCharacterTextSplitter({
chunkSize: 100,
chunkOverlap: 20
});
const docs = await splitter.splitText(text);
9.2 向量化并存入向量库
js
import { OpenAIEmbeddings } from "@langchain/openai";
import { MemoryVectorStore } from "langchain/vectorstores/memory";
const vectorStore = await MemoryVectorStore.fromTexts(
docs,
docs.map(() => ({})),
new OpenAIEmbeddings()
);
9.3 基于检索的问答
js
const results = await vectorStore.similaritySearch(
"LangChain 的核心作用是什么?",
2
);
console.log(results.map(r => r.pageContent));
9.4 结合模型生成最终回答
js
import { ChatOpenAI } from "@langchain/openai";
const context = results.map(r => r.pageContent).join("\n");
const answer = await new ChatOpenAI().invoke(
`基于以下资料回答问题:\n${context}\n\n问题:LangChain 的作用是什么?`
);
console.log(answer.content);
10. Agent 与工具调用(进阶能力)
LangChain 的 Agent 允许模型在运行时:
- 判断是否需要工具
- 选择合适的工具
- 执行并整合结果
这是构建复杂 AI 系统的重要基础。
11. LangChain 的典型应用方向
- 企业知识库问答(RAG)
- 智能客服系统
- AI 助手与自动化 Agent
- 多步骤任务执行系统
- AI 中台与能力编排层
结语
LangChain 的价值不在于"帮你写 Prompt", 而在于 让大模型应用具备工程结构和系统能力。
当 LLM 应用从 Demo 走向生产环境, LangChain 几乎是绕不开的技术栈之一。
如果你正在构建真实的 AI 应用系统, 理解并掌握 LangChain,是非常值得投入的一步。
