LangChain 零基础入门教程|Python + Node.js 双版本实战

📅 2026/7/9 7:13:32 👁️ 阅读次数 📝 编程学习
LangChain 零基础入门教程|Python + Node.js 双版本实战

一、什么是 LangChain?

随着大语言模型(LLM)快速普及,单纯调用模型 API 已经无法满足复杂业务需求:上下文记忆、链式调用、文档问答、工具调用、Agent 智能决策等场景都需要一套标准化框架支撑。

LangChain是目前最主流的大模型应用开发框架,核心作用:

  • 封装 LLM 通用调用逻辑,适配 OpenAI、文心一言、通义千问等各类大模型

  • 提供链式调用(Chain)能力,实现多步骤复杂任务

  • 内置对话记忆、文档解析、向量检索、工具集成模块

  • 支持快速搭建知识库问答、智能客服、自动化 Agent 等应用

本文面向零基础开发者,提供PythonNode.js双版本入门实战代码,开箱即用。

二、前置准备

2.1 环境要求

  • Python 版本:≥3.8

  • Node.js 版本:≥16.0

  • 拥有有效 OpenAI Key(可替换为国内大模型 Key)

2.2 核心学习目标

读完本文你将掌握:

  1. LangChain 基础环境搭建

  2. 基础 LLM 模型调用(单轮对话)

  3. Prompt 模板自定义

  4. 简单 Chain 链式调用实战

  5. 对话记忆功能实现

三、Python 版本 LangChain 入门实战

3.1 安装依赖

# 安装核心依赖pipinstalllangchain langchain-openai python-dotenv

3.2 配置环境变量(.env)

项目根目录新建.env文件,配置密钥:

OPENAI_API_KEY=你的OpenAI密钥 OPENAI_API_BASE=https://api.openai.com/v1

3.3 完整入门代码(基础调用 + 模板 + 记忆)

fromdotenvimportload_dotenvimportosfromlangchain_openaiimportChatOpenAIfromlangchain.promptsimportChatPromptTemplatefromlangchain.chainsimportLLMChainfromlangchain.memoryimportConversationBufferMemory# 加载环境变量load_dotenv()defbasic_llm_demo():"""基础大模型调用"""# 初始化模型llm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0.7,api_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("OPENAI_API_BASE"))# 单轮提问res=llm.invoke("用一句话介绍 LangChain 是什么")print("基础调用结果:")print(res.content)print("-"*50)defprompt_template_demo():"""自定义Prompt模板 + Chain调用"""# 初始化模型llm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0.7)# 自定义提示词模板prompt=ChatPromptTemplate.from_messages([("system","你是一名专业的技术博主,用通俗易懂的语言解答问题"),("user","请详细讲解{question},适合新手学习")])# 构建链式调用chain=LLMChain(llm=llm,prompt=prompt)# 执行链式任务res=chain.run(question="Python 装饰器的作用")print("模板+Chain调用结果:")print(res)print("-"*50)defchat_memory_demo():"""带对话记忆的聊天功能"""llm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0.7)# 初始化对话记忆memory=ConversationBufferMemory()chain=LLMChain(llm=llm,prompt=ChatPromptTemplate.from_messages([("system","你是贴心的AI助手,记住用户的历史对话"),("user","{input}")]),memory=memory)# 多轮对话测试print("带记忆对话结果:")res1=chain.run(input="我的名字是小明")print(f"第一轮回复:{res1}")res2=chain.run(input="我叫什么名字?")print(f"第二轮回复:{res2}")if__name__=="__main__":basic_llm_demo()prompt_template_demo()chat_memory_demo()

3.4 代码核心解析

  • ChatOpenAI:LangChain 官方 OpenAI 对话模型封装

  • ChatPromptTemplate:标准化提示词模板,解耦固定话术和动态参数

  • LLMChain:最基础的链式调用,串联「模板+模型」

  • ConversationBufferMemory:基础对话记忆,保存完整上下文

四、Node.js 版本 LangChain 入门实战

4.1 初始化项目 & 安装依赖

# 初始化项目npminit-y# 安装核心依赖npminstalllangchain @langchain/openai dotenv

4.2 配置环境变量(.env)

OPENAI_API_KEY=你的OpenAI密钥 OPENAI_API_BASE=https://api.openai.com/v1

4.3 完整入门代码(index.js)

require("dotenv").config();const{ChatOpenAI}=require("@langchain/openai");const{ChatPromptTemplate}=require("@langchain/core/prompts");const{LLMChain}=require("langchain/chains");const{ConversationBufferMemory}=require("langchain/memory");// 初始化大模型constinitLLM=()=>{returnnewChatOpenAI({modelName:"gpt-3.5-turbo",temperature:0.7,openAIApiKey:process.env.OPENAI_API_KEY,configuration:{baseURL:process.env.OPENAI_API_BASE,},});};// 1. 基础模型调用constbasicLLMDemo=async()=>{constllm=initLLM();constres=awaitllm.invoke("用一句话介绍 LangChain 是什么");console.log("基础调用结果:");console.log(res.content);console.log("-".repeat(50));};// 2. Prompt模板 + Chain链式调用constpromptTemplateDemo=async()=>{constllm=initLLM();// 定义提示词模板constprompt=ChatPromptTemplate.fromMessages([["system","你是一名专业的技术博主,用通俗易懂的语言解答问题"],["user","请详细讲解{question},适合新手学习"],]);// 构建链式调用constchain=newLLMChain({llm,prompt});constres=awaitchain.call({question:"Node.js 事件循环原理"});console.log("模板+Chain调用结果:");console.log(res.text);console.log("-".repeat(50));};// 3. 带对话记忆的多轮对话constchatMemoryDemo=async()=>{constllm=initLLM();constmemory=newConversationBufferMemory();constprompt=ChatPromptTemplate.fromMessages([["system","你是贴心的AI助手,记住用户的历史对话"],["user","{input}"],]);constchain=newLLMChain({llm,prompt,memory});console.log("带记忆对话结果:");constres1=awaitchain.call({input:"我的名字是小明"});console.log(`第一轮回复:${res1.text}`);constres2=awaitchain.call({input:"我叫什么名字?"});console.log(`第二轮回复:${res2.text}`);};// 批量执行测试construn=async()=>{awaitbasicLLMDemo();awaitpromptTemplateDemo();awaitchatMemoryDemo();};run().catch(console.error);

4.4 运行代码

nodeindex.js

五、双版本核心逻辑对照

功能模块PythonNode.js
模型初始化ChatOpenAI()ChatOpenAI()
提示词模板ChatPromptTemplate.from_messagesChatPromptTemplate.fromMessages
基础链式调用LLMChainLLMChain
对话记忆ConversationBufferMemoryConversationBufferMemory
调用方式invoke / runinvoke / call

六、常见问题解决

1. 接口请求超时/失败

检查 API_BASE 配置,国内环境可替换为镜像地址,或使用国内大模型(通义千问、讯飞星火)。

2. 环境变量不生效

确保.env文件在项目根目录,Python 需正确 load_dotenv,Node.js 需引入 dotenv 并执行 config()。

3. 模型返回内容重复/死板

调整 temperature 参数(0-1),数值越高创造性越强,0 为精准模式。

七、进阶学习方向

入门基础完成后,可深入学习 LangChain 核心进阶能力:

  • 文档加载与解析:PDF/Word/Markdown 文档读取

  • 向量数据库集成:FAISS、Chroma 实现本地知识库问答

  • 工具调用:联网搜索、代码执行、第三方接口调用

  • Agent 智能体:自主规划、自动执行复杂任务

  • 流式输出:实现打字机效果对话