《LangChain从入门到实践:快速构建你的第一个AI应用》

426 阅读6分钟

LangChain:AI应用开发的强大框架

LangChain 的背景与意义

在2022年,ChatGPT横空出世,基于Transformer架构的生成式人工智能(AIGC)引起了全球关注。有趣的是,LangChain 框架实际上比 ChatGPT 出现得更早,近期它推出了 1.0+ 正式版本,标志着框架的成熟与稳定。

什么是 LangChain?

LangChain = Language + Chain

这个名称揭示了框架的核心思想:

  • Lang:代表语言大模型(LLM)
  • Chain:代表将不同的LLM组件、工具和数据源连接起来的机制

核心概念解析

Chain(链)的本质

Chain 是 LangChain 的核心抽象,它允许开发者将多个LLM组件、工具或数据处理步骤连接起来,形成完整的工作流程。这类似于可视化编程工具如 n8n 或 Coze,但专门针对语言模型应用设计。

技术栈特点

  • 基于 Node.js 开发
  • 采用 ESM(ECMAScript Modules)开发模式
  • 需要在 package.json 中设置 "type": "module"

安装 LangChain 框架依赖步骤

第一步:初始化项目

npm init -y

执行后会在当前目录下生成 package.json 文件,这是 Node.js 项目的配置文件。

初始化项目

package.json文件

第二步:安装 LangChain 核心包

npm i langchain

这会安装 LangChain 的核心功能模块。

安装langchain

第三步:安装大模型适配器

npm i @langchain/deepseek

LangChain 为不同的大模型提供了专门的适配器包,这使得切换不同模型变得非常简单。

屏幕截图 2025-12-23 232130.png

重要概念扩展

大模型选择考量因素

选择大模型时需要考虑多个因素:

  1. 性价比:不同模型的定价策略差异很大
  2. 更新速度:模型的知识截止日期和更新频率
  3. 上下文长度:支持的最大输入输出长度
  4. 功能特性:是否支持特定功能(如函数调用、多模态等)
  5. 响应速度:模型的推理时间

LangChain 的统一接口

LangChain 提供了两种主要的接口模式:

  1. Completion 接口:适合简单的文本补全任务
  2. Chat 接口:适合对话式应用,支持系统消息、用户消息和助手消息的角色划分

适配器模式的优势

LangChain 的适配器模式带来了显著的好处:

  • 统一接口:无论使用哪种大模型,都有一致的调用方式
  • 灵活切换:只需更改几行代码即可切换不同供应商的模型
  • 减少重复工作:无需为每个模型编写特定的集成代码

安全实践:环境变量管理

API密钥等敏感信息不应该硬编码在代码中。推荐的做法是:

  1. 安装 dotenv 包:npm i dotenv
  2. 创建 .env 文件存储敏感信息
  3. 在代码中通过 process.env 读取这些变量
  4. .env 添加到 .gitignore 中,避免泄露

项目开发哲学

当项目变得复杂时,遵循以下原则可以保持代码的可维护性:

分步处理策略

  1. 可执行:确保每个步骤都能独立运行和测试
  2. 可配置:通过参数化提高组件的复用性
  3. 可连接:设计组件时考虑如何与其他组件组合

工作流构建

  1. Chain(链):有先后顺序的组织结构
  2. Pipe(管道):连接各个节点,形成完整工作流
  3. RunnableSequence(可执行序列):LangChain 提供的高级抽象,用于构建复杂的工作流程

实践示例:构建一个简单的 LangChain 应用

下面是一个完整的示例,展示了如何使用 LangChain 构建一个面试问题回答系统:

import 'dotenv/config'; // 配置环境变量
import { ChatDeepSeek } from '@langchain/deepseek';
import { PromptTemplate } from '@langchain/core/prompts'; // 提示词模板

// 创建提示词模板(静态方法,无需实例化)
const prompt = PromptTemplate.fromTemplate(`
    你是一个{role}。
    请用不超过{limit}个字回答以下问题:
    {question}
`);

// 格式化提示词 - 前端面试场景
const promptStr = await prompt.format({
    role: '前端面试官',
    limit: '100',
    question: '什么是闭包'
});

// 格式化提示词 - 后端面试场景  
const promptStr1 = await prompt.format({
    role: '后端面试官',
    limit: '100',
    question: '什么是MVC'
});

// 初始化大模型
const model = new ChatDeepSeek({
    model: 'deepseek-reasoner',
    temperature: 0, // 温度参数,控制输出的随机性(0表示最确定性的输出)
    // 注意:不需要手动配置baseURL,适配器会自动处理
    // apiKey也会从环境变量中自动读取
});

// 调用模型获取回答
const result = await model.invoke(promptStr);
const result1 = await model.invoke(promptStr1);

// 输出结果
console.log('前端面试回答:', result.content);
console.log('后端面试回答:', result1.content);

屏幕截图 2025-12-23 232627.png

运行结果

执行上述代码后,你会看到类似以下的输出:

屏幕截图 2025-12-23 232747.png

扩展学习:理解 LangChain 的价值

为什么需要 LangChain?

  1. 抽象复杂性:大模型应用涉及提示工程、上下文管理、工具调用等多个复杂方面
  2. 提高可复用性:通过组件化设计,可以复用经过验证的模式和组件
  3. 降低集成难度:简化与各种数据源、工具和服务的集成

下一步学习方向

  1. 记忆(Memory):如何让对话应用记住历史上下文
  2. 工具调用(Tools):如何让大模型使用外部工具和API
  3. 检索增强生成(RAG):如何结合外部知识库提高回答质量
  4. 代理(Agents):如何创建能够自主决策和行动的大模型应用

总结

通过这个简单的示例,你已经完成了第一个 LangChain 项目的搭建。这个框架的核心价值在于它提供了一套标准化的方法来构建、组合和部署大语言模型应用。随着你深入学习,你会发现 LangChain 就像 AI 应用开发的"乐高积木",允许你通过组合不同的模块来构建复杂而强大的 AI 应用。

记住,学习 LangChain 的关键是理解其组件化思想:将复杂的 AI 应用拆解为可管理、可测试、可复用的部分,然后通过 Chain 机制将它们优雅地组合起来。这种思维方式不仅适用于 LangChain,也是现代软件工程的重要原则。

祝你学习愉快,期待你在 AI 应用开发领域的更多探索!