从前端到 AI:用 LangChain.js 轻松接入 DeepSeek

在 AI 浪潮席卷的今天,前端工程师拥有得天独厚的优势------我们离用户最近,天然擅长构建交互体验。然而,当面对大语言模型(LLM)的复杂调用、上下文管理和多工具协同(Agent)时,传统的 fetch 或者是简单的 SDK 封装就显得有些捉襟见肘了。

这就是 LangChain 闪亮登场的时候。今天这篇博文,我们将以前端开发者最熟悉的 JavaScript 视角,带大家快速通关 LangChain,并手把手接入当下性价比之王 ------ DeepSeek


什么是 LangChain?

简单来说,LangChain 是一个用于构建大模型应用的开源框架。 对于前端同学,你可以把它类比为 AI 届的 Next.jsAxios

  • Axios 统一了接口请求、拦截器、错误处理;
  • LangChain 则统一了各种大模型(OpenAI, DeepSeek, Anthropic 等)的调用接口,并提供了提示词管理、链式调用(Chains)、数据向量化、记忆组件等标准模块。

通过 LangChain,你可以一套代码适配多个模型,并且能够像拼积木一样,把不同的 AI 模块组合成一个复杂的应用。


实战:JS 接入 DeepSeek

既然要动手,我们就用目前最顶流的 DeepSeek 来做个实战演练。我们将构建一个简单的"AI 翻译官",把用户输入的中文翻译成带有对应 emoji 的英文。

1. 环境准备

首先,初始化一个 Node.js 项目并安装 LangChain 核心库以及 DeepSeek 专属适配器:

bash 复制代码
npm init -y
npm install @langchain/core @langchain/deepseek dotenv

在项目根目录下创建一个 .env 文件,配置你的 DeepSeek API Key(可以在 DeepSeek 开放平台申请):

env 复制代码
DEEPSEEK_API_KEY="你的_deepseek_api_key"

2. 编写代码

新建 index.js,写下我们的核心逻辑:

javascript 复制代码
import { ChatDeepSeek } from "@langchain/deepseek";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { StringOutputParser } from "@langchain/core/output_parsers";
import 'dotenv/config'; // 自动加载 .env 变量

async function main() {
  // 1. 初始化 DeepSeek 模型
  const model = new ChatDeepSeek({
    model: "deepseek-chat", // 或者是 "deepseek-reasoner" (R1)
    temperature: 0.3,
  });

  // 2. 创建提示词模板 (Prompt Template)
  const promptTemplate = ChatPromptTemplate.fromMessages([
    ["system", "你是一个专业翻译官。请将用户输入的中文翻译成英文,并在句尾附带一个贴切的 emoji。"],
    ["user", "{inputText}"],
  ]);

  // 3. 实例化输出解析器 (Output Parser)
  const outputParser = new StringOutputParser();

  // 4. 使用 LCEL (LangChain Expression Language) 组装流水线
  const chain = promptTemplate.pipe(model).pipe(outputParser);

  // 5. 执行链式调用
  const result = await chain.invoke({
    inputText: "今天天气真好,我想去公园散步。",
  });

  console.log("AI 回复:\n", result);
}

main().catch(console.error);

3. 运行结果

在终端执行 node index.js,你会看到类似如下的输出:

text 复制代码
AI 回复: 
The weather is really nice today, I want to go for a walk in the park. ☀️🌳

拆解:LangChain 核心模块应用

麻雀虽小,五脏俱全。在这段十几行的代码中,其实已经涵盖了 LangChain 最核心的三个模块。前端同学可以用我们熟悉的"数据流"视角来理解它们:

1. Models(模型层)

代码中的 ChatDeepSeek 就是模型层。LangChain 将所有的聊天模型都抽象成了统一的接口(通常包含 .invoke() 方法)。

  • 前端心智模型 :这就像是封装好的组件。今天你用的是 ChatDeepSeek,明天如果老板要求换成 ChatOpenAI,你只需要更改导入的包和配置,后面的业务逻辑(Prompt、Parser)完全不需要动。

2. Prompts(提示词管理)

传统的做法是直接写模板字符串 你是一个... ${input},但当业务变复杂、系统提示词(System)与用户提示词(User)混合时,字符串拼接会变成灾难。

  • ChatPromptTemplate.fromMessages 帮我们规范了对话结构。
  • 前端心智模型 :类似于前端的 Props 传参 。定义好结构后,通过 {inputText} 预留插槽,在最后 invoke 时再动态传入真正的数据。

3. Output Parsers(输出解析器)

大模型默认返回的是一个复杂的 JSON 对象(包含 Token 消耗、结束原因等细节),但在前端展示时,我们通常只需要那段文本。

  • StringOutputParser 的作用就是把大模型返回的复杂对象"清洗"干净,直接抽取出纯文本字符串。
  • 前端心智模型 :类似于 Axios 的 Response 拦截器(Interceptor),在数据传给页面组件之前,统一进行格式化处理。

4. 核心灵魂:LCEL(LangChain 表达式语言)

代码中最精妙的一行是:

javascript 复制代码
const chain = promptTemplate.pipe(model).pipe(outputParser);

这里的 .pipe() 极其类似于前端做函数式编程(如 RxJS)或者在 Node.js 中处理流(Stream)的 pipe。 LangChain 通过这种方式,把 "输入 -> 格式化 Prompt -> 丢给模型 -> 解析输出" 的全流程串联成了一条自动化流水线(Chain)。


总结与展望

对于前端开发者而言,LangChain.js 极大地降低了我们跨界 AI 的门槛。它用我们熟悉的面向对象、函数式组合以及 JavaScript/TypeScript 语法,抹平了底层各种大模型的差异。

今天我们实现的是一个简单的单向流水线,在进阶应用中,LangChain 还提供了 Memory(记忆模块,用于做多轮对话)Agents(智能体,让 AI 可以自主调用你的前端 API 接口)

相关推荐
这是谁的博客?7 小时前
LangChain 框架深度解析:从 LCEL 到 Agent 架构的核心原理
ai·架构·langchain·llm·agent·架构设计
共享家95277 小时前
Langchain的学习(三)
学习·langchain
Roc-xb9 小时前
Codex桌面版接入deepseek-v4-pro详细教程
openai·codex·deepseek
打小就很皮...10 小时前
基于 Python + LangChain + React 实现前端项目生成器
前端·人工智能·react.js·langchain·npm
小当家.10511 小时前
Spring AI vs LangChain4j:Java 后端接大模型,两条路线怎么选
java·人工智能·spring·langchain·springai
wuxinyan12311 小时前
工业级大模型学习之路027:LangGraph 高级特性与单 Agent 优化
人工智能·python·学习·langchain
一起逃去看海吧12 小时前
基于fastAPI--- 对接oss
langchain
菜鸟是大神13 小时前
01-Claude Code的介绍和安装
chatgpt·langchain·prompt·aigc·claude code
lin_zeqi13 小时前
LangChain学习笔记——基于官方文档的学习与思考
langchain