简介
LangChain 是一个开源的 Python AI、Node AI 应用开发框架, 它提供了构建基于大模型的 AI 应用所需的模块和工具。通过 LangChain, 开发者可以轻松地与大型语言模型 (LLM) 集成, 完成文本生成、问答、翻译、对话等任务。LangChain 降低了 AI 应用开发的门槛, 让任何人都可以基于 LLM 构建属于自己的创意应用。
LangChain 特性:
- 模块化与可组合性
- 原子化组件设计:将 Prompt 模板、模型调用、工具调用、记忆、链(Chains)等拆分为独立组件,可自由拼接组合;
- 灵活的链(Chains)能力:支持顺序链、分支链、并行链等,轻松串联多步 LLM 调用 / 工具操作(如「分类→生成→校验」);
- 可插拔性:模型层可无缝切换 Ollama(本地)、OpenAI 等,工具层可对接数据库、API、本地脚本等。
- 上下文与记忆管理
- 内置多类型记忆模块:支持短期对话记忆(ConversationBufferMemory)、长期向量记忆等,实现多轮对话上下文连贯;
- 记忆优化:可裁剪、压缩历史对话,避免 LLM 上下文窗口超限,平衡效果与成本。
- 工具调用能力
- 原生支持主流工具:可调用搜索引擎、代码执行器、文件读写、数据库(SQL/NoSQL)等;
- 自定义工具扩展:简单封装即可接入自研工具(如企业内部系统、本地脚本),打通 LLM 与实际业务场景。
- 本地化与多模型适配
- 兼容本地 LLM 部署:完美对接 Ollama、LocalAI 等本地模型服务,摆脱云端 API 依赖,保障数据隐私;
- 多模型协同:支持不同任务调用不同模型(如轻量模型分类、大模型生成),平衡速度与效果。
- 生态与可观测性
- 多语言支持:适配 Python、JavaScript/TypeScript(Node.js)等,贴合全栈开发场景;
- 调试与评估:内置日志、追踪能力,支持自动化评估 LLM 生成结果,便于优化流程。
LangChain 框架组成
LangChain 框架由几个部分组成,包括:
- LangChain 库:Python 和 JavaScript 库。包含接口和集成多种组件的运行时基础,以及现成的链和代理的实现。
- LangChain 模板:Langchain 官方提供的一些 AI 任务模板。
- LangServe:基于 FastAPI 可以将 Langchain 定义的链 (Chain),发布成为 REST API。
- LangSmith:开发平台,是个云服务,支持 Langchain debug、任务监控。
LangChain 库 (Libraries)
LangChain 库本身由几个不同的包组成。
- langchain-core:基础抽象和 LangChain 表达语言。
- langchain-community:第三方集成,主要包括 langchain 集成的第三方组件。
- langchain:主要包括链 (chain)、代理(agent) 和检索策略。
langchain 任务处理流程
如上图,langChain 提供一套提示词模板 (prompt template) 管理工具,负责处理提示词,然后传递给大模型处理,最后处理大模型返回的结果。
LangChain 对大模型的封装主要包括 LLM 和 Chat Model 两种类型。
- LLM - 问答模型,模型接收一个文本输入,然后返回一个文本结果。
- Chat Model - 对话模型,接收一组对话消息,然后返回对话消息,类似聊天消息一样。
核心概念
- 模型层(Models) :LLM 交互核心,支持对接各类模型(如 Ollama 本地模型、OpenAI/Anthropic 云端模型),包含聊天模型、文本生成模型、嵌入模型等,负责实际的文本生成与理解。
- 提示词层(Prompts) :模型交互的 “语言桥梁”,包含 Prompt 模板、示例选择器、提示词序列化等,用于标准化、动态生成提示词,提升 LLM 输出稳定性。
- 链(Chains) :流程编排核心,将多步操作(模型调用、工具调用、数据处理)串联为自动化工作流,支持顺序链、分支链、并行链等复杂逻辑。
- 记忆(Memory) :上下文管理模块,负责存储和提取对话历史 / 任务状态(如短期对话记忆、长期向量记忆),保障多轮交互的连贯性。
- 工具(Tools) :LLM 的 “能力延伸”,包含原生工具(搜索引擎、代码执行器、数据库)和自定义工具(本地脚本、企业系统接口),让 LLM 能与外部世界交互。
- 代理(Agents) :智能决策模块,基于用户需求自动规划步骤、选择工具 / 链执行,无需手动编排流程(如 “帮我查询数据并生成报告” 的端到端完成)。
- 数据连接(Data Connectivity) :外部数据接入层,支持加载(文件、数据库、API 数据)、转换(文本分割、格式处理)、存储(向量数据库),为 LLM 提供私有数据支持(如本地知识库)。
- 输出解析器(Output Parsers) :结果格式化模块,将 LLM 生成的自然语言转换为结构化数据(JSON、数组、自定义格式),便于后续业务系统调用。
快速入门
安装LangChain
要安装LangChain,可以使用npm或pnpm进行安装。以下是安装LangChain的步骤:
npm install langchain @langchain/core @langchain/community @langchain/ollama
pnpm add langchain @langchain/core @langchain/community @langchain/ollama
初始化模型
本文以学习为主,直接在本地部署,使用ollama启动一个大语言模型(如 gpt-oss、Gemma 3、DeepSeek-R1、Qwen3 等),ollama部署流程请参考docs.ollama.com/ 本地部署与云端服务的 AI 模型平台对比 juejin.cn/spost/75758…
使用LLM
使用LLM来回答问题非常简单。可以直接调用LLM的invoke方法,并传入问题作为参数。此外,还可以通过提示模板(prompt template)生成提示词,用于向模型(LLM)发送指令。
下面演示了如何构建一个简单的LLM示例:
import { ChatOllama } from '@langchain/ollama';
import { HumanMessage, SystemMessage } from '@langchain/core/messages';
const chat = async () => {
const llm = new ChatOllama({
model: 'qwen3:0.6b',
temperature: 0.7,
});
const message = [];
message.push(new SystemMessage(`你是一个专业的翻译,能将中文翻译成英文。请只返回翻译结果,不要添加任何解释。`));
message.push(new HumanMessage(`请将以下中文翻译成英文:\n\n我爱编程。`));
const response = await llm.invoke(message);
console.log(response);
console.log(response.content);
};
chat();
下面演示了如何构建一个简单的LLM链(chains):
import { ChatOllama } from '@langchain/ollama';
import { ChatPromptTemplate } from '@langchain/core/prompts';
const chat = async () => {
const llm = new ChatOllama({
model: 'qwen3:0.6b',
temperature: 0.7,
});
// 使用 ChatPromptTemplate 创建提示模板
const prompt = ChatPromptTemplate.fromMessages([
['system', '你是一个专业的翻译,能将中文翻译成英文。请只返回翻译结果,不要添加任何解释。'],
['human', '请将以下中文翻译成英文:\n\n{text}'],
]);
// 将 prompt 和 llm 组合成链
// 基于LCEL 表达式构建LLM链,lcel语法类似linux的pipeline语法,从左到右按顺序执行
// 下面编排了一个简单的工作流,首先执行prompt完成提示词模板(prompt template)格式化处理, 然后将格式化后的prompt传递给llm模型执行,最终返回llm执行结果。
const chain = prompt.pipe(llm);
// 调用链并传入参数
const response = await chain.invoke({
text: '我爱编程。',
});
console.log(response);
console.log(response.content);
};
chat();
输出转换
import { ChatOllama } from '@langchain/ollama';
import { ChatPromptTemplate } from '@langchain/core/prompts';
import { StringOutputParser } from '@langchain/core/output_parsers';
const chat = async () => {
const llm = new ChatOllama({
model: 'qwen3:0.6b',
temperature: 0.7,
});
// 使用 ChatPromptTemplate 创建提示模板
const prompt = ChatPromptTemplate.fromMessages([
['system', '你是一个专业的翻译,能将中文翻译成英文。请只返回翻译结果,不要添加任何解释。'],
['human', '请将以下中文翻译成英文:\n\n{text}'],
]);
// 创建一个字符串输出解析器
const output_parsers = new StringOutputParser();
// 将 prompt 和 llm 组合成链,并添加 StringOutputParser 将结果转换为字符串
const chain = prompt.pipe(llm).pipe(output_parsers);
// 调用链并传入参数
// 将输出解析器添加到LLM链中,跟前面的例子,区别就是工作流编排,最后一步将llm模型输出的结果传递给output_parser进行格式转换
const response = await chain.invoke({
text: '我爱编程。',
});
console.log(response);
};
chat();
以上是关于LLM链的介绍,希望能帮助您更好地理解如何安装LangChain并构建不同类型的链。