置顶

LangChain基础教程:开启大模型应用开发之旅

作者:admin | 分类:顶峰机器人 | 浏览:3 | 日期:2026年03月26日


在大模型应用开发的浪潮中,LangChain凭借其模块化设计与强大的集成能力,成为开发者手中的“乐高积木”,能快速搭建出智能客服、问答系统、数据分析工具等多样化应用。本教程将带您走进LangChain的基础世界,从核心概念到实操上手,一步步解锁其强大功能。

一、LangChain核心架构与组件

LangChain采用分层架构,各组件各司其职又紧密协作,为开发提供灵活支撑。

  • LangChain-Core:作为框架的基石,定义了基础抽象类与LangChain表达式语言(LCEL)。开发者若想自定义LLM包装器、工具或链,就需要与这一层打交道,它确保了组件间的兼容性与扩展性。

  • LangChain:承载框架的主要功能,包含链(Chains)、智能体(Agents)、检索策略(Retrieval strategies)等核心模块,是构建应用认知架构的关键。

  • LangChain-Community:汇聚了丰富的第三方集成,支持对接OpenAI、Anthropic、Google等主流大模型,还包含文本分割、文档加载等实用工具,极大拓展了框架的边界。

  • 周边生态工具:LangGraph用于构建复杂的多参与者应用,LangSmith提供调试、测试、监控全流程支持,LangServe则能将链部署为REST API,实现应用的快速上线与调用。

二、快速上手:环境搭建与基础调用

(一)环境安装

打开终端,通过以下命令完成LangChain及相关依赖的安装:

# 安装基础包
pip install langchain langchain-community
# 若需对接OpenAI模型,安装专用包
pip install langchain-openai
# 安装环境变量管理工具
pip install python-dotenv

(二)基础调用示例

以调用OpenAI的GPT-3.5-turbo模型为例,编写简单代码实现对话功能:

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

# 加载环境变量
load_dotenv()
# 初始化模型
llm = ChatOpenAI(
   model="gpt-3.5-turbo",
   openai_api_key=os.getenv("OPENAI_API_KEY")
)
# 发起请求并获取响应
response = llm.invoke("请用三句话介绍LangChain")
print(response.content)

运行代码后,您将得到模型返回的关于LangChain的介绍内容。LangChain的优势在此体现得淋漓尽致:它统一了不同模型的调用接口,若后续想切换为其他模型,只需修改初始化模型的代码,业务逻辑无需改动。

三、核心功能模块解析

(一)提示词模板:规范输入与输出

提示词是大模型交互的基础,LangChain的提示词模板功能能帮助开发者高效构建标准化输入。

  • PromptTemplate:适用于文本补全场景,通过定义动态变量与模板结构,快速生成个性化提示词。例如:

from langchain_core.prompts import PromptTemplate

template = "请以{role}的身份,用{style}的语气介绍{product}。"
prompt_template = PromptTemplate(
   input_variables=["role", "style", "product"],
   template=template
)
prompt = prompt_template.format(
   role="科技博主",
   style="幽默风趣",
   product="LangChain"
)
print(prompt)

  • ChatPromptTemplate:专为对话场景设计,支持为系统、用户、助手等不同角色定义模板,完美适配多轮对话需求。

(二)记忆管理:实现多轮对话连贯性

默认情况下,大模型没有对话记忆,无法关联上下文。LangChain的记忆组件解决了这一问题,例如ConversationBufferMemory能完整保存对话历史:

from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemory

# 创建记忆组件
memory = ConversationBufferMemory(memory_key="chat_history")
# 定义带记忆的提示词模板
template = """你是一位贴心助手,根据对话历史回答用户问题。
对话历史:{chat_history}
用户问题:{question}
回答:"""
prompt = PromptTemplate(
   input_variables=["chat_history", "question"],
   template=template
)
# 创建链
chain = LLMChain(llm=llm, prompt=prompt, memory=memory)
# 多轮对话
print(chain.invoke({"question": "什么是LangChain?"})["text"])
print(chain.invoke({"question": "它的核心优势有哪些?"})["text"])

运行代码后,助手能基于上一轮的对话内容,连贯地回答后续问题。

(三)数据连接:实现外部数据交互

在实际应用中,大模型常需结合外部数据增强能力。LangChain提供了完整的数据连接方案,包括文档加载、分割、向量化与存储检索。以加载文本文件并构建检索问答系统为例:

from langchain.document_loaders import TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA

# 加载文档
loader = TextLoader("document.txt")
documents = loader.load()
# 分割文档
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
split_docs = text_splitter.split_documents(documents)
# 向量化并存储
embeddings = OpenAIEmbeddings()
db = Chroma.from_documents(split_docs, embeddings)
# 创建检索问答链
qa_chain = RetrievalQA.from_chain_type(
   llm=llm,
   chain_type="stuff",
   retriever=db.as_retriever()
)
# 发起检索问答请求
response = qa_chain.invoke("文档中关于LangChain架构的内容有哪些?")
print(response["result"])

通过这套流程,大模型能精准检索外部文档中的信息,为用户提供更准确的回答。

四、总结

LangChain以其模块化、可扩展的设计,降低了大模型应用的开发门槛。从基础的模型调用,到提示词模板、记忆管理、数据连接等核心功能的运用,每一个模块都为构建智能应用添砖加瓦。掌握这些基础内容后,您可以进一步探索智能体开发、复杂链组装等进阶功能,解锁更多大模型应用的可能性。