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 的核心编排单元。它把多个步骤串成一个流水线。
举个例子:你想做一个「用户评论情感分析」功能。流程可能是:
- 读取用户评论
- 让 LLM 判断情感(正面/负面)
- 根据结果生成回复
用 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 会:
- 先调用「查日历」工具,找到明天下午三点有会议
- 再调用「查天气」工具,查询明天下午的天气
- 最后综合信息,给出回答
整个过程,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 是记事本,记录上下文。
一个典型的企业应用可能是这样的:
- 用户提问 → 进入 Chain
- Chain 从 Memory 中读取历史
- LLM 理解问题,决定是否需要调用工具
- 如果需要,Agent 执行工具调用
- 结果返回给 LLM,生成最终回答
- 回答存入 Memory,供下次使用
你看,每个模块各司其职,组合起来就是一个完整的智能应用。
1.6 本章小结
这一章我们聊了:
- LangChain 是什么:给 LLM 装上手和脚的框架
- 为什么企业需要它:省时、省力、省心
- 四大核心概念:LLM、Chain、Agent、Memory
下一章,我们会深入 Chain,看看怎么用它搭建复杂的业务逻辑。到时候我会分享一个我在电商项目中踩过的坑——关于 Chain 的执行顺序,差点把订单数据搞乱。嗯,到时候细说。
课后练习:用 LangChain 写一个简单的「翻译助手」。输入中文,输出英文。试试看能不能只用 10 行代码搞定。