不止是调用 LLM:用 LangChain 编排下一代 AI 应用

77 阅读5分钟

不止是调用 LLM:用 LangChain 编排下一代 AI 应用

2022 年,ChatGPT 横空出世,引爆了全球对生成式人工智能(AIGC)的关注。其背后依托的 Transformer 架构,使得大语言模型(LLM)在理解与生成人类语言方面取得了前所未有的突破。然而,仅仅调用一个 LLM 接口,并不足以构建真正可用、可维护、可扩展的 AI 应用。

事实上,在 ChatGPT 走红之前,LangChain 项目就已经诞生。它并非另一个聊天机器人,而是一个专为 AI 应用开发设计的开源框架。LangChain 的出现,标志着 LLM 从“玩具级演示”迈向“工程化落地”的关键一步——它让开发者能够以结构化、模块化的方式,将语言模型集成到真实业务场景中。

什么是 LangChain?

LangChain 的名字由两部分组成:Lang + Chain

  • Lang 代表 Language Model(语言模型),即我们所依赖的大模型能力,如 GPT、DeepSeek、Claude 等。
  • Chain 则指“链”,灵感来源于工作流编排工具(如 n8n、Coze),强调将复杂的 AI 任务拆解为多个可连接的“节点”(Node),每个节点完成特定功能,再通过链式调用组合成完整流程。

简言之,LangChain 是一个用于构建 LLM 应用的开发框架。它提供了一套统一的抽象接口,无论你使用的是 OpenAI、DeepSeek 还是本地开源模型,都能以相同的方式调用 chatcompletion 功能。这种设计实现了 LLM 的“可拔插” ——模型可以随时更换,而核心业务逻辑无需重写。

更重要的是,LangChain 支持提示词模板(PromptTemplate)、记忆管理(Memory)、工具调用(Tools)、智能体(Agent)以及复杂工作流(Chain/Graph)等高级能力,使开发者能像搭积木一样构建智能应用。

实战演练:基于 Node.js 与 DeepSeek 的 LangChain 应用

下面我们通过一个完整的 JavaScript 示例,展示如何使用 LangChain 快速构建一个可扩展的 AI 应用。

1. 项目初始化(启用 ESM)

LangChain 官方推荐使用 ES 模块(ESM)。在 package.json 中添加:

{
  "type": "module"
}

这允许我们使用 import 语法,符合现代 JavaScript 开发规范。

2. 安装依赖

npm install langchain @langchain/deepseek dotenv

其中:

  • langchain:核心框架
  • @langchain/deepseek:DeepSeek 模型的官方适配器(Adapter)
  • dotenv:用于加载 .env 中的 API 密钥

3. 配置环境变量

创建 .env 文件:

DEEPSEEK_API_KEY=your_deepseek_api_key_here

注意:API 密钥不要提交到代码仓库!

4. 编写应用代码

// app.js
import { ChatDeepSeek } from "@langchain/deepseek";
import { PromptTemplate } from "@langchain/core/prompts";
import { RunnableSequence } from "@langchain/core/runnables";
import "dotenv/config";

// 1. 初始化模型(可拔插!)
const model = new ChatDeepSeek({
  model: "deepseek-reasoner",
  temperature: 0.7,
});

// 2. 定义提示词模板
const explainPrompt = PromptTemplate.fromTemplate(
  "你是一位资深前端工程师,请用专业但易懂的语言解释以下概念:{concept}"
);

const summaryPrompt = PromptTemplate.fromTemplate(
  "请将以下技术解释总结为不超过20字的三个要点,用中文回答:\n{explanation}"
);

// 3. 构建两条子链
const explainChain = explainPrompt.pipe(model);
const summaryChain = summaryPrompt.pipe(model);

// 4. 组合成完整工作流
const fullChain = RunnableSequence.from([
  async (input) => {
    const explanation = await explainChain.invoke(input);
    return { explanation: explanation.content, concept: input.concept };
  },
  async (context) => {
    const summary = await summaryChain.invoke({ explanation: context.explanation });
    return {
      concept: context.concept,
      explanation: context.explanation,
      summary: summary.content,
    };
  },
]);

// 5. 执行
const result = await fullChain.invoke({ concept: "JavaScript 闭包" });

console.log("概念:", result.concept);
console.log("详解:", result.explanation);
console.log("总结:", result.summary);

5. LangChain 的核心:以 Pipe 管道 连接 Runnable 节点,构建声明式 AI 工作流

LangChain 的设计哲学可以高度概括为一句话:

“一切皆 Runnable,通过 Pipe 串联,形成可编排的工作流。”

🔧 1. 三大基础节点类型

  • Prompt 模板节点(如 PromptTemplate
    负责将结构化输入(如 {concept})渲染成 LLM 可理解的自然语言提示。它是工作流的“输入处理器”。
  • LLM 节点(如 ChatDeepSeekChatOpenAI
    代表大语言模型本身,是工作流中的“推理引擎”。LangChain 将所有 LLM 统一抽象为 Runnable,屏蔽底层 API 差异。
  • 结束/输出节点(通过 .invoke() 触发)
    整个工作流由 await chain.invoke(input) 启动,最终返回结构化结果。这是用户与 AI 系统的交互入口。

🔗 2. 核心机制:.pipe() —— 构建数据管道

const explainChain = explainPrompt.pipe(model);
  • .pipe() 是 LangChain 的核心连接符,它将两个 Runnable 对象组合成一个新的 Runnable
  • 数据流自动从前一个节点的输出流向后一个节点的输入,形成 “提示 → 推理” 的最小工作单元。
  • 多个 .pipe() 可级联,例如:prompt.pipe(tool).pipe(model).pipe(parser),实现复杂处理链。

💡 这正是“Lang + Chain”中 “Chain” 的本质:不是简单调用,而是可组合的数据流管道

🧩 3. 高阶编排:RunnableSequence = 声明式 Workflow

当任务无法用单条线性链表达时(例如需要保留中间状态、做条件分支或聚合多个子结果),LangChain 提供 RunnableSequence.from([...])

  • 它允许你用函数数组定义多步骤流程;
  • 每一步可以是任意异步逻辑(调用子链、访问数据库、调用工具等);
  • 前一步的返回值自动作为下一步的输入,形成可控的顺序执行流

这本质上是一种 轻量级 SequentialChain(顺序链) ,是 LangChain 从“单链”走向“工作流(Workflow)”的关键桥梁。

🌐 4. 向更复杂系统演进

这种基于 Runnable + Pipe + Sequence 的范式,正是 LangChain 支持更高级能力的基础:

  • Agent:在 Sequence 中插入“决策循环”,动态选择下一步工具;
  • LangGraph:将线性 Sequence 扩展为有向图(支持分支、跳转、记忆);
  • Memory & Tools:作为特殊 Runnable 节点插入管道中。

6. 可扩展性演示

若未来你想切换到 OpenAI 的 GPT-4,只需修改模型初始化部分:

import { ChatOpenAI } from "@langchain/openai";

const model = new ChatOpenAI({ model: "gpt-4o", temperature: 0.7 });

其余代码(Prompt、Chain、流程)完全无需改动!这就是 LangChain “统一接口 + 适配器”设计的强大之处。

结语

LangChain 不仅是一个工具库,更是一种 AI 工程化思维的体现。它将 LLM 从“黑盒调用”转变为“可控组件”,让开发者能够构建稳定、灵活、可维护的智能应用。无论你是想做智能客服、知识问答、文档生成,还是自动化 Agent,LangChain 都提供了坚实的基础设施。

随着 AIGC 技术的快速演进,选择一个支持多模型、高内聚低耦合的框架,将成为 AI 应用成功的关键。而 LangChain,正是这一趋势下的理想选择。