第16章 LangChain入门:用代码构建可定制的智能体应用

AI智能体实战训练营 · 章节 16/33 · 45 学时

LangChain入门:用代码构建可定制的智能体应用

LangChain是目前最流行、生态最丰富的AI应用开发框架。与Coze、Dify等低代码平台不同,LangChain是一个代码级框架——你用Python或JavaScript编写代码来构建智能体应用。它的优势是灵活度极高,可以实现任何你能想到的功能;劣势是有一定的学习门槛,需要编程能力。

本章将带你从零开始学习LangChain的核心概念和基本用法,通过实战案例掌握用代码构建智能体应用的方法。

一、LangChain概览

1.1 什么是LangChain?

LangChain是一个用于开发基于大语言模型(LLM)应用的框架,由Harrison Chase于2022年10月创建。它的核心思想是:把大模型的能力与外部工具、数据源、业务逻辑结合起来,构建强大的AI应用。

LangChain提供了一系列可复用的组件和抽象,让开发者不需要从零开始实现每一个功能。它的生态非常丰富,集成了上百种大模型、向量数据库、工具、API。

1.2 LangChain的核心价值

  • 组件化设计:把AI应用拆解成可复用的组件(模型、提示词、链、工具、记忆、检索器),像搭积木一样组合
  • 丰富的集成:集成了上百种大模型、向量数据库、工具、API,开箱即用
  • 灵活度高:代码级控制,可以实现任何自定义逻辑,不受平台功能限制
  • 生产级能力:支持流式输出、异步、批处理、重试、回调、追踪等生产级特性
  • 社区活跃:GitHub星标超90k,社区活跃,文档完善,更新迭代快
  • 生态完整:除了核心框架,还有LangSmith(可观测性)、LangGraph(多智能体编排)、LangServe(部署)等配套工具

1.3 什么时候用LangChain?

适合用LangChain不适合用LangChain
需要高度定制化的AI应用简单的问答机器人(用Coze/Dify更快)
需要与复杂业务系统深度集成非技术人员(需要编程能力)
需要实现平台不支持的特殊功能快速验证想法(低代码平台更快)
需要精细控制每一个环节简单的RAG应用(Dify更方便)
有Python/JS开发团队预算有限且需求简单(用免费SaaS即可)
需要研究和探索新的AI应用模式

1.4 LangChain的核心组件

组件功能说明
Models(模型)调用大语言模型支持OpenAI、Anthropic、Google、百度、阿里等上百种模型
Prompts(提示词)管理和优化提示词提示词模板、示例选择器、输出解析器
Chains(链)组合多个组件形成流程把模型、提示词、工具等串联起来
Agents(智能体)自主决策和工具调用ReAct、Plan-and-Execute等Agent架构
Memory(记忆)存储和管理对话历史短期记忆、长期记忆、实体记忆、摘要记忆
Retrievers(检索器)从知识库检索相关信息向量检索、全文检索、混合检索
Tools(工具)扩展智能体的能力搜索、计算、代码执行、API调用等
Callbacks(回调)监控和干预执行过程日志、追踪、流式输出、自定义处理

二、环境搭建和第一个程序

2.1 安装LangChain

# 安装LangChain核心包
pip install langchain

# 安装OpenAI集成(如果用OpenAI模型)
pip install langchain-openai

# 安装社区集成包(包含大量第三方集成)
pip install langchain-community

# 安装向量数据库(示例用Chroma)
pip install chromadb

# 安装文档加载器(示例用PyPDF)
pip install pypdf

2.2 配置API Key

import os
os.environ["OPENAI_API_KEY"] = "你的OpenAI API Key"

# 如果用国内模型(如DeepSeek)
os.environ["DEEPSEEK_API_KEY"] = "你的DeepSeek API Key"

2.3 第一个LangChain程序:简单的对话

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

# 初始化模型
llm = ChatOpenAI(
    model="gpt-4o",  # 或用国内模型
    temperature=0.7,
    max_tokens=1000
)

# 构建消息
messages = [
    SystemMessage(content="你是一位专业的制造业设备维修专家,回答要专业、准确、有条理。"),
    HumanMessage(content="3号空压机异响,温度95度,可能是什么原因?")
]

# 调用模型
response = llm.invoke(messages)
print(response.content)

这就是最简单的LangChain程序——初始化模型、构建消息、调用模型、输出结果。

三、核心组件详解

3.1 提示词模板(Prompt Template)

提示词模板让你可以用变量动态生成提示词,而不是每次都写完整的提示词。

from langchain_core.prompts import ChatPromptTemplate

# 创建提示词模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一位专业的{role},回答要专业、准确、有条理。"),
    ("human", "请回答以下问题:{question}")
])

# 填充变量
formatted_prompt = prompt.format_messages(
    role="设备维修专家",
    question="3号空压机异响,温度95度,可能是什么原因?"
)

# 调用模型
response = llm.invoke(formatted_prompt)
print(response.content)

3.2 链(Chain):用LCEL组合组件

LCEL(LangChain Expression Language)是LangChain的声明式组合语言,用管道符(|)把组件串联起来,形成一条链。

from langchain_core.output_parsers import StrOutputParser

# 构建一条链:提示词模板 → 模型 → 输出解析器
chain = prompt | llm | StrOutputParser()

# 调用链
result = chain.invoke({
    "role": "设备维修专家",
    "question": "3号空压机异响,温度95度,可能是什么原因?"
})

print(result)

LCEL的优势:

  • 流式输出:自动支持流式输出,用chain.stream()即可
  • 异步支持:用chain.ainvoke()异步调用
  • 批处理:用chain.batch()批量处理多个输入
  • 重试:可以配置重试策略
  • 回调:可以注入回调函数,监控执行过程

3.3 输出解析器(Output Parser)

输出解析器把大模型的自然语言输出转换成结构化的数据(如JSON、字典、列表),方便后续处理。

from langchain_core.output_parsers import JsonOutputParser
from pydantic import BaseModel, Field
from typing import List

# 定义输出结构
class FaultAnalysis(BaseModel):
    possible_causes: List[str] = Field(description="可能的故障原因列表")
    probability: List[float] = Field(description="每个原因的可能性(0-1)")
    repair_steps: List[str] = Field(description="维修步骤")
    safety_notes: List[str] = Field(description="安全注意事项")

# 创建解析器
parser = JsonOutputParser(pydantic_object=FaultAnalysis)

# 创建提示词模板(包含格式要求)
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一位专业的设备维修专家。{format_instructions}"),
    ("human", "请分析以下故障:{fault_description}")
])

# 构建链
chain = prompt | llm | parser

# 调用
result = chain.invoke({
    "format_instructions": parser.get_format_instructions(),
    "fault_description": "3号空压机异响,温度95度"
})

print(result["possible_causes"])
print(result["repair_steps"])

3.4 记忆(Memory)

记忆让智能体能够记住之前的对话内容,实现多轮对话。

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

# 创建记忆
memory = ConversationBufferMemory()

# 创建对话链
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True
)

# 多轮对话
print(conversation.predict(input="你好,我是工厂的维修工"))
print(conversation.predict(input="3号空压机异响,温度95度"))
print(conversation.predict(input="我刚才说的是哪台设备?"))

# 查看记忆内容
print(memory.load_memory_variables({}))

LangChain支持多种记忆类型:

  • ConversationBufferMemory:保存完整对话历史(简单但占用上下文多)
  • ConversationSummaryMemory:用大模型总结对话历史(节省上下文但可能丢失细节)
  • ConversationBufferWindowMemory:只保存最近N轮对话(滑动窗口)
  • ConversationEntityMemory:提取对话中的实体信息,单独存储
  • ConversationKGMemory:用知识图谱存储对话中的关系

3.5 检索器(Retriever)和RAG

检索器从知识库中检索相关信息,实现RAG(检索增强生成)。

from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain_core.runnables import RunnablePassthrough

# 第一步:加载文档
loader = PyPDFLoader("空压机维修手册.pdf")
documents = loader.load()

# 第二步:分段
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
splits = text_splitter.split_documents(documents)

# 第三步:向量化并存储
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
    documents=splits,
    embedding=embeddings,
    persist_directory="./chroma_db"
)

# 第四步:创建检索器
retriever = vectorstore.as_retriever(
    search_type="similarity",  # 或 "mmr"(最大边际相关性)
    search_kwargs={"k": 5}  # 返回Top 5
)

# 第五步:构建RAG链
rag_prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一位设备维修专家。请基于以下参考资料回答问题。如果参考资料中没有相关信息,请说明。\n\n参考资料:{context}"),
    ("human", "问题:{question}")
])

def format_docs(docs):
    return "\n\n".join(doc.page_content for doc in docs)

rag_chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | rag_prompt
    | llm
    | StrOutputParser()
)

# 第六步:调用
result = rag_chain.invoke("空压机异响,温度95度,可能是什么原因?")
print(result)

3.6 工具(Tool)和Agent

工具扩展智能体的能力,Agent自主决定调用什么工具。

from langchain_core.tools import tool
from langchain.agents import create_tool_calling_agent, AgentExecutor
import requests

# 定义工具
@tool
def get_weather(city: str) -> str:
    """查询指定城市的天气信息。参数:city(城市名称)"""
    # 调用天气API(示例)
    return f"{city}今天多云转晴,26-33度,湿度75%"

@tool
def calculate(expression: str) -> str:
    """计算数学表达式。参数:expression(数学表达式,如'2+3*4')"""
    try:
        result = eval(expression)
        return f"计算结果:{result}"
    except Exception as e:
        return f"计算错误:{e}"

# 工具列表
tools = [get_weather, calculate]

# 创建Agent
agent_prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个有用的助手,可以使用工具来回答问题。如果需要计算或查询天气,请使用对应的工具。"),
    ("human", "{input}"),
    ("placeholder", "{agent_scratchpad}")
])

agent = create_tool_calling_agent(llm, tools, agent_prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 调用Agent
result = agent_executor.invoke({
    "input": "广州今天天气怎么样?如果温度超过30度,帮我算一下30*1.5等于多少"
})
print(result["output"])

LangChain支持多种Agent架构:

  • create_tool_calling_agent:基于Function Calling的Agent(推荐,效率高)
  • create_react_agent:基于ReAct(推理+行动)的Agent(兼容性好)
  • create_openai_tools_agent:OpenAI专用的工具调用Agent
  • Plan-and-Execute Agent:先规划再执行的Agent,适合复杂任务

四、实战:用LangChain构建设备故障诊断智能体

🔧 实战案例:设备故障诊断智能体

我们用LangChain构建一个完整的设备故障诊断智能体,集成以下功能:
1. 知识库RAG(基于维修手册)
2. 工具调用(查询设备档案、查询历史故障、创建工单)
3. 对话记忆(多轮对话)
4. 结构化输出(诊断报告JSON)

核心代码框架:

1. 初始化组件(模型、Embedding、向量数据库、记忆)
2. 定义工具(查询设备档案、查询历史故障、创建工单、发送通知)
3. 构建RAG检索器(维修手册知识库)
4. 创建Agent(集成工具、RAG、记忆)
5. 定义输出格式(诊断报告结构)
6. 运行Agent,输出诊断报告

这个案例展示了LangChain的强大灵活性——你可以自由组合各种组件,实现复杂的业务逻辑,而不受低代码平台的功能限制。

五、LangChain生态和进阶

5.1 LangSmith:可观测性平台

LangSmith是LangChain团队推出的可观测性平台,用于调试、测试、监控、评估LangChain应用。

  • 调试:查看每一步的输入输出、执行时间、token消耗
  • 测试:创建测试数据集,自动化测试应用��果
  • 监控:监控生产环境的调用量、延迟、错误率、成本
  • 评估:用大模型或人工评估回答质量

5.2 LangGraph:多智能体编排

LangGraph是LangChain团队推出的多智能体编排框架,基于"图"的概念定义智能体之间的状态流转和协作关系。支持复杂的状态管理、循环、条件分支,适合构建复杂的多智能体系统。

5.3 LangServe:部署

LangServe可以把LangChain链部署为REST API,支持流式输出、批量处理、异步调用。一行代码即可启动API服务。

5.4 学习资源

  • 官方文档:https://python.langchain.com
  • GitHub:https://github.com/langchain-ai/langchain
  • LangSmith文档:https://docs.smith.langchain.com
  • LangGraph文档:https://langchain-ai.github.io/langgraph
  • 官方教程和示例:https://github.com/langchain-ai/langchain/tree/master/templates
🎯 本章小结:
• LangChain是最流行的AI应用开发框架,组件化设计,灵活度高,生态丰富,适合需要高度定制化的场景
• 核心组件:Models(模型)、Prompts(提示词)、Chains(链)、Agents(智能体)、Memory(记忆)、Retrievers(检索器)、Tools(工具)
• LCEL(LangChain Expression Language)用管道符(|)组合组件,支持流式、异步、批处理、重试
• RAG实现:文档加载→分段→向量化→存储→检索→组装上下文→生成回答
• Agent实现:定义工具→创建Agent→AgentExecutor执行,支持Function Calling和ReAct两种模式
• 生态:LangSmith(可观测性)、LangGraph(多智能体)、LangServe(部署)
• 学习曲线:需要Python/JS编程能力,但灵活度和可控性远超低代码平台

下一章,我们将深入LangChain的实战应用——自定义Agent、工具链开发、记忆系统设计、复杂工作流编排等,掌握用LangChain构建生产级智能体应用的能力。

📝 本章练习(5题)

答案与解析请在 互动学习看板 中作答查看。

进入互动学习看板学习本章 →

← 上一章下一章 →

📚 AI智能体实战训练营 课程目录(33 章)

  1. 第1章 什么是AI智能体:从聊天机器人到自主决策系统
  2. 第2章 智能体的四大核心能力:感知·思考·行动·记忆
  3. 第3章 范式转移:智能体与传统软件的本质区别
  4. 第4章 2025年主流智能体平台全景对比与选型
  5. 第5章 智能体应用场景地图:从个人效率到企业级落地
  6. 第6章 编排思维:如何把大模型变成可执行的业务流程
  7. 第7章 Prompt工程实战:写出让智能体精准执行的指令
  8. 第8章 工作流编排入门:节点、连线、条件分支与循环
  9. 第9章 知识库RAG实战:让智能体拥有你的专业数据
  10. 第10章 工具调用实战:搜索·计算·API·数据库全掌握
  11. 第11章 多智能体协作:角色分工、任务分发与结果汇总
  12. 第12章 Coze/扣子入门:30分钟搭建你的第一个智能体
  13. 第13章 Coze进阶:插件开发、工作流深度编排与知识库优化
  14. 第14章 Dify入门:开源可私有化部署的智能体平台搭建
  15. 第15章 Dify进阶:RAG管道优化、Agent模式与工作流编排
  16. 第16章 LangChain入门:用代码构建可定制的智能体应用
  17. 第17章 LangChain实战:自定义Agent、工具链与记忆系统
  18. 第18章 Agent Harness与新一代框架:2025年智能体开发趋势
  19. 第19章 平台选型决策树:不同业务场景下的最优平台选择
  20. 第20章 任务拆解方法论:把复杂问题变成智能体可执行的步骤
  21. 第21章 提示词编排艺术:System·User·Function的三层协同
  22. 第22章 记忆系统设计:短期记忆、长期记忆与向量数据库选型
  23. 第23章 错误处理与容错:智能体执行失败时的兜底策略
  24. 第24章 评估与优化体系:如何量化衡量智能体的效果并持续改进
  25. 第25章 安全与合规:智能体应用的数据安全、隐私保护与风险防控
  26. 第26章 实战项目一:企业知识库智能问答助手(全流程实操)
  27. 第27章 实战项目二:制造业设备故障诊断智能体
  28. 第28章 实战项目三:供应链采购智能分析与比价助手
  29. 第29章 实战项目四:多智能体协同的项目管理办公室(PMO)
  30. 第30章 实战项目五:智能体与MES/ERP系统的深度集成
  31. 第31章 智能体落地路线图:从POC验证到规模化应用的完整路径
  32. 第32章 AI智能体工程师/产品经理的能力模型与成长路径
  33. 第33章 作品集打造与面试准备:如何拿到AI智能体岗位Offer

🔥 热门文章

行业热门标准、政策解读与碳管理干货

标准指南
智能制造能力成熟度模型(CMMM)全面解读
👀 725 阅读
广东省
《广东省企业(单位)二氧化碳排放信息报告指南(2024年修订)》解读
👀 461 阅读
标准指南
GB/T 39567-2020《智能制造系统架构》标准解读
👀 428 阅读
行业动态
⚡ 2026年能源政策趋势盘点:电价改革、新能源与用能企业应对指南
👀 398 阅读
标准指南
JS/T 303—2026《公共机构碳排放核算指南》全文解读
👀 378 阅读
标准指南
ISO 14040/14044 生命周期评价(LCA)标准解读:企业碳足迹核算的国际基石
👀 369 阅读
标准指南
IPCC 国家温室气体清单指南解读:全球碳排放核算的方法论根基
👀 298 阅读
subsidy-report
【深圳】2026年企业技术改造与数字化转型扶持政策解读:单个项目最高资助1亿元
👀 232 阅读

免费获取政策补贴方案

专业顾问1对1,帮您匹配可申请的补贴资金

政策补贴 碳排放管理 能源管理 绿色工厂 数字化转型 MES系统

💬 免费咨询

留下联系方式,获取专属解决方案

📞 电话咨询
📞

📞 联系我们

👤 赵先生: 13189195857

👤 麦先生: 18665632270

👤 ⬆
📞 工业数字化免费咨询: 131-8919-5857 | 186-6563-2270 | 支持上门演示 & 30天免费试用

如何选择适合自己的双碳与工业互联网课程?

数晰智研社职业培训围绕双碳与工业互联网两大方向开设系统课程:四大双碳岗位课程(碳排放管理员 12 章、碳排放核查员 10 章、碳排放交易员 9 章、碳咨询顾问 10 章)覆盖从政策合规到交易实战的全链路,另设 IoT 物联平台、能源管理系统、碳排放管理系统、MES 制造执行系统等工业互联网实操课程。全部课程免费开放学习,增值服务按需选购。

零基础入门:从碳排放管理员开始

面向控排企业碳管理岗位,课程覆盖双碳政策、MRV 体系、监测计划、核算实操、报告编制、配合核查全流程,是零基础学员建立碳管理体系认知的首选路径。

岗位进阶:核查员 / 交易员 / 碳咨询顾问

碳排放核查员(10 章)面向第三方核查能力培养;碳排放交易员(9 章)面向碳资产岗位,覆盖配额管理、市场规则、交易策略、CCER 开发与抵销、碳金融与风险管理;碳咨询顾问(10 章)面向咨询与 ESG 岗位,覆盖咨询方法论、产品碳足迹、绿色金融、碳资产管理。

企业培训:定制课程 + 现场辅导

面向企业批量培训提供碳管理、MES、IoT 定制课程与现场辅导服务,帮助企业快速建立团队数字化与双碳能力。

学习路径建议

零基础学员建议按"碳排放管理员 → 碳排放核查员 → 碳排放交易员 → 碳咨询顾问"的顺序进阶;已从事能源或生产管理的人员可直接选择对应工业互联网实操课程(IoT 物联平台 / 能源管理系统 / 碳排放管理系统 / MES 制造执行系统),并配合课程章节练习与智能错题本巩固。

常见问题(FAQ)

课程收费吗?

全部课程免费开放学习。增值服务按需选购:职业培训专项包(年度)129 元/年,解锁 9 门课程全部权益与学习服务,一年内无限学习;企业批量培训 699 元/年,含定制课程与现场辅导。

学完能获得证书吗?

学完全部章节后,可申请结业认证与职业技能证书,用于岗位能力证明。

单课学习与专项包的区别?

单课可免费学习基础内容;职业培训专项包解锁全部课程权益与学习服务(章节练习、智能错题本、结业认证等),适合系统备考双碳岗位。

企业批量培训怎么合作?

企业批量培训 699 元/年,可定制碳管理、MES、IoT 课程并安排现场辅导,适合企业团队整体能力建设。