别光会用AI,得会造AI——LangChain零基础手搓智能体实战
别光会用AI,得会造AI——LangChain零基础手搓智能体实战
文章摘要:本文是 LangChain 入门第一课,面向零基础初学者。文章系统介绍了 AI 智能体的概念、LangChain 框架的定位与生态,并手把手指导读者搭建 Python 开发环境、配置 DeepSeek API Key,通过四个渐进式案例(原生 SDK 调用、ChatOpenAI 调用、init_chat_model 统一初始化、课程答疑助手)演示了如何调用大模型。最后还扩展讲解了接入 OpenAI、Qwen、硅基流动等其他模型的方法,并提供了常见问题排查指南。全文以实践为导向,帮助读者快速跑通第一个 LangChain 应用。
适合人群:零基础初学者,了解基本 Python 语法即可跟着操作。你能学到什么:理解智能体概念 → 认识 LangChain 生态 → 搭建开发环境 → 跑通第一个 AI 应用。
阅读时间:约 20 分钟(含动手实操)。
目录
- 一、写在前面:为什么要学 LangChain
- 二、什么是智能体(AI Agent)
- 三、LangChain 是什么
- 四、为什么选择 DeepSeek
- 五、理解 OpenAI 兼容 API
- 六、开发环境搭建(手把手)
- 七、配置 DeepSeek API Key
- 八、案例一:用原生 SDK 调用 DeepSeek
- 九、案例二:用 LangChain ChatOpenAI 调用
- 十、案例三:用 init_chat_model 统一初始化(推荐)
- 十一、案例四:打造你的第一个课程答疑助手
- 十二、接入其他大模型(OpenAI / Qwen / 硅基流动)
- 十三、常见问题排查
- 十四、本章总结
一、写在前面:为什么要学 LangChain
2022 年底,ChatGPT 横空出世,大语言模型(LLM)将人工智能时代清晰地划分为前后两个时期。大模型不仅能理解人类语言的复杂意图,还能进行跨领域的知识融合与推理——这意味着,我们终于拥有了一个可被广泛调用的"数字大脑"。
但光有大脑还不够。如果你想让 AI 帮你查资料、写代码、订机票、分析数据,就需要给它装上"眼睛"(感知环境)、“双手”(执行操作)和"记忆"(记住上下文)。LangChain 就是帮你把这些零件组装起来的开发框架。
本章的目标不是讲高级理论,而是带你完成一个最基础的开发闭环:
- 知道 LangChain 是什么
- 理解 LangChain、模型 API、DeepSeek 之间的关系
- 搭建本地 Python 开发环境
- 用三种不同方式调用 DeepSeek 大模型
- 写出第一个可运行的 LangChain 小应用
一句话概括:学完本章,你就能在终端里跟 AI 对话了。
二、什么是智能体(AI Agent)
2.1 从传统应用到智能体时代
先来看一张技术演进图:

图:从传统应用到智能体的演进,本质是一场从"命令执行"到"目标协作"的深刻变革。
过去我们用的软件(比如 Word、Excel、各种 App),都是命令驱动的——你点什么它做什么,严格按预设流程走。而智能体是目标驱动的——你只说"帮我做一份销售报告",它自己规划步骤、调用工具、完成任务。
| 对比维度 | 传统应用 | 智能体 |
|---|---|---|
| 驱动模式 | 命令驱动(你说一步它走一步) | 目标驱动(你说目标它自己规划) |
| 交互方式 | 固定界面、参数输入 | 自然语言、语义理解 |
| 执行逻辑 | 流程化、预定义 | 自主规划、多步推理 |
| 学习机制 | 静态算法 | 动态学习与记忆 |
| 系统角色 | 工具(被你使用) | 合作伙伴(替你分忧) |
通俗比喻:传统应用像出租车——你告诉司机走哪条路;智能体像网约车——你说目的地,它自己选路线、避拥堵、把你送到。
2.2 智能体的四大核心能力
智能体之所以"智能",靠的是四大核心模块的精密协同:

图:智能体的认知闭环——感知、决策、行动、记忆四大模块协同工作。
| 模块 | 通俗比喻 | 作用 |
|---|---|---|
| 感知(Perception) | 眼睛 | 接收用户输入、环境信息 |
| 决策(Reasoning) | 大脑 | 分析问题、规划步骤、选择策略 |
| 行动(Action) | 双手 | 调用工具、执行操作、返回结果 |
| 记忆(Memory) | 灵魂 | 记住上下文、从经验中学习优化 |
传统应用遵循 “输入 → 处理 → 输出” 的线性逻辑,而智能体运行在 “感知 → 决策 → 行动 → 记忆” 的持续循环中。它不仅能行动,还能从结果中学习,动态优化后续策略。
智能体的 “感知 → 决策 → 行动 → 记忆” 循环示意:
┌─────────────────────────────────────────────────────────────┐
│ │
│ 用户输入/环境信息 ──▶ 感知(Perception) │
│ │ │
│ ▼ │
│ 决策(Reasoning) │
│ │ │
│ ▼ │
│ 行动(Action) │
│ │ │
│ ▼ │
│ 结果反馈 │
│ │ │
│ ▼ │
│ 记忆(Memory) ──▶ 学习优化 ──▶ 回到感知 │
│ │
└─────────────────────────────────────────────────────────────┘
重要提示:智能体是一个虚拟的概念,可以是自己开发的,也可以使用别人的(比如 ChatGPT 就是一个智能体产品)。我们接下来要学的 LangChain,就是用来开发你自己的智能体的框架。
三、LangChain 是什么
3.1 一句话定义
LangChain 是一个用于开发大模型应用的开源框架,它充当大模型与应用之间的"中间层",让开发者能以统一的方式调用多种大模型、组织提示词、管理上下文状态并集成外部工具。
3.2 框架的三大核心定位
(1)连接大模型与应用
通过统一接口,将大模型与数据库、检索引擎、API、文件系统等外部资源连接起来。你不需要为每个模型学一套不同的 API,LangChain 帮你统一了。
(2)封装复杂逻辑
智能体需要工具调用、记忆管理等复杂功能,LangChain 把这些封装成现成的抽象层,你只需调用几行代码就能实现。
(3)支持多智能体协作与状态管理
随着 LangGraph 与 Deep Agent 的加入,LangChain 生态已从单智能体向多智能体协作扩展,甚至可以打造对标 Manus 的工业级智能体。
3.3 发展历程(了解即可)
LangChain 由机器学习工程师 Harrison Chase 于 2022 年底发布,最初只是为了更好地管理提示词。随后经历了四个阶段:
| 阶段 | 时间 | 关键里程碑 |
|---|---|---|
| 探索期 | 2022 Q4 — 2023 Q1 | 初版发布,PromptTemplate、LLMChain 等基础模块,GitHub Star 快速破万 |
| 体系化阶段 | 2023 Q2 — 2023 Q4 | 引入 Tool、Agent、Retrieval 概念,推出 LangSmith |
| 平台化阶段 | 2024 — 2025 上半年 | LangGraph(工作流管理)+ LangServe(服务部署)发布 |
| 深层智能体阶段 | 2025 下半年至今 | 正式推出 Deep Agent,形成三层技术栈 |
截至 2025 年 11 月,LangChain 生态形成了三层技术栈:
┌─────────────────────────────────────────────┐
│ Deep Agent(智能体执行框架) │ ← 高层:快速构建复杂智能体
├─────────────────────────────────────────────┤
│ LangGraph(运行时编排引擎) │ ← 中层:有向图管理工作流
├─────────────────────────────────────────────┤
│ LangChain(基础能力层) │ ← 底层:模型调用、工具集成
└─────────────────────────────────────────────┘
LangChain 生态关系示意(Deep Agent 位于 LangGraph 之上,LangSmith 同时监控三者):
┌─────────────────────────────────────────────────────────────┐
│ │
│ Deep Agent(智能体执行框架) │
│ 高层:快速构建复杂智能体 │
│ ↓ 调用 │
├─────────────────────────────────────────────────────────────┤
│ │
│ LangGraph(运行时编排引擎) │
│ 中层:有向图管理工作流 │
│ ↓ 调用 │
├─────────────────────────────────────────────────────────────┤
│ │
│ LangChain(基础能力层) │
│ 底层:模型调用、工具集成 │
└─────────────────────────────────────────────────────────────┘
↑ ↑ ↑
└─────────────────┴─────────────────┘
LangSmith(监控与评估平台)
监控上述所有组件的运行状态
3.4 LangChain 全家桶都有什么
LangChain 生态 = LangChain + LangGraph + Deep Agent + LangSmith
| 组件 | 定位 | 通俗解释 |
|---|---|---|
| LangChain | 基础能力层 | 智能体的"操作系统内核",提供模型调用、工具集成等基础能力 |
| LangGraph | 运行时编排层 | 用有向图管理复杂工作流,把多个步骤串联起来 |
| Deep Agent | 智能体执行框架 | 在前两者之上封装的高级模板,不用手写底层就能构建复杂智能体 |
| LangSmith | 监控与评估平台 | 一个网站平台,让智能体的运行过程从"黑盒"变"透明",方便调试 |
怎么选? 简单总结:
- 做简单线性 AI 功能 → 直接用 LangChain
- 做重型全自动复杂任务 → 用 Deep Agent(底层自动调用 LangChain + LangGraph)
- 要完全掌控流程、自定义复杂流转规则 → 手写 LangGraph
3.5 LangChain 1.0:记住一句话
学习只学 1.0 以后的版本,之前的了解一下就行。
LangChain 1.0 是真正意义上的第一个正式大版本,带来了三大变革:
(1)从功能堆砌到体验统一
0.x 版本模块众多、概念繁杂、API 不一致。1.0 进行了彻底的架构重构与瘦身,废弃冗余 API、统一接口,让框架变得更轻量、直观。
(2)从链式思维到智能体优先
LangChain 的名字来自最初的"链"(Chain)概念——把多个模型调用按顺序串联。1.0 实现了从链式思维到智能体优先的哲学跃迁,封装了更高级的智能体编程接口(create_agent 和 create_deep_agent)。
有趣的是,有人戏称 LangChain 1.0 应该叫 “LangGraph 2.0”,因为它实际上是在 LangGraph 之上做的封装。但 LangChain 的知名度更高,所以最终保留了 LangChain 的名字。
(3)中间件机制 + Deep Agent
- 中间件机制:类似 Spring 的 AOP(面向切面编程),可以在不污染核心业务代码的情况下注入日志记录、组件监控等通用逻辑。
- Deep Agent:提供更高级的 Agent Harness,开发者不需要理解底层状态图实现,通过配置就能快速组装复杂智能体。
3.6 多语言支持
LangChain 支持 Python 和 JavaScript 两种语言。其中 Python 版本是功能最完整、更新最及时、社区最活跃的核心实现,也是本文后续使用的语言。
为什么选 Python? 因为 Python 是人工智能领域的第一语言,生态最丰富、第三方包适配最好、踩坑最少。
四、为什么选择 DeepSeek
本课程使用 DeepSeek 作为大模型服务,原因很简单:
DeepSeek API 兼容 OpenAI API 格式。
这意味着,很多支持 OpenAI 接口格式的 SDK 或框架(包括 LangChain),只要替换三个参数就能调用 DeepSeek:
| 参数 | 说明 |
|---|---|
api_key |
你的 DeepSeek API 密钥 |
base_url |
https://api.deepseek.com |
model |
本课程使用 deepseek-v4-flash |
DeepSeek 官网:https://www.deepseek.com/
五、理解 OpenAI 兼容 API
很多大模型服务商都提供类似 OpenAI 的接口格式,这类接口通常包含以下要素:
api_key:身份验证密钥base_url:API 服务地址model:模型名称messages:对话消息列表
一个典型的调用长这样:
client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "user", "content": "你好"}
],
)
LangChain 和原生 SDK 的区别:LangChain 底层也可以对接这类模型服务,但它会把模型调用封装成更统一的组件,方便后续和 Prompt(提示词)、Parser(解析器)、Retriever(检索器)、Tool(工具)等组件组合使用。就像你用原生的
fetch也能发请求,但用axios会更方便一样。
LangChain 与原生 SDK 的调用方式对比:
原生 SDK 调用流程(功能单一):
┌──────────────────┐
│ 应用代码 │
└────────┬─────────┘
▼
┌──────────────────┐
│ OpenAI SDK │
└────────┬─────────┘
▼
┌──────────────────┐
│ 模型 API │
└──────────────────┘
LangChain 调用流程(能力增强):
┌──────────────────┐ ┌───────────────┐
│ 应用代码 │ │ 外部工具 │
└────────┬─────────┘ │ 数据库/API/文件│
▼ └───────┬───────┘
┌──────────────────┐ │
│ LangChain 组件 │◄──────────────┘
└────────┬─────────┘
▼
┌──────────────────┐
│ 统一接口层 │
└────────┬─────────┘
▼
┌──────────────────┐
│ 模型 API │
└──────────────────┘
六、开发环境搭建(手把手)
6.1 Python 版本选择
建议使用 Python 3.10 或更高版本。
| 版本 | 推荐程度 | 说明 |
|---|---|---|
| Python 3.10 | ⭐⭐⭐⭐⭐ | 生产环境首选,兼容性最好 |
| Python 3.11 | ⭐⭐⭐⭐⭐ | 同样推荐,第三方包适配完整 |
| Python 3.12 | ⭐⭐⭐⭐ | 可正常使用 |
| Python 3.13 | ⭐⭐⭐ | 版本较新,部分小众集成包可能有适配延迟 |

如果你还没安装 Python,去官网 https://www.python.org/downloads/ 下载安装即可。安装时记得勾选 “Add Python to PATH”。
6.2 安装依赖包
打开终端(Windows 用 PowerShell 或 CMD),执行以下命令:
pip install langchain langchain-openai openai python-dotenv
如果下载速度较慢,使用国内清华镜像源:
pip install langchain langchain-openai openai python-dotenv -i https://pypi.tuna.tsinghua.edu.cn/simple
各包的作用说明:
| 包名 | 作用 |
|---|---|
langchain |
LangChain 核心框架 |
langchain-openai |
LangChain 的 OpenAI 兼容模型集成 |
openai |
OpenAI 兼容 API 的 Python SDK |
python-dotenv |
读取 .env 配置文件 |
6.3 配置全局镜像源(可选但推荐)
如果你不想每次安装包都加 -i 参数,可以配置全局镜像。
Windows 操作方法:在用户目录 C:\Users\你的用户名 下新建 pip 文件夹,创建 pip.ini 文件,内容如下:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
配置后,以后直接 pip install xxx 就会自动走阿里云镜像,速度快很多。

开发环境搭建步骤:
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 选择 Python 版本 | Python 3.10+ 均可 |
| 2 | 安装依赖包 | pip install langchain langchain-openai openai python-dotenv |
| 3 | 配置镜像源(可选但推荐) | 国内网络推荐使用清华/阿里云镜像 |
| 4 | 验证安装 | 运行测试脚本确认安装成功 |
依赖包说明:
langchain(核心框架)、langchain-openai(OpenAI 兼容接口)、openai(SDK)、python-dotenv(环境变量读取)
七、配置 DeepSeek API Key
7.1 获取 API Key
- 访问 DeepSeek 官网:https://www.deepseek.com/
- 注册账号并登录
- 在 API Keys 页面创建新的密钥
- 复制保存你的 API Key
7.2 创建 .env 文件
在你的项目根目录下创建 .env 文件,内容如下:
DEEPSEEK_API_KEY=你从DeepSeek官网获取的API Key
DEEPSEEK_BASE_URL=https://api.deepseek.com
安全提醒(重要!):
- 不要把真实 API Key 写进代码里
- 不要把
.env文件提交到 Git 仓库- 创建
.gitignore文件,排除敏感文件:
.env
.venv/
__pycache__/
7.3 验证配置是否生效
创建一个测试文件 test_env.py:
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("DEEPSEEK_API_KEY")
base_url = os.getenv("DEEPSEEK_BASE_URL")
print(f"API Key: {api_key[:8]}..." if api_key else "API Key 未找到!")
print(f"Base URL: {base_url}" if base_url else "Base URL 未找到!")
运行后如果看到 API Key 的前几位和 Base URL,说明配置成功。
八、案例一:用原生 SDK 调用 DeepSeek
在正式使用 LangChain 之前,我们先用 OpenAI 兼容 SDK 直接调用一次 DeepSeek。这一步的目的是验证:API Key 对不对、网络通不通、模型能不能调通。
为什么要先做这一步? 因为 LangChain 不是凭空调用模型的,它底层仍然需要模型服务。先用最简单的方式验证基础链路,出了问题更容易定位。
创建文件 01_openai_compatible.py:
import os
from dotenv import load_dotenv
from openai import OpenAI
# 1. 加载 .env 环境变量
load_dotenv()
# 2. 创建 OpenAI 客户端(指向 DeepSeek 的 API 地址)
client = OpenAI(
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL"),
)
# 3. 调用模型
response = client.chat.completions.create(
model="deepseek-v4-flash",
messages=[
{"role": "user", "content": "请用一句话介绍 LangChain 是什么"}
],
)
# 4. 打印模型的回答
print(response.choices[0].message.content)
运行:
python 01_openai_compatible.py
如果看到模型返回了一段关于 LangChain 的介绍,恭喜你!说明:
- API Key 正确
- 网络可以访问 DeepSeek
- 模型调用成功
注意区分:这里用的是原生
openaiPython SDK(不是 LangChain)。代码中的client.chat.completions只是客户端下的子模块,不要和 LangChain 的ChatOpenAI类混淆。
九、案例二:用 LangChain ChatOpenAI 调用
验证完基础链路后,我们换用 LangChain 的方式来调用模型。
创建文件 02_chatopenai.py:
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
# 1. 加载环境变量
load_dotenv()
# 2. 创建模型实例(使用 LangChain 的 ChatOpenAI 类)
model = ChatOpenAI(
model="deepseek-v4-flash",
temperature=0.7, # 控制输出随机性,0-1之间,值越大越随机
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL"),
)
# 3. 调用模型(invoke = 执行一次完整调用)
response = model.invoke("请解释LangChain模型接口的统一性。")
print(response.content)
# 4. 流式输出(stream = 一个字一个字地输出,体验更好)
print("\n--- 流式输出 ---")
for chunk in model.stream("请用一句话总结人工智能的意义:"):
print(chunk.content, end="")
运行:
python 02_chatopenai.py
关于 temperature 参数
temperature 是大模型生成文本的核心超参数,控制输出的随机性和创造力,取值范围一般是 0 ~ 2:
| temperature 值 | 效果 | 适用场景 |
|---|---|---|
| 0 | 完全确定性,每次提问输出一模一样 | 代码、数学计算、事实问答、翻译 |
| 0 ~ 0.7 | 轻微随机,逻辑稳定 | 日常聊天、文案、总结(首选区间) |
| 0.7 ~ 1.0 | 创造力强,措辞更多变 | 故事、创意写作、头脑风暴 |
| > 1.0 | 随机性极高,容易逻辑混乱 | 极少使用 |
最佳实践:新项目一律只用
ChatOpenAI,老式 OpenAI 类已逐步废弃。
十、案例三:用 init_chat_model 统一初始化(推荐)
上面用 ChatOpenAI 的写法是 LangChain 早期版本的常见方式。虽然功能有效,但已不是官方推荐的最佳实践。
自 LangChain 0.2 起,官方推荐使用统一的工厂方法
init_chat_model来创建模型实例。这种方法在 LangChain 1.0 中继续得到支持和强化。
为什么推荐 init_chat_model? 因为它统一了多家模型的加载接口——以后想换模型,只需改个参数,不用重写代码。
创建文件 03_langchain_init_chat_model.py:
import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
# 1. 加载环境变量
load_dotenv()
# 2. 使用 init_chat_model 统一初始化模型
model = init_chat_model(
base_url=os.getenv("DEEPSEEK_BASE_URL"),
api_key=os.getenv("DEEPSEEK_API_KEY"),
model="deepseek-v4-flash",
temperature=0.7,
model_provider="openai" # 表示使用 OpenAI 兼容接口格式,不是用 OpenAI 的模型
)
# 3. 流式输出
for chunk in model.stream("什么是Deep Agent?"):
print(chunk.content, end="")
运行:
python 03_langchain_init_chat_model.py
关键参数说明
| 参数 | 说明 |
|---|---|
model |
模型名称,这里是 deepseek-v4-flash |
model_provider |
接口提供者,"openai" 表示按 OpenAI 兼容格式调用,不是说使用 OpenAI 模型 |
api_key |
API 密钥,从 .env 读取 |
base_url |
API 地址,DeepSeek 的地址是 https://api.deepseek.com |
temperature |
输出随机性,0~1 之间 |
invoke vs stream
| 方法 | 效果 | 适用场景 |
|---|---|---|
model.invoke("问题") |
执行一次完整调用,等全部生成完再返回 | 需要完整结果的场景 |
model.stream("问题") |
流式输出,一个字一个字地返回 | 聊天界面、提升用户体验 |
返回结果中,模型的回答内容在 response.content 属性里。
十一、案例四:打造你的第一个课程答疑助手
现在把前面学的组合起来,做一个实用的课程答疑助手。这个案例会用到 自定义 Prompt 来控制 AI 的回答风格。
创建文件 04_course_assistant.py:
import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
# 1. 加载环境变量
load_dotenv()
# 2. 初始化模型(只写一次,后续复用)
model = init_chat_model(
base_url=os.getenv("DEEPSEEK_BASE_URL"),
api_key=os.getenv("DEEPSEEK_API_KEY"),
model="deepseek-v4-flash",
temperature=0.7,
model_provider="openai"
)
# 3. 定义 Prompt 生成函数(控制 AI 的回答风格和格式)
def get_prompt(question):
prompt = f"""
你是一名 LangChain 助教,
请使用最简洁的语言回答问题,要适合初学者。
回答问题的格式如下:
1、先说结果
2、举例子
3、不要超过200字
学生的问题是:{question}
"""
return prompt
# 4. 主循环:持续接收用户输入
if __name__ == '__main__':
question = input("请输入您的问题:")
# 流式输出,一个字一个字地打印
for word in model.stream(get_prompt(question)):
print(word.content, end="")
运行:
python 04_course_assistant.py
示例输入:
请输入您的问题:LangChain 和直接调用 DeepSeek API 有什么区别?

图:业务代码通过函数调用模型,Prompt 控制回答风格和输出要求。
这个案例的重点
- 模型初始化只写一次:在程序开头初始化好模型,后续所有调用复用同一个实例。
- Prompt 可以控制回答风格和输出要求:通过精心设计的提示词,让 AI 按你想要的格式和风格回答。后续章节会专门讲 Prompt 模板,这里先不展开。
十二、接入其他大模型(OpenAI / Qwen / 硅基流动)
掌握了 DeepSeek 的接入方式后,接入其他模型也是类似的思路。核心原则:先用 init_chat_model,报错就去社区找扩展包。
12.1 接入 OpenAI(通过 CloseAI 代理)
由于国内直接访问 OpenAI 服务可能不稳定,可以使用国内的 OpenAI 代理平台,例如 CloseAI。
CloseAI 官网:https://www.closeai-asia.com/
登录后在"秘钥管理"中创建个人密钥,确保密钥处于"启用中"状态。

注意事项:
- 这个平台需要提前充值,否则调用会失败(报 403 余额不足错误)
- 必须确保平台中有你调用的模型,否则会报错
- 国内访问海外服务可能不稳定,可尝试更换备用接口地址
代码示例:
from langchain_openai import ChatOpenAI
# 创建模型实例(通过 CloseAI 代理调用 OpenAI 模型)
model = ChatOpenAI(
model="gpt-4o-mini",
temperature=0.7,
api_key="你的CloseAI API Key", # 替换为你的密钥
base_url="https://api.openai-proxy.org/v1"
)
# 调用模型
response = model.invoke("请解释LangChain模型接口的统一性。")
print(response.content)
安全提醒:实际项目中请将 API Key 放在
.env文件中,不要硬编码在代码里!
12.2 接入通义千问 Qwen
阿里巴巴的 Qwen 系列模型是国内的优秀大模型,通过 DashScope 平台提供 API 服务。
开通链接:https://bailian.console.aliyun.com/
- 千问 Qwen:是大模型的名字
- 百炼:阿里云旗下的模型广场,里面有很多别家的模型

踩坑提示:如果你直接用 init_chat_model 并设置 model_provider="dashscope",会报错:
ValueError: Unsupported model_provider='dashscope'.
原因:DashScope 平台尚未被 LangChain 官方纳入统一的模型注册体系。解决方案是使用社区扩展包。
安装依赖:
pip install -U dashscope
pip install langchain_community
代码示例:
from langchain_community.llms.tongyi import Tongyi
# 使用通义千问的社区适配器
model = Tongyi(
model="qwen-plus",
temperature=0.3,
api_key="你的百炼API Key" # 替换为你的密钥
)
# 流式输出
for chunk in model.stream("langchain有哪几部分组成"):
print(chunk, end="")

12.3 接入硅基流动 SiliconFlow
硅基流动是一个聚合平台,支持 DeepSeek、Qwen 等多种模型。
官网:https://www.siliconflow.cn/

在 .env 中添加:
SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1
SILICONFLOW_API_KEY=你的硅基流动API Key
代码示例:
import os
from dotenv import load_dotenv
from langchain.chat_models import init_chat_model
load_dotenv()
model = init_chat_model(
base_url=os.getenv("SILICONFLOW_BASE_URL"),
api_key=os.getenv("SILICONFLOW_API_KEY"),
model="deepseek-ai/DeepSeek-V4-Flash",
temperature=0.7,
model_provider="openai"
)
for chunk in model.stream("什么是Deep Agent?"):
print(chunk.content, end="")
12.4 模型接入的通用思路
不管接入什么模型,都可以按以下顺序处理:
第一步:首选 init_chat_model(统一接口,代码可移植性强)
↓ 如果报 "Unsupported model_provider" 错误
第二步:去社区找扩展包(如 langchain_community)
↓ 如果还有问题
第三步:检查版本兼容性(LangChain 扩展包与模型 SDK 版本需匹配)
其他模型不再逐一展开,都是用上面这种思路进行接入。
模型接入通用思路:
| 步骤 | 操作 | 结果 |
|---|---|---|
| 第一步 | 尝试 init_chat_model |
✅ 成功接入 / ❌ 不支持则继续 |
| 第二步 | 安装社区扩展包(如 langchain_community) |
✅ 解决 / ❌ 还有问题则继续 |
| 第三步 | 检查版本兼容性(LangChain 扩展包与模型 SDK 版本) | ✅ 调整版本后最终接入成功 |
十三、常见问题排查
Q1:API Key 没有生效
排查步骤:
- 检查
.env文件是否在项目根目录(不是子目录里) - 检查变量名是否拼写正确:
DEEPSEEK_API_KEY=你的DeepSeek API Key
DEEPSEEK_BASE_URL=https://api.deepseek.com
- 检查代码中是否调用了
load_dotenv():
from dotenv import load_dotenv
load_dotenv() # 这行必须有!
Q2:下载依赖太慢
使用国内镜像源:
pip install langchain langchain-openai openai python-dotenv -i https://pypi.tuna.tsinghua.edu.cn/simple
或配置全局镜像源(见第六章 6.3 节)。
Q3:访问模型失败
常见原因及排查:
| 可能原因 | 排查方法 |
|---|---|
| API Key 错误 | 去 DeepSeek 官网重新确认密钥 |
| 账户余额不足 | 登录官网查看余额,及时充值 |
| 网络无法访问 DeepSeek | 检查网络连接,尝试切换网络 |
| 公司网络代理限制 | 换用手机热点测试,或配置代理 |
| base URL 写错 | 确认使用的是 https://api.deepseek.com |
Q4:报错 “Unsupported model_provider”
说明 LangChain 还不认识这个模型提供者。解决方案:
- 安装对应的社区扩展包(如
pip install langchain_community) - 使用该模型的专用适配器类(如 Qwen 用
Tongyi类)
十四、本章总结
恭喜你读到这里!回顾一下本章掌握的核心知识点:
| 知识点 | 一句话回顾 |
|---|---|
| LangChain 是什么 | 用来组织大模型应用开发的框架,是大模型与应用之间的"中间层" |
| LangChain 生态 | LangChain(基础层)+ LangGraph(编排层)+ Deep Agent(执行框架)+ LangSmith(监控平台) |
| DeepSeek API | 兼容 OpenAI API 格式,替换三个参数即可调用 |
| 环境搭建 | Python 3.10+,安装 4 个核心包 |
| API Key 管理 | 放在 .env 文件中,不硬编码,不提交 Git |
| 模型初始化 | 推荐用 init_chat_model,统一接口 |
| 调用方式 | invoke() 一次性返回,stream() 流式输出 |
| temperature | 控制输出随机性,0 最确定,越大越随机 |
到这里,我们已经完成了 LangChain 的第一个可运行案例。后续章节会在此基础上,逐步加入 Prompt 模板、输出解析器、检索器、工具调用等组件,让你的智能体越来越强大。
本文基于 LangChain 1.0 版本,使用 DeepSeek 作为模型服务。
更多推荐


所有评论(0)