LangChain 入门与项目实战:打造你的第一个 LLM 应用

本文是一篇万字深度指南,带你从 0 到 1 理解 LangChain 的架构精髓、核心模块与项目实战技巧,帮助你快速掌握大模型应用开发,打造属于自己的智能助手或自动化系统。

一、LangChain 是什么?为什么要学它?

2023 年以来,大模型从 ChatGPT 掀起的狂潮演化为全行业的智能化升级浪潮。越来越多企业希望构建自己的智能体,但很多开发者面临几个核心挑战:

  • 如何高效调用大模型 API?

  • 如何管理对话上下文?

  • 如何引入外部工具、知识库、数据库?

  • 如何封装出复杂、可组合、可追踪的流程?

LangChain 就是为了解决这些问题而生的框架。

LangChain 提供一套模块化、可组合的链式调用体系,使你能够以构建函数的方式快速搭建 LLM 应用,并支持 Memory(上下文记忆)、Agent(工具调度)、Retrieval(知识检索)等高级机制。

简而言之:LangChain 是连接大模型与现实任务的“中间件大脑”。

二、LangChain 架构概览

LangChain 核心理念是“链式思维”(Chain of Thought),在代码中体现在:每个模块是一个功能节点,多个节点串联成“链”,链之间又可以嵌套组合。

LangChain 架构图

LangChain 架构主要包括六大核心组件:

  • LLMs/ChatModels:底层大语言模型调用,如 OpenAI、Anthropic、DeepSeek 等。

  • Prompts:提示词模板,支持变量插入和多轮对话。

  • Chains:可组合的模块链条,支持序列、条件、映射等形式。

  • Memory:用于存储对话历史,实现多轮交互。

  • Agents:具备工具调用能力的智能体。

  • Tools & Retrievers:包括搜索引擎、数据库、Python 解释器、插件接口等。

三、从 Hello LangChain 开始

安装:

pip install langchain openai

最简单的调用 OpenAI:

from langchain.llms import OpenAI

llm = OpenAI(openai_api_key="your-key")
response = llm("什么是 LangChain?")
print(response)

添加 Prompt 模板:

from langchain.prompts import PromptTemplate

prompt = PromptTemplate(
    input_variables=["name"],
    template="{name} 是什么?请用通俗的语言回答。"
)
llm_chain = LLMChain(llm=llm, prompt=prompt)
print(llm_chain.run("LangChain"))

这就是最基础的“链”:Prompt + LLM。

四、LangChain 中的链(Chain)机制解析

LangChain 的 Chain 是一套“函数式组合”的抽象机制,不同模块可以嵌套、并行或条件选择执行。

1. SequentialChain

将多个步骤串行执行。

from langchain.chains import SimpleSequentialChain

chain = SimpleSequentialChain(chains=[chain1, chain2], verbose=True)

2. LLMChain

最基本的链:PromptTemplate + LLM

llm_chain = LLMChain(prompt=prompt, llm=llm)

3. RouterChain

根据输入内容动态选择子链。

4. TransformChain

自定义中间处理逻辑,如数据清洗、字段重命名等。

五、Memory:让大模型拥有“记忆力”

LangChain 提供对话历史管理机制 Memory,可保持上下文连续。

1. ConversationBufferMemory

以 buffer 方式记录所有历史对话。

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory()

2. ConversationSummaryMemory

对对话历史进行摘要,适合长对话。

3. ConversationKGMemory

基于知识图谱提取实体关系。

在 Chain 中集成 Memory:

llm_chain = LLMChain(
    prompt=prompt,
    llm=llm,
    memory=memory
)

六、Agent 机制:调用外部工具的智能体

当你需要调用搜索引擎、数据库、Python 计算器,普通 LLM 无法完成。但 Agent + Tool 机制可以:

1. 初始化 Agent

from langchain.agents import load_tools, initialize_agent, AgentType

llm = OpenAI(temperature=0)
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)
agent.run("美国总统的年龄加上圆周率是多少?")

2. 自定义工具

from langchain.tools import Tool

def multiply(x): return int(x) * 2

tools = [Tool(name="double", func=multiply, description="将数字乘以2")]

Agent 会自动根据你的提问决定是否调用工具。

七、项目实战:打造一个“旅行助手”应用

目标:构建一个 LLM 驱动的旅行推荐系统,具备以下能力:

  • 输入城市与预算,推荐景点与路线

  • 结合天气 API 提供最佳出行时间

  • 具备多轮对话能力

  • 可调用搜索引擎获取实时信息

项目结构:

travel_bot/
├── app.py
├── prompt_templates/
│   └── recommend.txt
├── memory.py
├── tools.py
└── config.py

核心逻辑(app.py)

from langchain.llms import OpenAI
from langchain.agents import initialize_agent, Tool
from langchain.memory import ConversationBufferMemory
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain

# 加载配置与模型
llm = OpenAI(openai_api_key="your-key")
memory = ConversationBufferMemory()

# 自定义工具:天气
import requests

def get_weather(city):
    return f"{city} 明天多云 28℃"

tools = [Tool(name="weather", func=get_weather, description="获取天气信息")]

# 初始化 Agent
agent = initialize_agent(tools, llm, memory=memory, agent="chat-zero-shot-react-description")

while True:
    user_input = input("你:")
    print("助手:", agent.run(user_input))

八、LangChain 与向量数据库整合:实现知识检索问答

LangChain 支持与 FAISS、Weaviate、Pinecone 等向量数据库连接,实现 RAG(Retrieval Augmented Generation)能力。

示例:上传 PDF 文档,进行问答。

from langchain.document_loaders import PyPDFLoader
from langchain.vectorstores import FAISS
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.chains import RetrievalQA

loader = PyPDFLoader("xxx.pdf")
docs = loader.load()

vectorstore = FAISS.from_documents(docs, OpenAIEmbeddings())
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever()
)
qa_chain.run("请总结第二章内容")

九、最佳实践与常见问题

  • 提示词调优(Prompt Engineering)是成败关键

  • 多轮对话建议使用 Memory + Chain,而非一次性重建上下文

  • Agent 不适合处理高精度场景(如金融计算)

  • 复杂流程建议将 Chain 拆分为多个子模块组合

十、总结与未来展望

LangChain 是目前构建 LLM 应用最具生态优势的框架之一,它不仅提供了链式调用抽象,更支持 Memory、Agent、Retrieval 等完整能力栈,让开发者能真正做出“有记忆力、能动手、有知识库”的 AI 系统。

未来,LangChain 会逐步演化为“LLM 操作系统”,你构建的每一个 Chain 都像一个子程序,Agent 则是调度器,Memory 是内存,Retriever 是磁盘索引。

如果你想真正进入“大模型应用开发”这一新赛道,不妨就从 LangChain 开始,构建你的第一个智能体应用。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值