LangChain 入门:亲手构建你的第一个 AI 应用
在建造任何宏伟建筑之前,一位优秀的工匠绝不会在杂乱无章的土地上直接开工。一个干净、有序、工具齐全的工作台是必不可少的,它决定了工作的效率、作品的精度,甚至是最初的创作激情。在软件开发和数据科学的世界里,这个“工作台”就是你的编程环境 。
我们将遵循工匠精神,首先花费一些时间,耐心地准备好这个数字工作台。本节的目标是确保所有核心工具都已就位、配置正确、并且彼此和谐共处,为后续所有充满创造性的工作扫清技术障碍,让你能心无旁骛地专注于逻辑构建与算法实现,而不是纠缠于“库版本冲突”或“环境无法运行”的琐碎问题。
我们强烈推荐你使用 JupyterNotebook (或其增强版 JupyterLab )来执行本手册中的绝大部分代码。对于初学者和探索者而言,这种交互式环境(REPL: Read-Eval-Print Loop)的魅力是无可替代的。它能让你编写一小段代码后立即看到执行结果 ,这种即时反馈机制是学习和实验的最佳选择。 你可以随意调整一个参数、尝试一个函数,并立刻观察其影响,这就像拥有一个可以随时试错、无限调整的数字沙盘 ,让你对代码的每一步运作都了然于心。它不仅能加深你的理解,更能鼓励你进行大胆的探索和提问——“如果我这样做,会发生什么?”
此外,对于不想进行本地环境配置的用户,我们同样推荐使用 Google Colab。这是一个基于云的 Jupyter 笔记本服务,它提供了免费的计算资源(包括GPU和TPU),让你通过一个浏览器就能开始编写和运行代码,几乎做到了“零配置”入门。它是验证想法和跟随教程的绝佳平台。
如果你对于 Jupyter还不是很熟悉 ,或者决定在本地搭建环境但还不知道如何下手,请不要跳过这个关键步骤。我们为你准备了一份详尽的 Jupyter 入门手册来配置好我们的实验环境;工欲善其事,必先利其器。 请务必参考这份手册,配置好一个稳定、高效的实验环境。当你的“数字工作台”准备就绪,一切工具触手可及之时,我们就可以正式推开大门,怀着期待与好奇,正式开始我们精彩的 LangChain学习之旅 了!
安装LangChain核心库
LangChain 是一个开源框架,它的核心功能通过一个 Python 包提供。在终端或 Notebook 的代码单元格中执行以下命令来安装。
pip install langchain

这步操作如同为你的工坊装配上最核心的动力引擎。安装完成 LangChain 之后,我们就可以开发我们的 AI Agent 了吗?其实还不可以,在这里不得不,需要和大家提前解析在 langchain 的包结构,避免在后续的过程中,大家对突然出现的未知依赖出现不理解和困惑。
LangChain包结构组成

如图所示,langchain 整个框架由多个部分组成,主要包括:
- langchain-core: 提供基础抽象和核心接口,是系统模块设计的根基,包括聊天模型(chat models)、工具(tools)、向量存储(vector stores)、链(chains)等接口。同时还包含表达式语言(LangChain Expression Language, LCEL);它会被langchain包自动安装,也可作为独立组件使用 。
- langchain: 基于 langchain-core 抽象之上,提供高级组件,如链(chains)、代理(agents)、检索策略(retrieval strategies)等,用于构建通用的认知架构,不依赖特定集成。该包依赖 langchain-core,但目前正在逐步去除对 langchain-community 的直接依赖(如 v0.4 后)
- 集成类包(Integrationpackages): 为不同模型提供商提供轻量级连接器,如 langchain-openai、langchain-anthropic 等;在接入不同类型模型供应商的时候,需要
pip install langchain-xxx不同类型供应商的连接器。 - langchain-experimental: 用于研究或试验性质的新功能包,内容较新且可能不稳定 。
- langgraph: 设计用于构建带状态、多参与者(multi-actor)的复杂代理(agents)系统。通过图结构(nodes、edges)表示流程,适合复杂工作流的构建 。
- langserve: 用于将 LangChain 的链(chains)、代理(agents)或 Runnable 部署为 REST API 服务。
- langchain-cli: 提供命令行工具(CLI),用于操作模板、部署 LangServe 项目等 。
- langsmith-SDK: 提供一个可用于调试、监控、评估 LLM 应用性能的平台。默认随 langchain 安装,也可以独立安装使用 。
langchain⟶主包
├─ langchain-core⟶基础抽象与接口,LCEL
├─ langchain⟶高级组件:chains, agents, retrieval 泛型逻辑
├─ langchain-openai 等⟶官方集成包(独立依赖 langchain-core)
├─ langchain-community⟶社区整合的第三方工具、模型等
├─ langchain-experimental⟶实验特性
├─ langgraph⟶图结构的多代理工作流编排
├─ langserve⟶部署工具,将组件暴露为 REST API
├─ langchain-cli⟶命令行工具支持开发与部署
└─ langsmith SDK⟶监控、评估、调试平台(可独立使用)
综上所述,我们在最开始执行的 pip install langchain 之后,自动安装的包有langchain、langchain-core、langsmith-sdk, 也就是说,我们目前只是单纯的安装了 LangChain,可以使用他的核心能力和基本的工具;
但是,问题是,langchain 他是一个大模型框架,没有 llm 的加持,你使用他的基础能力做什么呢?因此,我们还需要再安装一个大模型提供商。
接入大模型提供商
在上面小节中,我们了解到,langchain 有一个集成类包 ,这个包里就是各种大模型提供商,比如说 langchain-openai、langchain-moonshot等等,对于国产大模型的支持,也有 langchain-deepseek 等包,那么如果我要接入 deepseek,理论上来说就要执行 :
pip install langchain-deepseek
但是,这里就有一个问题,当我想要切换我的大模型提供商的时候,我得重新安装不同的提供商,还需要对我已有的代码做很多适配工作,这其实是不合理的,但其实大多数场景下,不需要那么麻烦。
随着 OpenAI 的 ChatGPT API(/v1/chat/completions)成为事实上的行业标准,越来越多的大模型厂商(如 DeepSeek、Moonshot、智谱GLM、百度文心、通义千问 等)选择提供与 OpenAI 完全兼容的接口 。
这意味着:
- 开发者只需写一套基于 OpenAIAPI规范 的代码。
- 在接入不同模型时,仅需切换 base_url 和 api_key 配置。
- 不必为每个模型厂商单独安装或维护 langchain-xxx 集成包。 因此,在大部分场景下,其实我们只需要执行:
pip install langchain-openai
就足以覆盖大部分我们的场景,当然也有例外,比如:
- AnthropicClaude (API 格式不同)
- Cohere (API 不兼容 OpenAI 格式)
- 部分搜索/向量API (如 RAG 检索接口,不属于 OpenAI 协议) 这些情况仍需安装独立的 langchain-anthropic、langchain-cohere 等包。
在我们的实验场景下,我会使用 qwen 系列模式和 deepseek 模型;如果大家有使用其他不同类型的模型,且不支持oepnai 格式的 API,可以在星球里评论,我会及时协助你解决呦。
搭建第一个 ChatBot
有了 langchain 的核心框架,引入了 openai 的大模型提供商,接下来我们就来正式的开发我们第一个 ChatBot。首先第一步,就是需要初始化一个 ChatModel; 但是在编码之前,还是需要配置一些环境变量,用来存储我们接下来要用到的敏感数据,包括像大模型的密钥,大模型的配置,baseUrl 等等,我们在新的单元格里执行如下命令(注意这里需要将apikey,baseurl 和 model 都替换成你自己的):
import os
os.environ["OPENAI_API_KEY"] = "your_api_key_here"
os.environ["OPENAI_BASE_URL"] = "https://api.deepseek.com/v1"
os.environ["OPENAI_MODEL"] = "deepseek-chat"
终于,终于,在完成了包安装,大模型提供商安装以及环境变量的相关配置之后,我们终于来到了编码环节。
使用 LangChain 做一个 ChatBot 其实非常简单,只需要两步:
第一步,初始化一个ChatModel
所谓的 ChatModel ,可以理解为我们和大模型交互的 客户端 。后续所有的请求、响应、流式对话,都会通过这个对象来完成。
下面我们用 langchain-openai 提供的 ChatOpenAI 来初始化一个模型客户端:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model=os.getenv("OPENAI_MODEL", "gpt-4o-mini"),
api_key=os.getenv("OPENAI_API_KEY"),
base_url=os.getenv("OPENAI_BASE_URL"), # 若走原生 OpenAI,可传 None/不传
temperature=0.2, # 稳定输出
timeout=30, # 超时保护(秒)
max_retries=2 # 简单重试
)
- model :指定使用的模型名称,比如 gpt-4o-mini、deepseek-chat。
- api_key :认证密钥。
- base_url :如果是兼容 OpenAI API 的第三方模型,需要指定;否则默认使用 OpenAI 官方地址。
- temperature :数值越低输出越稳定,越高则回答更有创造性。
- timeout/max_retries :保证在网络不稳定时程序更健壮。
第二步,发起一次会话:
有了客户端后,我们就可以像调用一个函数一样,让它回答问题。
使用最常见的 invoke 方法即可:
resp = llm.invoke("你好!用三句话介绍一下你能做什么。")
print(resp.content)
可以看到,AI 给出了他的回答;我们这里就使用的是 langchain 第一个核心方法invoke
他是 LangChain 的标准调用接口,几乎所有组件(模型、链、工具)都支持。
它的特点是:
- 同步调用 :输入一次,得到一次完整的输出。
- 输入形式灵活 :既可以直接传字符串,也可以传字典(和 Prompt 模板配合)。
- 返回对象 :不是纯文本,而是一个 AIMessage,其中 .content 才是回答内容。 他不光可以接受一个纯文本,也可以接受一个大模型支持的 Message 类型,比如:
from langchain_core.messages import SystemMessage, HumanMessage
resp = llm.invoke([
SystemMessage(content="你是一个简洁、可靠的中文助理。"),
HumanMessage(content="如何高效准备研究生考试?")
])
print(resp.content)
你可以直接尝试这段代码,至于SystemMessage,HumanMessage 有什么区别,该如何使用,我们下一小节会详细的展开,你可以看到很ai 也很好的回答了我们的问题,这就是 invoke 函数。
结语 至此,我们已经从零完成了三个关键步骤:
- 准备环境 —— 打造属于自己的“数字工作台”。
- 安装LangChain并解析包结构 —— 了解框架的核心组成与依赖关系。
- 接入大模型并构建第一个ChatBot —— 用 invoke 发起一次对话,完成从环境到应用的“开门第一步”。 这一切,就像工匠磨亮工具、铺设工作台之后,终于敲下了第一锤。
在接下来的章节里,我们会逐步探索 LangChain 更强大的能力:Prompt模板、链式调用、流式输出、对话记忆 ,以及 工具调用与多代理系统 。每一环节,都会让你的 ChatBot 更加聪明、灵活与实用。