news 2026/7/8 10:05:33

LangChain【1】---- 基础入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain【1】---- 基础入门

文章目录

  • 前言
    • 一、先搞懂:为什么我们需要 LangChain?
      • 代码量对比:直接调用 API vs 用 LangChain
      • LangChain 的核心价值总结
    • 二、LangChain 是什么?到底能做什么?
      • 1. 基础定位
      • 2. 它能帮你实现哪些核心场景?
      • 3. LangChain 全家桶:三个层级怎么选?
    • 三、LangChain 核心架构:三层结构一目了然
      • 第一层:基础层 —— 和 AI 对话的通用规则
      • 第二层:能力层 —— 给 AI 扩展各种技能
      • 第三层:应用层 —— 组合技能解决实际业务问题
      • 举个完整例子:公司内部问答机器人的工作流程
    • 四、手把手搭开发环境:跟着做零出错
      • 1. 包管理工具选哪个?
      • 2. 第一步:安装 uv
      • 3. 第二步:创建项目并安装 LangChain
      • 4. 认识项目里的关键文件
      • 5. 第三步:准备大模型 API
      • 6. 第四步:配置环境变量(保护你的 API 密钥)
      • 7. 验证环境是否搭建成功
    • 五、写出你的第一个 LangChain 程序

前言

刚接触大模型开发都会有一个疑问:我直接调用 OpenAI、DeepSeek 的 API 就能写对话了,为什么还要多学一个 LangChain 框架?是不是多此一举?

如果你只想实现一句“你好”的简单对话,那确实不用。但只要你想做稍微复杂一点的功能——比如能记住上下文的智能客服、能读取内部文档的问答机器人、能自动调用工具处理数据的办公助手——纯手写 API 的代码量会指数级上涨,你 80% 的时间都在重复写底层拼接、异常处理的“轮子代码”,根本没空打磨真正的业务功能。

这篇指南就用大白话把 LangChain 讲透,从核心概念、架构逻辑到环境搭建,再到写出第一个可运行的完整程序,全程跟着做就能顺利上手。

一、先搞懂:为什么我们需要 LangChain?

我们先看一个真实的开发场景:如果你想做一个「能记住聊天记录、还能查询公司内部文档的 AI 客服」,直接调用大模型 API,你需要自己手动实现所有底层逻辑

  • 自己维护每一轮的对话历史,每次提问都手动把历史拼接到消息里,还要实时控制长度,避免超出模型的 token 上限
  • 自己搭建向量数据库,从零写文档拆分、文本向量化、相似度检索的逻辑,还要兼容 Word、PDF、Markdown 等各种文件格式
  • 自己实现工具调用的解析规则,手写 JSON 解析逻辑,处理工具调用失败、参数错误等各种异常
  • 如果后续想从 GPT 换成 DeepSeek 或者其他国产模型,接口格式、参数定义、解析逻辑几乎要全部重写

这些工作单独拿出来都不难,但凑到一起会消耗你绝大多数的开发精力。而 LangChain 就是把这些通用的底层工作全部封装成了现成的组件,让你像搭积木一样组合功能,把精力集中在业务逻辑本身。

代码量对比:直接调用 API vs 用 LangChain

我们用最简单的“调用 AI 回复一句话”来直观感受一下差异:

直接调用 OpenAI 原生 API:需要自己处理消息格式、接口参数

importopenai response=openai.chat.completions.create(model="gpt-4",messages=[{"role":"user","content":"你好"}])print(response.choices[0].message.content)

用 LangChain 调用:统一的标准写法,换模型只需要改一行配置

fromlangchain_openaiimportChatOpenAI llm=ChatOpenAI(model="gpt-4")response=llm.invoke("你好")print(response.content)

功能越简单,两者差距越小;但一旦加上对话记忆、工具调用、知识库检索,原生 API 的代码量会快速膨胀,而 LangChain 始终能保持简洁、统一的编码风格。

LangChain 的核心价值总结

  1. 不用重复造轮子:对话管理、工具调用、知识库检索、输出解析等通用能力全是现成组件
  2. 模型无缝切换:GPT、Claude、DeepSeek、本地开源模型,改一行配置就能完成切换,不用重写业务代码
  3. 专注业务逻辑:消息拼接、参数解析、异常重试、长度控制这些底层细节,框架全部自动处理
  4. 生态极其丰富:官方支持 70+ 大模型、100+ 第三方工具、50+ 向量数据库,绝大多数场景都有现成集成
  5. 调试运维方便:配套 LangSmith 调试工具,可以可视化追踪每一步 AI 调用、工具执行的细节,快速定位问题

二、LangChain 是什么?到底能做什么?

1. 基础定位

LangChain 是 2022 年 10 月由 Harrison Chase 发起的开源框架,专门用于开发「大模型驱动的应用程序」。

简单来说,它就是一套大模型应用开发的「标准化积木套装」——把开发 AI 应用需要的所有通用零件都做好了,你只需要根据自己的需求选择组件、拼接逻辑,就能快速做出完整的 AI 产品。

冷知识:LangChain 的发布时间比 ChatGPT 还要早一个月,目前是全球最主流的大模型应用开发框架之一。

2. 它能帮你实现哪些核心场景?

功能场景大白话解释典型应用
Agent 智能代理给 AI 配备各种工具,让它自己规划执行步骤、调用工具完成任务自动办公助手、智能运维客服
RAG 检索增强生成让 AI 读取你的私人文档/企业知识库,基于资料内容回答问题企业内部问答、文档分析机器人
工具调用给 AI 扩展外部能力,比如计算器、天气查询、数据库读写、代码执行多功能 AI 助手、自动化工作流
多 Agent 系统多个 AI 角色分工协作,各自负责一部分工作,共同完成复杂任务复杂项目辅助、多角色决策模拟

3. LangChain 全家桶:三个层级怎么选?

LangChain 不是一个单一的工具,而是一整套生态产品,从底层到高层分为三个层级,层层递进、互为补充,并不是竞争关系。我们用「开奶茶店」打个比方,帮你快速理解:

工具产品定位奶茶店类比适合人群
LangGraphAgent 运行时,定制控制力最强从门店装修、操作流程、饮品配方全自己设计,每一步都精准可控需要定制复杂工作流、人工审核节点的企业级项目
LangChain核心 Agent 框架,灵活性与易用性均衡有现成的设备、原料、标准操作流程,你自己搭配产品、调整口味绝大多数开发者,做自定义 AI 应用、RAG、工具链
Deep Agents高层 Agent 套件,开箱即用现成的加盟连锁店,拿来就能营业,不用操心底层细节想快速做出可用的 AI 产品,不想深入研究架构

新手入门建议:优先从 LangChain 核心框架开始学(也是本篇教程的重点),等业务需求变复杂了再深入 LangGraph;如果只是快速做 Demo 验证想法,可以直接尝试 Deep Agents。

三、LangChain 核心架构:三层结构一目了然

LangChain 的所有模块按照「从底层基础到业务应用」分成了三层,理解了这个整体结构,后面学单个组件就不会混乱。

第一层:基础层 —— 和 AI 对话的通用规则

这一层是所有功能的地基,定义了和大模型交互的基础标准。

  • Messages:标准化的消息格式,系统提示、用户提问、AI 回复、工具返回结果都有统一的格式规范
  • Prompts:提示词模板,支持重复使用,还能动态插入变量,不用每次都写完整的提示词
  • Streaming:流式输出能力,像 ChatGPT 官网一样逐字返回结果,提升用户体验
  • Middleware:中间件机制,可以在调用 AI 前后自动加重试、缓存、超时控制、日志记录等逻辑

第二层:能力层 —— 给 AI 扩展各种技能

这一层提供了大量独立的功能组件,可以单独使用,也可以自由组合。

  • Models:统一的模型调用接口,不管是什么品牌的大模型,都用invoke(单次调用)、batch(批量调用)、stream(流式调用)这几个标准方法
  • Tools:工具调用组件,用一个装饰器就能把你的函数变成 AI 可以调用的工具
  • Memory:对话记忆组件,分短期记忆(当前会话)、长期记忆(跨会话)、摘要记忆(压缩历史节省 token)等多种类型
  • Structured Output:结构化输出,强制 AI 按照你指定的 JSON 格式返回结果,不会出现格式混乱的情况

第三层:应用层 —— 组合技能解决实际业务问题

这一层面向具体业务场景,把下层的能力组件组合起来,形成完整的解决方案。

  • Chains:链式调用,用管道符把「提示词模板→大模型→输出解析」串成一条流水线,是 LangChain 的核心语法(LCEL)
  • Retrieval(RAG):完整的知识库检索流程,从加载文档、拆分文本、存入向量库到相似度检索全链路支持
  • Agents:智能代理,让 AI 自主规划执行步骤,循环调用工具,直到完成任务目标

举个完整例子:公司内部问答机器人的工作流程

  1. 用户提问:「公司的年假政策是什么?」
  2. Prompts 组件把用户问题套进预设的提示词模板
  3. Retrieval 组件从向量数据库中检索出最相关的文档片段
  4. Models 组件把「用户问题 + 检索到的文档片段」一起发给大模型生成回答
  5. Structured Output 组件确保回答按照指定的格式返回
  6. Memory 组件把本轮问答存入对话记忆,后续追问可以关联上下文

四、手把手搭开发环境:跟着做零出错

1. 包管理工具选哪个?

开发 Python 项目,核心要解决两个问题:环境隔离(不同项目用不同版本的库,互不干扰)和第三方库安装

常见的工具有三种,我们直接说结论:

  • venv + pip:Python 自带的基础组合,能用但功能少、安装速度慢
  • conda:全能型工具,可以管理 Python 版本、安装非 Python 库(比如 CUDA),但体积大、速度慢
  • uv:新一代工具,用 Rust 编写,安装速度比 pip 快 10~100 倍,同时支持 Python 版本管理、虚拟环境、依赖安装,LangChain 全生态官方推荐

本篇教程统一使用 uv:LangChain 的所有包都发布在 PyPI 上,uv 速度快、依赖管理精准,可以完全替代 pip + venv 的组合。

2. 第一步:安装 uv

根据你的操作系统选择对应的命令:

Windows(PowerShell 中执行)

powershell-ExecutionPolicy ByPass-c"irm https://astral.sh/uv/install.ps1 | iex"

macOS / Linux(终端中执行)

curl-LsSfhttps://astral.sh/uv/install.sh|sh

安装完成后,在终端输入以下命令,能输出版本号就说明安装成功:

uv--version

3. 第二步:创建项目并安装 LangChain

按顺序执行以下命令,每一步的作用都标注清楚了:

# 1. 创建项目文件夹并进入mkdirlangchain-course&&cdlangchain-course# 2. 初始化项目,自动创建虚拟环境和项目配置文件uv init# 3. 锁定 Python 版本(推荐 3.12,稳定兼容绝大多数包)uv python pin3.12# 4. 安装 LangChain 核心包(必装)uvaddlangchain# 5. 安装你要用的大模型集成包(选一个你有 API 的安装即可)uvaddlangchain-openai# OpenAI/GPT 系列,也兼容所有 OpenAI 格式的中转/国产平台uvaddlangchain-deepseek# DeepSeek 官方集成uvaddlangchain-ollama# 本地运行大模型时使用uvaddlangchain-anthropic# Claude 系列模型# 6. 安装环境变量工具,保护 API 密钥uvaddpython-dotenv

小说明:uv add会自动把依赖记录到项目配置文件里,还会自动生成锁文件,方便团队协作时还原完全一致的开发环境。

4. 认识项目里的关键文件

执行完上面的命令后,你的项目文件夹里会多出这几个核心文件/文件夹:

  • pyproject.toml:项目的「依赖清单」,记录了项目需要的所有包和版本要求,uv add会自动更新它
  • uv.lock:uv 自动生成的「精确版本记录」,记录了所有包(包括间接依赖)的精确版本,保证换电脑、换环境也能得到完全一致的结果
  • .venv文件夹:虚拟环境目录,所有安装的包都存在这里,不用手动修改里面的内容

5. 第三步:准备大模型 API

LangChain 本身不提供大模型,你需要准备一个可用的大模型 API 密钥。常见的选择有三类:

类型代表平台适合人群
海外官方OpenAI、Anthropic有海外访问条件 + 海外信用卡,追求最稳定的效果
国内中转CloseAI、OpenRouter国内网络可用、支持支付宝,接口和官方完全兼容
国产模型DeepSeek、智谱 AI、硅基流动性价比高、国内直连,很多都有免费额度,适合新手学习

新手推荐:DeepSeek 价格便宜、中文能力强,非常适合入门学习;如果想用 GPT 系列,可以选择合规的国内中转平台。

6. 第四步:配置环境变量(保护你的 API 密钥)

绝对不要把 API 密钥直接写在代码里!一旦代码上传到公开仓库,密钥很容易泄露,造成财产损失。我们用.env文件来存储敏感信息。

  1. 在项目根目录新建一个名为.env的文件
  2. 填入你的配置(以 OpenAI 兼容格式为例):
# 你的 API 密钥 OPENAI_API_KEY=sk-你的密钥 # 模型接口地址,官方填官方地址,中转/国产填对应平台的地址 OPENAI_BASE_URL=https://api.openai.com/v1
  1. 代码中通过工具读取环境变量:
fromdotenvimportload_dotenvimportos# 加载 .env 文件里的所有变量到系统环境中load_dotenv()# 读取变量api_key=os.getenv("OPENAI_API_KEY")base_url=os.getenv("OPENAI_BASE_URL")

重要提醒:一定要把.env加到.gitignore文件中,绝对不要上传到代码仓库!

7. 验证环境是否搭建成功

在终端执行这条命令,能正常输出版本号就说明环境搭建完成了:

uv run python-c"import langchain; print(langchain.__version__)"

五、写出你的第一个 LangChain 程序

环境搭好之后,我们来写第一个可运行的 LangChain 应用。在项目根目录新建一个main.py文件,粘贴下面的代码:

importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI# 1. 加载 .env 中的环境变量load_dotenv()# 2. 创建大模型实例llm=ChatOpenAI(model="gpt-4",# 替换成你实际使用的模型名称,比如 deepseek-chatapi_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("OPENAI_BASE_URL"))# 3. 调用大模型response=llm.invoke("你好,请用一句话介绍一下 Python 语言")# 4. 打印回答结果print("AI 回答:",response.content)

在终端执行运行命令:

uv run python main.py

运行成功的话,终端就会输出 AI 的回复,恭喜你完成了第一个 LangChain 程序!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 10:02:27

13种CV即插即用模块实战:GAM/CA/SimAM等5模块在ResNet50上平均涨点1.2%

5大CV模块实战:GAM/CA/SimAM等模块在ResNet50上的性能突破引言:即插即用模块的价值与挑战计算机视觉领域近年来涌现出大量创新性模块设计,从经典的SE、CBAM到最新的GAM、SimAM等,这些模块大多具备"即插即用"特性——无需…

作者头像 李华
网站建设 2026/7/8 9:57:30

中小企业也能轻松玩转大模型:5个真实案例,收藏起来直接抄!

本文通过5个中小企业AI应用案例(预测性维护、视觉质检、动态排产、智能客服、合同审查),展示大模型如何帮助企业降本增效。核心观点:中小企业无需自研,可通过成熟的SaaS服务快速落地AI,决策链短、试点快&am…

作者头像 李华
网站建设 2026/7/8 9:56:18

智能快递柜远程运维物联网解决方案

智能快递柜多分散部署于小区楼栋、地下车库、写字楼等场景,具备点位零散、无人值守、环境复杂的特点,传统联网及运维模式存在诸多短板,严重制约项目运营效率,核心痛点集中如下: 部署成本高昂:多数户外、地下…

作者头像 李华
网站建设 2026/7/8 9:55:58

基于TB6593FNG和PIC18F46K20的直流电机控制系统设计

1. 项目背景与核心目标在工业控制和自动化设备中,直流电机因其优异的调速性能和简单的控制结构,一直是执行机构的首选方案。但标准化的直流电机驱动方案往往难以满足特定场景下的性能需求,这就需要对驱动系统进行深度定制。本次项目基于TB659…

作者头像 李华
网站建设 2026/7/8 9:55:18

TB6593FNG与PIC32MZ的直流电机PID控制方案

1. 项目背景与硬件选型解析在工业自动化和机器人控制领域,直流电机驱动系统设计一直是核心技术之一。TB6593FNG作为东芝半导体推出的全桥刷式直流电机驱动器,搭配Microchip的PIC32MZ1024EFK144高性能微控制器,能够构建一个响应快速、控制精准…

作者头像 李华
网站建设 2026/7/8 9:54:15

Unity第三方库集成全攻略:从源码到UPM,解决DLL冲突与跨平台兼容

1. 项目概述:为什么Unity开发者必须掌握第三方库 在Unity项目开发中,尤其是当你从Demo阶段迈向成熟产品时,一个绕不开的话题就是“第三方库”。无论是为了接入一个高效的JSON解析器、一个强大的网络通信框架,还是一个炫酷的视觉特…

作者头像 李华