LangChain 入门第一课:从零搭好环境,跑通你的第一个 AI 案例

这是 LangChain 系列的第一篇。这一章我们不追花哨功能,先把"最基础的开发闭环"走通:搞清楚 LangChain 是什么 → 理解它和 DeepSeek 的关系 → 装好 Python 环境 → 用代码真正调一次模型。跟着做,你很快就能跑出属于自己的第一个 LangChain 小程序。


一、本章你要带走什么?

读完并跟着敲一遍,你应该能够:

  • 说清楚 LangChain 是什么
  • 理解 LangChain、模型 API、DeepSeek 三者之间的关系
  • 在自己的电脑上 搭建 Python 环境
  • 用 DeepSeek 的 OpenAI 兼容接口 完成一次普通调用
  • 用 LangChain 的 init_chat_model 初始化 DeepSeek 模型
  • 写出 第一个可运行的 LangChain 小案例

二、先认识"智能体":为什么需要 LangChain?

2.1 一次范式转移

2022 年底,ChatGPT 3.5 的出现把 AI 时代明显地分成了"前"和"后"。大模型展现出了前所未有的通用能力:它既能理解人类语言的复杂意图,又能跨领域融合知识、做推理,最后给出连贯又有见地的答案。可以说,我们终于有了一个随时能调用的"数字大脑"。

而当这个"大脑"被进一步赋予 感知环境、制定计划、执行任务 的能力后,一种全新的软件形态就诞生了——这就是 智能体(Agent)

2.2 传统应用 vs 智能体

对比维度传统应用智能体
驱动模式命令驱动目标驱动
交互方式固定界面、参数输入自然语言、语义理解
执行逻辑流程化、预定义自主规划、多步推理
学习机制静态算法动态学习与记忆
系统角色工具合作伙伴

传统软件走的是 "输入 → 处理 → 输出" 的直线;智能体则运行在 "感知 → 决策 → 行动 → 记忆" 的持续循环里,不仅能做事,还能从结果中不断学习、优化下一步策略。

过去我们是"下命令的人",软件是"听话的工具";未来我们是"提目标的人",智能体是"一起把事办成的搭档"。

2.3 智能体的"五脏六腑"

要拆解一个智能体,核心就是四个能力模块:

  • 👁 感知(Perception)——眼睛,理解外界发生了什么
  • 🧠 决策(Reasoning)——大脑,规划接下来怎么做
  • ✋ 行动(Action)——双手,真正去执行
  • 💾 记忆(Memory)——灵魂,把经验存下来持续进化

这四者协同运转,智能体就不再是普通工具,而更像一个 会适应、有目标、能进化的"数字生命"

💡 智能体是个"虚拟概念"——既可以是你自己写的,也可以直接用别人做好的。


三、LangChain 是什么?

3.1 一句话定位

LangChain 是目前最主流的"造智能体"框架(同类还有 Java 圈的 LangChain4J、SpringAI 等)。它站在 大模型 和 你的应用 中间,当一层"胶水":

  1. 连接大模型与应用:用统一接口,把模型和数据库、搜索引擎、API、文件系统等外部资源打通
  2. 封装复杂逻辑:把"调工具""记对话"这些麻烦事抽象好,你不必从零写
  3. 支持多智能体协作:借助 LangGraph 和 Deep Agent,已经从单智能体扩展到多智能体协作,甚至能搭出工业级智能体

3.2 它一路是怎么长大的?

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 生态已形成三层技术栈:LangChain → LangGraph → Deep Agent,分别对应基础能力层、运行时编排层、智能体抽象层。

3.3 为什么首选 Python?

LangChain 同时支持 Python 和 JavaScript,但 Python 版功能最全、更新最快、社区最活跃——它既是 AI 领域的第一语言,也是本课程实操的唯一选择。

3.4 生态全家桶:四个部件怎么分工?

LangChain 生态 = LangChain(核心)+ LangGraph + Deep Agent + LangSmith

部件角色什么时候用
LangChain打地基,最基础的开发能力做个简单 AI 功能、小智能体
LangGraph用"有向图"编排复杂流程你要完全掌控每一步流转
Deep Agent开箱即用的重型智能体框架全自动复杂任务,懒得写底层
LangSmith网站形式的可观测/质量管理平台调试、追踪、看智能体跑得对不对

三者怎么选?

  • 重活、全自动 → 用 Deep Agent(底层自动调用 LangChain + LangGraph)
  • 简单线性功能 → 直接 LangChain,别折腾
  • 流程要完全自定义 → 手写 LangGraph,LangChain 当底座

3.5 重点:LangChain 1.0 有啥不一样?

📌 只学 1.0 以后的版本,老的 0.x 了解一下即可。

在 1.0 之前,LangChain 被吐槽"又胖又乱"。1.0 相当于一次大瘦身:

  • 更清爽:砍掉冗余接口、统一规范,学起来不绕了
  • 换思路:从"链式拼接"升级为 "智能体优先"——在 LangGraph 之上封装了更易用的 create_agent / create_deep_agent。圈内才调侃:这哪是 LangChain 1.0,分明是 LangGraph 2.0
  • 两大新武器
    • 中间件机制:像 Spring 的 AOP,能往流程里插日志、监控,还不污染业务代码
    • Deep Agent:你不用懂底层,配好子智能体、文件路径、提示词、工具,就能拼出复杂智能体

结论:直接学 LangChain 1.0,别在旧版本里浪费时间。


四、为什么本课程用 DeepSeek?

课程全程用 DeepSeek 作演示模型,原因很实在:DeepSeek 的 API 兼容 OpenAI 格式

官方地址:DeepSeek | 深度求索

这意味着很多支持 OpenAI 接口的 SDK / 框架,只要替换三样东西就能调用 DeepSeek:

  • API Key
  • base URL
  • model 名称

本课程用到的 base URL 与模型:

 

# DeepSeek 官方 OpenAI 兼容 base URL https://api.deepseek.com # 本课程主要使用的模型 deepseek-v4-flash


五、OpenAI 兼容 API 是什么?

很多大模型服务都会提供"长得像 OpenAI"的接口格式。这类接口通常包含四个要素:

  • api_key
  • base_url
  • model
  • messages

典型调用结构如下:

 

client.chat.completions.create( model="deepseek-v4-flash", messages=[ {"role": "user", "content": "你好"} ], )

这就是常见的 Chat Completions 调用方式。LangChain 底层对接的也正是这类模型服务,只是它会把模型调用再封装成统一的组件,方便你后续和 Prompt、Parser、Retriever、Tool 等组合起来使用。


六、开发环境准备

6.1 Python 版本怎么选?

建议使用 Python 3.10 或更高版本

  • ✅ Python 3.10 / 3.11(强烈推荐):LangChain 1.x 生态兼容性最好、第三方包适配最完整,踩坑最少
  • ⚠️ Python 3.12 可正常使用
  • ⚠️ Python 3.13 较新,部分小众集成包可能存在适配延迟

6.2 安装依赖

 

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 的官方 SDK
  • python-dotenv:读取 .env 配置文件

6.3 配置全局镜像源(可选)

Windows 用户可在 C:\Users\你的用户名\ 下新建 

pip 文件夹,再创建 pip.ini

 

[global] index-url = https://mirrors.aliyun.com/pypi/simple/ trusted-host = mirrors.aliyun.com


七、配置 DeepSeek API Key

在项目根目录创建 .env 文件:

 

DEEPSEEK_API_KEY=你的 DeepSeek API Key DEEPSEEK_BASE_URL=https://api.deepseek.com

⚠️ 注意:

  • 不要把真实 API Key 写进代码
  • 不要把 .env 提交到 Git 仓库

可以创建 .gitignore 把敏感文件和缓存排除掉:

 

.env .venv/ __pycache__/

用下面这段小代码验证 .env 是否读取成功:

 

import os from dotenv import load_dotenv load_dotenv() print(os.getenv("DEEPSEEK_API_KEY"))


八、实战:四个可运行案例

动手前先记住:LangChain 不是"凭空"调用模型,它底层依然依赖模型服务。所以我们的顺序是——先用原生 SDK 验证 DeepSeek 能不能调通,再用 LangChain 封装

案例一:直接用 OpenAI 兼容 SDK 调用 DeepSeek

创建 01_openai_compatible.py

 

import os from dotenv import load_dotenv from openai import OpenAI load_dotenv() client = OpenAI( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url=os.getenv("DEEPSEEK_BASE_URL"), ) response = client.chat.completions.create( model="deepseek-v4-flash", messages=[ {"role": "user", "content": "请用一句话介绍 LangChain 是什么"} ], ) print(response.choices[0].message.content)

💡 这是原生 openai Python SDK(不是 LangChain)。注意这里的 client.chat.completions 是客户端下的子模块,别和 LangChain 的 ChatOpenAI 类混淆。

只要能看到模型回答,就说明三件事都成立:API Key 正确 + 网络能访问 DeepSeek + 模型调用成功

案例二:ChatOpenAI 写法

 

import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI load_dotenv() # 创建 ChatOpenAI 模型实例 model = ChatOpenAI( model="deepseek-v4-flash", temperature=0.7, # 控制输出的随机性,0~2 之间,值越大越随机 api_key=os.getenv("DEEPSEEK_API_KEY"), base_url=os.getenv("DEEPSEEK_BASE_URL"), ) # 单次调用 response = model.invoke("请解释 LangChain 模型接口的统一性。") print(response.content) # 流式输出 for chunk in model.stream("请用一句话总结人工智能的意义:"): print(chunk.content, end="")

📌 关于 temperature(控制输出随机性/创造力的核心参数,一般取值 0~2):

  • = 0:完全确定,每次输出一模一样 → 适合代码、数学、事实问答、翻译
  • 0 ~ 0.7:轻微随机、逻辑稳定 → 日常聊天、文案、总结首选
  • 0.7 ~ 1.0:创造力强、措辞多变 → 故事、创意写作、头脑风暴
  • > 1.0:随机性极高、易胡编 → 极少使用

新项目一律优先用 ChatOpenAI,老式 OpenAI 类已逐步废弃。

案例三:用 LangChain 的 init_chat_model 初始化

虽然 ChatOpenAI 仍可用,但 自 LangChain 0.2 起,官方推荐用统一的工厂方法 init_chat_model,在最新的 1.0 中继续得到强化——这是本课程的标准写法。

创建 02_langchain_first_call.py

 

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("DEEPSEEK_BASE_URL"), api_key=os.getenv("DEEPSEEK_API_KEY"), model="deepseek-v4-flash", temperature=0.7, model_provider="openai", # 表示"按 OpenAI 兼容格式"调用,不是指用 OpenAI 模型 ) # 流式输出 for chunk in model.stream("什么是 Deep Agent?"): print(chunk.content, end="")

运行:

 

python 02_langchain_first_call.py

这个案例和案例二的区别在于:案例二直接用 OpenAI 兼容 SDK,案例三用的是 LangChain 的模型组件。后续我们会把这个模型组件和 Prompt、Parser、Retriever 等组合在一起。

案例四:第一个"课程答疑助手"

创建 03_course_assistant.py,体验"模型初始化只写一次,业务函数反复调用":

 

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("DEEPSEEK_BASE_URL"), api_key=os.getenv("DEEPSEEK_API_KEY"), model="deepseek-v4-flash", temperature=0.7, model_provider="openai", ) def get_prompt(question): prompt = f""" 你是一名 LangChain 助教, 请使用最简洁的语言回答问题,要适合初学者。 回答格式如下: 1、先说结果 2、举例子 3、不要超过 200 字 学生的问题是:{question} """ return prompt if __name__ == "__main__": question = input("请输入您的问题:") for word in model.stream(get_prompt(question)): print(word.content, end="")

运行后输入诸如 LangChain 和直接调用 DeepSeek API 有什么区别? 即可。这个案例的关键是:模型初始化一次,业务通过函数调用,Prompt 控制回答风格和输出要求(Prompt 模板后面会专门讲)。


九、代码关键点解析

关键点作用
load_dotenv()读取 .env 文件中的 DEEPSEEK_API_KEY / DEEPSEEK_BASE_URL
init_chat_model(...)用 LangChain 统一方式初始化聊天模型;model_provider="openai" 表示按 OpenAI 兼容格式调用
model.invoke(...)执行一次模型调用,回答内容在 response.content 中
model.stream(...)流式输出,逐字返回,体验更顺滑

init_chat_model 标准写法回顾:

 

model = init_chat_model( model="deepseek-v4-flash", model_provider="openai", api_key=os.getenv("DEEPSEEK_API_KEY"), base_url=os.getenv("DEEPSEEK_BASE_URL"), )


十、其他大模型怎么接?

LangChain 的精髓就是"统一入口 + 换参数"。下面三种模型的接入思路都一致。

10.1 OpenAI(通过国内代理 CloseAI)

API 密钥在 CloseAI - 亚洲规模最大的企业级AI中转平台 获取(注意平台需有余额,否则会报余额不足错误)。

 

from langchain_openai import ChatOpenAI model = ChatOpenAI( model="gpt-4o-mini", temperature=0.7, api_key="替换为你的_API_Key", base_url="https://api.openai-proxy.org/v1", ) for chunk in model.stream("请用一句话总结人工智能的意义:"): print(chunk.content, end="")

⚠️ 代理平台必须包含你调用的模型,否则会报错。

10.2 通义千问 Qwen

Qwen 是阿里推出的系列模型,经 DashScope(百炼)平台提供 API。

你可能会想直接这样写:

 

from langchain.chat_models import init_chat_model model = init_chat_model( model="qwen-plus", model_provider="dashscope", # ❌ 暂不支持 )

但运行后会报错:Unsupported model_provider='dashscope'。原因是 DashScope 还没被 LangChain 官方纳入统一注册体系。解决办法是走社区扩展包 langchain-community

 

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="")

10.3 硅基流动(SiliconFlow)

官网:https://www.siliconflow.cn/,需先申请 API Key,支持 DeepSeek、Qwen 等模型。

在 .env 中加入:

 

SILICONFLOW_BASE_URL=https://api.siliconflow.cn/v1

SILICONFLOW_API_KEY=你的硅基流动 Key

 

📌 通用接入顺序:① 首选 init_chat_model(统一接口、可移植性强);② 若报"不支持",去社区找扩展包;③ 注意版本匹配,扩展包与模型 SDK 版本需兼容。


十二、本章重点回顾

  • ✅ LangChain 是用来组织大模型应用开发的框架
  • ✅ DeepSeek API 兼容 OpenAI 格式,换 Key / base_url / model 即可调用
  • ✅ 先用 OpenAI SDK 验证 DeepSeek 能否调通,再用 LangChain 封装
  • ✅ LangChain 中用 init_chat_model 初始化模型(官方推荐)
  • ✅ invoke 用于执行一次模型调用
  • ✅ API Key 务必放在 .env 中,别写进代码、别提交 Git

到这里,你已经完成了 LangChain 的第一个可运行案例 🎉 下一篇我们将深入 Prompt 模板与组件组合,敬请期待!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐