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 开始,构建你的第一个智能体应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值