LangChain:让大模型具备思考与行动能力的框架
LangChain:让大模型具备思考与行动能力的框架
一、LangChain 是什么?
LangChain 是一个 用于构建基于大语言模型(LLM)的应用框架。
它的目标是:让开发者能轻松地将大模型(如 GPT、Claude、Qwen、Gemini 等)与外部工具、数据库、API 结合,构建“能理解、能记忆、能推理、能执行”的智能系统。
一句话概括:
LangChain = 大模型 + 记忆 + 工具 + 数据源 + 推理链
二、LangChain 的核心组成部分
LangChain 的结构清晰,可以分为五大核心模块:
| 模块 | 作用 | 举例 |
|---|---|---|
| LLMs | 调用语言模型 | ChatOpenAI, ChatQwen, ChatAnthropic |
| Prompt Templates | 统一管理提示词 | 把“任务说明 + 用户输入”拼接成模型输入 |
| Chains | 串联多个步骤形成“推理链” | 如:先提取关键词 → 再搜索 → 再总结 |
| Memory | 保存对话历史或上下文 | 让模型“记得”之前说过什么 |
| Agents & Tools | 让模型能“调用外部工具” | 如:上网搜索、算数学、查数据库 |
三、LangChain 的基本工作流程
下面是一个最小可运行示例:
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.chains import LLMChain# 1. 定义大模型
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7)# 2. 定义提示词模板
prompt = ChatPromptTemplate.from_template("你是一位AI讲解员,请用通俗语言解释:{concept}"
)# 3. 构建链
chain = LLMChain(llm=llm, prompt=prompt)# 4. 运行
result = chain.invoke({"concept": "量子纠缠"})
print(result["text"])
运行结果:
量子纠缠是一种奇怪的物理现象...
你会发现:LangChain 把 LLM 的输入输出逻辑化、结构化了。
四、Prompt 模板系统:控制模型输出的关键
LangChain 支持多种提示模板,包括:
-
PromptTemplate:适用于单轮文本输入 -
ChatPromptTemplate:用于对话形式的输入 -
FewShotPromptTemplate:提供少量示例帮助模型学习风格 -
SystemMessagePromptTemplate/HumanMessagePromptTemplate:用于多角色提示(系统 + 用户)
示例:
from langchain.prompts import (SystemMessagePromptTemplate,HumanMessagePromptTemplate,ChatPromptTemplate
)system_prompt = SystemMessagePromptTemplate.from_template("你是一名专业的AI健康顾问。"
)
human_prompt = HumanMessagePromptTemplate.from_template("请用简明语言解释体检报告中{indicator}偏高意味着什么?"
)chat_prompt = ChatPromptTemplate.from_messages([system_prompt, human_prompt])
这样,模型在调用时就会自动拼接出结构化的多角色提示。
五、Memory:让对话有“记忆”
默认的大模型是“无记忆”的,每次都从零开始。
LangChain 提供了 Memory 模块,让模型可以记住过去的上下文。
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain_openai import ChatOpenAImemory = ConversationBufferMemory()
llm = ChatOpenAI(model="gpt-4o-mini")conversation = ConversationChain(llm=llm, memory=memory)print(conversation.invoke("你好,我叫小明"))
print(conversation.invoke("我刚才说我叫什么名字?"))
输出:
你好,小明!
你刚才说你叫小明。
这意味着模型“记住了”之前的内容。
六、Agents:让模型学会“调用工具”
LangChain 的 Agent 模型是它最强大的特性。
它允许大模型在思考过程中决定要不要调用外部工具(如搜索引擎、计算器、数据库等)。
例如:
from langchain.agents import initialize_agent, load_tools
from langchain_openai import ChatOpenAI# 加载工具
tools = load_tools(["llm-math"])# 定义智能体
llm = ChatOpenAI(model="gpt-4o-mini")
agent = initialize_agent(tools, llm, agent_type="zero-shot-react-description")# 让模型自主决定调用工具
result = agent.invoke({"input": "请计算 (3.14^2 + 2.71^2)/2 的值"})
print(result["output"])
模型会自动决定调用“数学计算工具”,执行后返回结果。
七、LangChain 与外部知识库结合
LangChain 支持接入 本地文档、向量数据库、检索增强生成(RAG)。
例如,用 Qdrant / FAISS / Chroma 存储文本向量,然后基于检索做问答:
from langchain_community.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.chains import RetrievalQA# 向量化文档
embeddings = OpenAIEmbeddings()
db = FAISS.from_texts(["LangChain是一个LLM框架", "RAG可以让模型查资料"], embeddings)# 构建检索问答链
retriever = db.as_retriever()
qa_chain = RetrievalQA.from_chain_type(llm=ChatOpenAI(model="gpt-4o-mini"),retriever=retriever,
)print(qa_chain.invoke("RAG 是做什么的?")["result"])
输出:
RAG 用于增强大模型的知识能力,通过检索外部资料来回答问题。
八、实战案例:智能健康咨询系统(示例)
结合 Memory + Prompt + Agent + 外部知识,实现一个智能体检报告问答系统。
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain_openai import ChatOpenAIsystem_prompt = """
你是一位专业的健康咨询助理,擅长解释体检报告、饮食建议和运动指导。
当用户问问题时,请用温和专业的语气回答。
"""llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.5)
memory = ConversationBufferMemory()
chain = ConversationChain(llm=llm, memory=memory, verbose=True)print(chain.invoke("我血脂有点高怎么办?"))
print(chain.invoke("那我平时能吃鸡蛋吗?"))
结果:
血脂高说明血液中脂质水平偏高,建议少吃油炸食物,多吃蔬菜和全谷物。
你可以适量吃鸡蛋,一天1个问题不大,但要避免煎炸。
这就是一个小型 RAG-free 健康问答系统的雏形。
九、LangChain 与 OpenAI API 的关系
| 项目 | 职责 |
|---|---|
| OpenAI API | 提供语言模型(如 GPT-4、GPT-4o-mini) |
| LangChain | 提供模型调用逻辑、记忆、工具调用、数据链路等封装 |
因此:
OpenAI = 大脑
LangChain = 神经系统 + 手脚 + 记忆系统
十、总结:LangChain 的价值
✅ 优点:
-
快速构建复杂的多步推理应用
-
模块化、扩展性强
-
支持主流大模型(OpenAI、Qwen、Claude、Gemini 等)
-
自带 Memory、Tools、RAG、Agents 等高级能力
⚠️ 缺点:
-
框架抽象层多,调试相对繁琐
-
对初学者来说理解 prompt 流程和 agent 执行机制有一定门槛
建议的学习路线
-
掌握基础 LLM 调用(如
ChatOpenAI) -
熟悉 PromptTemplate 与 Chain
-
理解 Memory 与上下文管理
-
学习 Agent 的工具调用机制
-
掌握 RAG(检索增强生成)项目实战
