一、LangChain 概述与定位
1.1 LangChain 是什么
- 框架定位:大模型应用开发的模块化、可组合化框架
- 核心作用:连接大模型与应用,封装智能体所需的复杂逻辑
- 技术栈演进:LangChain → LangGraph → Deep Agent(三层技术栈)
1.2 发展历程
- 探索期(2022 Q4-2023 Q1):基础模块(PromptTemplate、LLMChain)
- 体系化阶段(2023 Q2-2023 Q4):引入 Tool、Agent、Retrieval 等概念
- 平台化阶段(2024-2025 H1):LangGraph(工作流编排)、LangServe(服务部署)
- 深层智能体阶段(2025 H2至今):Deep Agent(智能体执行框架)
1.3 LangChain 1.0 核心变革
- 从功能堆砌到体验统一:API 重构与瘦身,统一接口
- 从链式思维到智能体优先:封装高级智能体编程接口
- 关键技术:中间件机制(类似 Spring AOP)、Deep Agent
二、LangChain 生态体系
2.1 四大核心组件
| 组件 |
定位 |
作用 |
| LangChain |
基础框架 |
智能体开发的基石,提供模型调用、工具集成等基础能力 |
| LangGraph |
编排引擎 |
复杂工作流的编排,基于有向图管理执行逻辑与状态流转 |
| Deep Agent |
执行框架 |
构建具备深度规划、长期记忆与多专家协作的智能体 |
| LangSmith |
监控平台 |
可观测性与质量管理,追踪、记录、分析智能体运行链路 |
2.2 组件选择策略
- 重型全自动复杂任务:优先 Deep Agent(自动调用底层 LangChain+LangGraph)
- 简单线性 AI 功能:直接使用 LangChain
- 完全掌控流程、自定义复杂流转:手写 LangGraph + LangChain 工具支撑
三、智能体核心概念
3.1 智能体 vs 传统应用
| 对比维度 |
传统应用 |
智能体 |
| 驱动模式 |
命令驱动 |
目标驱动 |
| 交互方式 |
固定界面、参数输入 |
自然语言、语义理解 |
| 执行逻辑 |
流程化、预定义 |
自主规划、多步推理 |
| 学习机制 |
静态算法 |
动态学习与记忆 |
| 系统角色 |
工具 |
合作伙伴 |
3.2 智能体四大核心能力
- 感知(Perception):眼睛 - 理解环境与输入
- 决策(Reasoning):大脑 - 规划与推理
- 行动(Action):双手 - 执行任务
- 记忆(Memory):灵魂 - 存储与学习
四、开发环境与基础调用
4.1 环境准备
4.2 模型调用方式对比
| 方式 |
特点 |
适用场景 |
| OpenAI 兼容 API |
直接调用,简单直接 |
快速验证、简单场景 |
| ChatOpenAI |
LangChain 封装,支持更多参数 |
标准 LangChain 项目 |
| init_chat_model |
官方推荐,统一接口 |
LangChain 1.0+ 项目 |
4.3 推荐写法(LangChain 1.0+)
from langchain_openai import init_chat_model
from dotenv import load_dotenv
load_dotenv()
model = init_chat_model(
model="deepseek-v4-flash",
model_provider="openai",
base_url="https://api.deepseek.com"
)
response = model.invoke("你好")
print(response.content)
4.4 配置管理
五、消息结构与多轮对话
5.1 消息角色
| 角色 |
对应类 |
作用 |
| 系统消息 |
SystemMessage |
设定 AI 角色、规则、回答风格 |
| 用户消息 |
HumanMessage |
用户输入的问题或需求 |
| AI 回复 |
AIMessage |
模型返回的回复内容 |
5.2 消息结构示例
from langchain_core.messages import SystemMessage, HumanMessage, AIMessage
messages = [
SystemMessage(content="你是一名客服助手,回答要礼貌、简洁。"),
HumanMessage(content="我的订单什么时候发货?"),
AIMessage(content="请提供订单号,我帮您查询。"),
HumanMessage(content="订单号是 123456")
]
5.3 多轮对话实现
history = []
while True:
user_input = input("用户: ")
if user_input.lower() == "exit":
break
messages = [
SystemMessage(content="你是客服助手"),
*history[-6:],
HumanMessage(content=user_input)
]
response = model.invoke(messages)
print(f"助手: {response.content}")
history.append(HumanMessage(content=user_input))
history.append(AIMessage(content=response.content))
5.4 历史消息管理
- 必要性:实现上下文感知的对话
- 限制原因:
- 请求成本随消息增长
- 处理速度变慢
- 可能超出模型上下文限制
- 早期消息可能干扰当前回答
- 推荐做法:保留最近 3-6 轮对话(6-12 条消息)
六、模型参数调优
6.1 temperature 参数详解
| 取值 |
特点 |
适用场景 |
| 0 |
完全确定性,输出固定 |
代码生成、数学计算、事实问答、翻译 |
| 0.1-0.4 |
轻微随机,逻辑稳定 |
客服问答、RAG、文档解析、结构化提取 |
| 0.5-0.8 |
平衡创意与逻辑 |
文案、总结、普通聊天 |
| ≥1.0 |
高创造性,容易虚构 |
故事、诗歌、创意文案 |
6.2 参数设置建议
model = init_chat_model(
model="deepseek-v4-flash",
model_provider="openai",
base_url="https://api.deepseek.com",
temperature=0.3,
max_tokens=1000
)
七、多模型支持策略
7.1 模型接入优先级
- 首选:
init_chat_model(统一接口,可移植性强)
- 备选:社区扩展包(如
langchain-community)
- 注意:版本兼容性检查
7.2 常见模型接入示例
model = init_chat_model(
model="deepseek-v4-flash",
model_provider="openai",
base_url="https://api.deepseek.com"
)
from langchain_community.chat_models import ChatTongyi
model = ChatTongyi(
dashscope_api_key="your-key",
model_name="qwen-max"
)
model = init_chat_model(
model="deepseek-v4-flash",
model_provider="openai",
base_url="https://api.siliconflow.cn/v1"
)
八、实战案例要点
8.1 案例一:基础调用验证
- 目的:验证环境配置和 API 连通性
- 关键点:使用原生 OpenAI SDK 直接调用,确认基础环境正常
8.2 案例二:客服角色助手
- 目的:掌握 SystemMessage 的角色控制
- 关键点:通过 system 消息设定助手行为规则
8.3 案例三:多轮对话助手
- 目的:实现带上下文的连续对话
- 关键点:历史消息的管理与长度控制
九、常见问题与排查
9.1 API Key 问题
- 检查项:
.env 文件位置、变量名、load_dotenv() 调用
- 错误现象:认证失败、余额不足
9.2 网络连接问题
- 可能原因:网络代理、base URL 错误、服务不可用
- 排查步骤:
- 检查 base URL 是否正确
- 测试网络连通性
- 验证账户余额
9.3 模型响应异常
- System 规则不生效:大模型不是传统程序,规则是概率性执行
- 解决方案:结合结构化输出、程序校验、后处理逻辑
十、最佳实践总结
10.1 开发规范
- 环境配置:使用
.env 管理敏感信息
- 版本选择:Python 3.10/3.11 + ,LangChain 1.0+
- 模型初始化:优先使用
init_chat_model
- 消息管理:合理控制历史消息长度
10.2 代码结构
- 配置分离:API Key、base URL 等配置外部化
- 错误处理:添加适当的异常捕获和日志记录
- 参数调优:根据场景调整 temperature 等参数
- 可维护性:模块化设计,便于扩展和维护
10.3 学习路径建议
- 基础阶段:掌握模型调用、消息结构、多轮对话
- 进阶阶段:学习 Prompt 模板、工具调用、检索增强
- 高级阶段:掌握 LangGraph 编排、Deep Agent 应用
- 生产实践:集成 LangSmith 监控、性能优化、部署方案
所有评论(0)