从代码看 LangChain:大模型应用开发的工程化实践与环境准备

从代码看 LangChain:大模型应用开发的工程化实践与环境准备

LangChain 作为连接大语言模型(LLM)与实际业务的桥梁,其核心价值在于将复杂的 AI 应用开发拆解为可复用、可编排的模块化组件。在开始使用前,我们需要先完成环境搭建,以下将结合代码片段详细说明 LangChain 的使用方式及安装步骤。

一、环境准备:安装 LangChain 及相关依赖

使用 LangChain 开发前,需先安装核心包及对应模型适配器(以代码中用到的 DeepSeek 为例),同时需安装dotenv处理环境变量(代码中通过import 'dotenv/config'加载 API 密钥等配置)。

安装命令(使用 npm):

bash 复制代码
# 安装LangChain核心包、DeepSeek适配器及环境变量工具
npm install @langchain/core @langchain/deepseek dotenv

若使用 yarn:

sql 复制代码
yarn add @langchain/core @langchain/deepseek dotenv

安装完成后,需在项目根目录创建.env文件,配置 DeepSeek API 密钥(代码中通过环境变量自动加载):

ini 复制代码
DEEPSEEK_API_KEY=your_deepseek_api_key_here

二、基础调用:快速连接大模型

最基础的 LLM 应用开发,核心是实现与模型的交互。在main.js中,LangChain 通过适配器模式屏蔽了不同模型的底层差异:

javascript 复制代码
// main.js 核心代码
import 'dotenv/config'
import { ChatDeepSeek } from '@langchain/deepseek';

const model = new ChatDeepSeek({
  model: 'deepseek-reasoner',
  temperature: 0 // 控制输出随机性,0表示确定性输出
});

// 直接调用模型
const res = await model.invoke('用一句话解释什么是RAG?');
console.log(res.content);

无需关注 DeepSeek 模型的 API 格式、请求头配置等细节,仅通过ChatDeepSeek类实例化模型,调用invoke方法即可完成交互。这种封装让开发者能快速切换不同模型(如从 DeepSeek 到 GPT),只需替换适配器类,大幅降低了多模型集成的成本。

三、提示词模板:结构化管理动态内容

提示词是 LLM 应用的 "输入大脑",但动态参数调整(如角色、字数限制)常让提示词维护变得繁琐。1.js展示了 LangChain 的PromptTemplate如何解决这一问题:

javascript 复制代码
// 1.js 提示词模板示例
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: '50',
  question: '什么是闭包'
});

// 实例化模型并调用
const model = new ChatDeepSeek({
  model: 'deepseek-reasoner',
  temperature: 0.7
});
const res = await model.invoke(promptStr);
console.log(res.content);

通过模板定义固定格式,再用format方法注入动态参数,实现了 "模板与数据分离"。这种方式不仅让提示词更易复用(如同一模板可切换role为 "后端面试官"),还便于版本管理和测试,符合后端开发中 "配置与逻辑分离" 的工程化思想。

四、简单工作流:用 Chain 串联任务节点

实际业务中,AI 任务往往需要 "提示词处理→模型调用" 的固定流程。2.js展示了 LangChain 的pipe方法如何将组件串联为简单工作流(Chain):

javascript 复制代码
// 2.js 简单Chain示例
import 'dotenv/config';
import { ChatDeepSeek } from '@langchain/deepseek'
import { PromptTemplate } from '@langchain/core/prompts'

const model = new ChatDeepSeek({
  model: 'deepseek-reasoner',
  temperature: 0.7
})

// 定义提示词模板
const prompt = PromptTemplate.fromTemplate(`
  你是一个前端专家,用一句话解释: {topic}  
`);

// 用pipe连接模板与模型,形成工作流
const chain = prompt.pipe(model);

// 执行工作流(直接传入参数即可触发完整流程)
const response = await chain.invoke({ topic: '闭包' });
console.log(response.text);

prompt.pipe(model)的本质是将 "提示词格式化" 与 "模型调用" 两个步骤串联为一个可执行单元。开发者无需手动编写 "先格式化提示词、再调用模型" 的重复代码,直接通过invoke传入参数即可触发整个流程,简化了代码逻辑。

五、复杂工作流:多步骤任务的编排

当业务需要多轮 AI 交互(如 "先解释概念→再总结要点"),LangChain 的RunnableSequence可实现复杂工作流的编排。3.js展示了这一能力:

javascript 复制代码
// 3.js 多步骤工作流示例
import 'dotenv/config';
import { ChatDeepSeek } from '@langchain/deepseek';
import { PromptTemplate } from '@langchain/core/prompts';
import { RunnableSequence } from '@langchain/core/runnables';

const model = new ChatDeepSeek({
  model: 'deepseek-reasoner',
  temperature: 0.7
})

// 第一步:定义"解释概念"的模板与Chain
const explainPrompt = PromptTemplate.fromTemplate(`
  你是一个前端专家,请详细介绍以下概念: {topic}
  要求:覆盖定义、原理、使用方式,不超过300字。
`);
const explainChain = explainPrompt.pipe(model);

// 第二步:定义"总结要点"的模板与Chain
const summaryPrompt = PromptTemplate.fromTemplate(`
  请将以下前端概念总结为3个核心要点 (每点不超过20字):
  {explanation}
`);
const summaryChain = summaryPrompt.pipe(model);

// 串联为完整工作流
const fullChain = RunnableSequence.from([
  (input) => explainChain.invoke({ topic: input.topic }).then(res => res.text),
  (explanation) => summaryChain.invoke({ explanation }).then(res => `知识点: ${explanation} 总结: ${res.text}`)
]);

// 执行完整流程
const response = await fullChain.invoke({ topic: '闭包' });
console.log(response);

通过RunnableSequence.from,我们将 "解释概念" 和 "总结要点" 两个步骤按顺序串联:第一步接收topic参数生成详细解释,第二步将解释结果作为输入生成总结,最终返回整合结果。这种编排能力让复杂 AI 任务(如智能分析、多轮对话)的开发变得直观可控,无需手动处理步骤间的参数传递与异步逻辑。

总结

通过安装指令与代码示例可以看出,LangChain 通过 "环境适配→模型封装→提示词管理→工作流编排" 的全流程支持,让大模型应用开发从 "零散脚本" 升级为 "工程化开发"。开发者只需关注业务逻辑,即可快速构建灵活、可扩展的 AI 应用,大幅降低了大模型集成的技术门槛。# 从代码看 LangChain:大模型应用开发的工程化实践与环境准备

相关推荐
Coder_Boy_7 小时前
SpringAI与LangChain4j的智能应用-(实践篇4)
java·人工智能·spring boot·langchain
zhuzihuaile7 小时前
Langchain-Chatchat + Ollama + QWen3 + 搭建知识库 + AI-Win
人工智能·python·ai·langchain
笙枫10 小时前
Langchain开发过程中的注意事项
python·ai·langchain
雪花desu10 小时前
深入 LangChain LCEL 的 10 个核心特性
数据库·人工智能·深度学习·langchain
用户120391129472611 小时前
LangChain 实战:让 LLM 拥有记忆与结构化输出能力
javascript·langchain·llm
沛沛老爹12 小时前
Web开发者快速上手AI Agent:基于Advanced-RAG的提示词应用
前端·人工智能·langchain·llm·rag·web转型·advanced-rag
大数据追光猿12 小时前
【Agent】高可用智能 Agent:记忆机制设计与性能优化实战
人工智能·python·langchain·大模型·agent
杜子不疼.13 小时前
AI Agent 开发指南:LangChain + 工具调用,构建自动化任务流
人工智能·langchain·自动化
user297525876121 天前
AI实践:结合LangChain实现一个自动生成项目README的VSCode插件
langchain·node.js·visual studio code