1、LangChain 初探:什么是 LangChain?为什么企业需要它?核心概念(LLM、Chain、Agent、Memory)概览

1.1 从一次「翻车」说起:我为什么需要 LangChain?

先讲个我自己的故事。

去年有个项目,客户要求做一个智能客服。需求听起来很简单:接入 GPT-4,用户问什么,模型答什么。我一开始也觉得,调个 API 嘛,半小时搞定。

结果呢?

用户问「我的订单到哪了」,模型回答「我是一个 AI 助手,无法查询实时物流」。用户又问「帮我退掉昨天买的那个」,模型回答「好的,已为您取消订单」——但系统根本没执行任何操作。

嗯,问题来了。

模型不知道你的数据库在哪,不知道你的业务逻辑是什么,更不知道什么时候该调用 API、什么时候该查文档。它只是一个「会说话的脑子」,没有手和脚。

这时候,LangChain 出现了。

说白了,LangChain 就是给大模型装上「手和脚」的工具。它帮你把模型、数据、API、逻辑串起来,形成一个真正能干活的应用。

1.2 什么是 LangChain?

官方定义:LangChain 是一个用于构建大语言模型(LLM)应用的框架。

我个人习惯把它理解成「乐高积木」。你想想看,乐高有各种基础块——轮子、窗户、人偶。你用这些块可以拼出汽车、城堡、飞船。LangChain 也一样,它提供了 LLM、Chain、Agent、Memory 这些基础模块,你可以自由组合,搭出聊天机器人、文档分析系统、自动化工作流……

核心价值就两点:

  • 抽象:你不用关心每个模型的 API 格式差异。OpenAI、Claude、本地模型,LangChain 统一接口。
  • 编排:把多个步骤串起来。比如「先查数据库 → 再让模型总结 → 最后格式化输出」,一行配置搞定。

一句话总结:LangChain 是 LLM 时代的「胶水代码」。它不生产智能,它只是智能的搬运工。

1.3 为什么企业需要它?

你可能要问:我自己写代码调 API 不行吗?

行,但你会遇到几个头疼的问题。

企业痛点 自己写代码 用 LangChain
模型切换 每个模型一套 SDK,改起来想哭 换一行配置就行
多步骤流程 自己写状态机,容易出 bug Chain 帮你管理
记忆管理 要自己维护对话历史 Memory 模块开箱即用
工具调用 要自己解析模型输出、调用函数 Agent 自动决定调用哪个工具

我在项目中遇到过一家金融公司,他们想用 LLM 做合规审查。自己写的话,要处理模型输出解析、多轮对话上下文、调用内部 API 查数据……团队折腾了两个月,代码写了一万多行,还是不稳定。后来用 LangChain 重构,两周上线,代码量不到原来的十分之一。

为什么?因为 LangChain 把那些「脏活累活」都封装好了。你只需要关注业务逻辑。

1.4 核心概念概览

好,接下来我们看看 LangChain 的四大核心模块。我尽量用大白话讲清楚。

1.4.1 LLM:大语言模型

这是最基础的一层。LLM 就是那个「会说话的脑子」。LangChain 支持各种模型:OpenAI 的 GPT 系列、Anthropic 的 Claude、Google 的 PaLM,还有开源的 Llama、ChatGLM 等等。

用法很简单:

from langchain.llms import OpenAI

llm = OpenAI(model="gpt-4", temperature=0.7)
response = llm("给我写一首关于程序员的情诗")
print(response)

你看,不管底层是哪个模型,调用方式都一样。这就是抽象的好处。

我的建议:刚开始学的时候,先用 OpenAI 的模型。等熟悉了再换别的。别一上来就折腾本地部署,容易劝退。

1.4.2 Chain:链

Chain 是 LangChain 的核心编排单元。它把多个步骤串成一个流水线。

举个例子:你想做一个「用户评论情感分析」功能。流程可能是:

  1. 读取用户评论
  2. 让 LLM 判断情感(正面/负面)
  3. 根据结果生成回复

用 Chain 实现:

from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate

prompt = PromptTemplate(
    input_variables=["review"],
    template="分析以下评论的情感:{review}。请只回复'正面'或'负面'。"
)

chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run("这个产品太棒了,我超喜欢!")
print(result)  # 输出:正面

你想想看,如果自己写,你要处理 prompt 拼接、模型调用、结果解析。Chain 把这些都封装了,你只需要定义「输入 → 处理 → 输出」的流程。

1.4.3 Agent:智能体

Agent 是 LangChain 里最酷的东西。它让 LLM 自己决定「下一步该做什么」。

什么意思呢?

假设你有一个 Agent,它手里有「查天气」和「查日历」两个工具。用户说「明天下午三点有个会,帮我看看会不会下雨」。Agent 会:

  1. 先调用「查日历」工具,找到明天下午三点有会议
  2. 再调用「查天气」工具,查询明天下午的天气
  3. 最后综合信息,给出回答

整个过程,Agent 自己决定调用哪个工具、按什么顺序调用。

from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType

tools = [
    Tool(name="查天气", func=weather_api, description="查询某地某时的天气"),
    Tool(name="查日历", func=calendar_api, description="查询日程安排")
]

agent = initialize_agent(
    tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True
)

agent.run("明天下午三点有什么安排?需要带伞吗?")

注意:Agent 虽然强大,但也不是万能的。我曾经遇到过一个 Agent 在循环调用工具,差点把 API 配额打光。所以一定要设置 max_iterations 限制迭代次数。

1.4.4 Memory:记忆

LLM 本身是没有记忆的。你问它「我叫小明」,它记住了。但你再问「我叫什么名字」,它可能就忘了——因为每次对话都是独立的。

Memory 就是用来解决这个问题的。它帮你保存对话历史,让模型「记得」之前说过什么。

from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

memory = ConversationBufferMemory()
conversation = ConversationChain(llm=llm, memory=memory)

conversation.run("你好,我叫小明")
conversation.run("我叫什么名字?")  # 它会回答:你叫小明

Memory 有多种类型:

  • BufferMemory:保存全部对话历史
  • SummaryMemory:自动总结历史,节省 token
  • VectorStoreMemory:用向量数据库存储,适合超长对话

我个人习惯在客服场景用 SummaryMemory。因为对话可能很长,全部保存太费钱。自动总结一下,既省钱又够用。

1.5 这四个概念怎么配合?

我画个简单的图帮你理解:

LLM 是大脑,负责思考。
Chain 是骨架,定义流程。
Agent 是双手,执行操作。
Memory 是记事本,记录上下文。

一个典型的企业应用可能是这样的:

  1. 用户提问 → 进入 Chain
  2. Chain 从 Memory 中读取历史
  3. LLM 理解问题,决定是否需要调用工具
  4. 如果需要,Agent 执行工具调用
  5. 结果返回给 LLM,生成最终回答
  6. 回答存入 Memory,供下次使用

你看,每个模块各司其职,组合起来就是一个完整的智能应用。

1.6 本章小结

这一章我们聊了:

  • LangChain 是什么:给 LLM 装上手和脚的框架
  • 为什么企业需要它:省时、省力、省心
  • 四大核心概念:LLM、Chain、Agent、Memory

下一章,我们会深入 Chain,看看怎么用它搭建复杂的业务逻辑。到时候我会分享一个我在电商项目中踩过的坑——关于 Chain 的执行顺序,差点把订单数据搞乱。嗯,到时候细说。

课后练习:用 LangChain 写一个简单的「翻译助手」。输入中文,输出英文。试试看能不能只用 10 行代码搞定。