LangChain 结合 AI 大模型开发实战指南
LangChain 是构建 LLM 应用的框架,支持自然语言处理开发。本文介绍了 LangChain 的核心特性,演示了如何在 Node.js 环境中通过 npm 安装依赖,使用 PromptTemplate 定义提示词,结合 ChatOpenAI 实例化模型,并通过 .pipe() 方法构建应用链。内容涵盖基础代码实现、流式输出处理、环境变量安全配置及常见错误处理方案,旨在帮助开发者快速上手大模型应用开发。

LangChain 是构建 LLM 应用的框架,支持自然语言处理开发。本文介绍了 LangChain 的核心特性,演示了如何在 Node.js 环境中通过 npm 安装依赖,使用 PromptTemplate 定义提示词,结合 ChatOpenAI 实例化模型,并通过 .pipe() 方法构建应用链。内容涵盖基础代码实现、流式输出处理、环境变量安全配置及常见错误处理方案,旨在帮助开发者快速上手大模型应用开发。

LangChain 是一个用于构建应用程序的框架,特别是那些与语言模型(如 GPT-3、GPT-4 等)交互的应用。它的主要目标是简化与自然语言处理(NLP)相关的开发过程,使开发者能够更容易地创建、管理和部署基于语言模型的应用。
LangChain 适用于需要自然语言理解和生成的各种应用场景,如聊天机器人、自动化内容生成、数据分析等。
在开始之前,请确保您的开发环境已安装 Node.js(建议版本 18+)和 npm 包管理器。我们将使用 TypeScript 或 JavaScript 进行开发。
首先,初始化一个项目并安装必要的依赖包:
npm init -y
npm install @langchain/core @langchain/openai dotenv
@langchain/core@langchain/openai接下来我们通过一个完整的 Demo 演示如何通过 LangChain 结合 AI 大模型去使用。
我们需要引入聊天大模型类和提示模板类:
// 让所有的主流大模型接口一致
import { ChatOpenAI } from "@langchain/openai"; // 聊天大模型
// prompt 接收参数
import { PromptTemplate } from "@langchain/core/prompts"; // 提示模板
import 'dotenv/config'; // 加载环境变量
PromptTemplate 允许我们定义输入格式和变量,将用户输入动态填充到提示词中。
const personalizedGreetingPrompt = new PromptTemplate({
inputVariables: ["price", "flower_name"],
template:
"你是一位专业的鲜花店文案撰写者,\n对于售价{price}元的{flower_name},提供一个吸引人的简短介绍",
});
注意:原代码中的 personallzedGreetingPrompt 存在拼写错误,此处修正为 personalizedGreetingPrompt。
我们需要配置 API Key 和模型名称。为了安全起见,建议将密钥存储在环境变量中,而不是硬编码在代码里。
// 实例化大模型
const model = new ChatOpenAI({
configuration: {
apiKey: process.env.OPENAI_API_KEY || "sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
baseURL: "https://api.chatanywhere.tech/v1", // 示例代理地址,实际使用时请替换
},
model: "gpt-3.5-turbo",
});
LangChain 的 .pipe() 方法可以将多个组件串联起来,形成一条 Chain(链)。这里我们将提示模板的输出直接传递给模型。
// langchain chain
const chain = personalizedGreetingPrompt.pipe(model);
personalizedGreetingPrompt:这是一个提示模板的实例,通常用于生成个性化的问候语或消息。.pipe(model):pipe 方法将 personalizedGreetingPrompt 的输出传递给 model,使得模型可以生成基于该提示的响应。最后通过 invoke 方法发送请求,传入模板所需的变量值。
async function run() {
const res = await chain.invoke({
price: "99",
flower_name: "瓜农老姚的南瓜花",
});
console.log(res.content);
}
run();
运行上述代码,控制台将打印出由大模型生成的鲜花介绍文案。
在实际应用中,为了提升用户体验,通常希望看到大模型逐字输出的效果(Streaming)。LangChain 支持流式响应处理。
import { createStreamableResponse } from "@langchain/core/utils/streaming";
async function streamExample() {
const stream = await chain.stream({
price: "199",
flower_name: "玫瑰",
});
for await (const chunk of stream) {
process.stdout.write(chunk.content);
}
}
streamExample();
这种方式可以让用户在等待期间实时看到生成的内容,减少等待焦虑感。
切勿将真实的 API Key 提交到公共代码仓库。建议使用 .env 文件配合 dotenv 库管理密钥。
# .env 文件
OPENAI_API_KEY=sk-your-real-key-here
并在代码中通过 process.env.OPENAI_API_KEY 读取。
网络波动或 API 限流可能导致请求失败,建议在 try-catch 块中包裹调用逻辑。
try {
const res = await chain.invoke({ price: "99", flower_name: "花" });
console.log(res.content);
} catch (error) {
console.error("请求失败:", error);
}
如果需要进行多轮对话,单次的 PromptTemplate 可能不够用。此时应使用 ConversationBufferMemory 来保存历史对话记录,并将其注入到链中。
对于高并发场景,建议对模型调用进行缓存或使用异步队列处理,避免频繁触发 API 限制。
本文详细介绍了 LangChain 的基本概念及其在 Node.js 环境下的集成方式。通过 PromptTemplate 和 ChatOpenAI 的组合,我们可以快速构建基于大模型的应用原型。此外,我们还探讨了流式输出、环境变量管理及错误处理等生产级开发中必备的技能点。掌握这些基础后,开发者可以进一步探索 Agent、RAG(检索增强生成)等更高级的功能,构建复杂的智能应用系统。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online