type
Post
status
Published
date
Feb 10, 2026
slug
summary
Complete, systematic, production-ready LangChain Python notes (2026 Edition)
tags
AI
开发
推荐
category
技术分享
icon
password
Here is the complete, systematic, production-ready LangChain Python notes (2026 Edition)
Fully in English, structured exactly as your 7 Notion folders, much more detailed, up-to-date, and practical.
🦜️ LangChain 学习笔记
📖 目录
- 项目实战:基于知识库的AI问答助手
Chapter 01: LangChain 概述
1.1 什么是 LangChain?
LangChain 是一个用于开发由大语言模型(LLMs)驱动的应用程序的开源框架。
- 类比:LangChain 之于 LLMs,类似于 Spring 之于 Java,或 Django 之于 Python。
- 核心作用:将大模型与外部数据和各种组件连接成“链”,构建 AI 应用。
- 解决痛点:解决大模型无法联网、数据滞后、无法查询私有数据库、无法对接外部工具等问题。
1.2 核心架构
- LangChain-Core:基础抽象和 LCEL(LangChain Expression Language)。
- LangChain-Community:第三方集成(Model I/O, Retrieval, Tools 等)。
- LangChain:构成应用程序的 Chains, Agents, Retrieval 策略。
- LangGraph:用于构建多智能体和复杂状态机。
- LangSmith:用于调试、测试和监控(DevOps)。
- LangServe:将 Chain 部署为 REST API。
1.3 环境安装
推荐使用 Python 3.10+ 和 Anaconda 管理环境。
Bash
# 安装 LangChain
pip install langchain langchain-openai langchain-community
# 安装其他依赖
pip install python-dotenvChapter 02: Model I/O (模型输入输出)
Model I/O 是与 LLM 交互的核心组件,包含三个环节:Format (Prompt) -> Predict (Model) -> Parse (Output)。
2.1 模型分类 (Models)
- LLMs (非对话模型):输入字符串,输出字符串(如
gpt-3.5-turbo-instruct)。
- Chat Models (对话模型):输入消息列表,输出消息对象(推荐使用,如
gpt-4o)。
代码示例:调用 ChatModel
2.2 提示词模板 (Prompts)
用于管理大模型的输入,支持变量替换。
- PromptTemplate: 适用于 LLMs。
- ChatPromptTemplate: 适用于 Chat Models(支持角色管理)。
代码示例:ChatPromptTemplate
2.3 输出解析器 (Output Parsers)
将模型的文本输出转换为结构化数据。
StrOutputParser: 转为纯字符串。
JsonOutputParser: 转为 JSON 对象。
Chapter 03: Chains (链)
Chain 用于将多个组件(Prompt, Model, Parser)串联起来。
3.1 LCEL (LangChain Expression Language)
使用管道符
| 进行声明式编程。基本语法:
chain = prompt | model | output_parser代码示例:
3.2 Runnable 协议
所有 LCEL 对象都实现了
Runnable 协议,支持统一的调用方法:invoke(): 单次调用。
stream(): 流式输出。
batch(): 批量处理。
ainvoke(): 异步调用。
3.3 其他传统链 (Legacy)
- LLMChain: 基础链(已逐渐被 LCEL 取代)。
- SequentialChain: 顺序链,上一个输出作为下一个输入。
- RouterChain: 路由链,根据输入动态选择处理路径。
Chapter 04: Memory (记忆)
模型本身是无状态的,Memory 组件用于在多轮对话中保存上下文。
4.1 核心类型
- ChatMessageHistory: 基础类,直接存储消息列表。
- ConversationBufferMemory: 存储完整对话历史(最常用,但 Token 消耗大)。
- ConversationBufferWindowMemory: 仅保留最近 K 轮对话(滑动窗口)。
- ConversationSummaryMemory: 利用 LLM 对历史对话进行摘要压缩。
4.2 使用示例
ConversationBufferMemory 结合 LLMChain:
Chapter 05: Tools (工具)
Tools 是 AI 与外部世界交互的接口(如搜索、计算、数据库)。
5.1 自定义工具
可以使用
@tool 装饰器快速定义。5.2 常用内置工具
TavilySearchResults: 搜索引擎工具(适合 Agent)。
PythonREPL: 执行 Python 代码。
Chapter 06: Agents (智能体)
Agent 利用 LLM 作为推理引擎(Brain),自主决定采取什么行动(调用什么工具)、顺序以及如何处理结果。
6.1 Agent 类型
- ReAct (Reasoning + Acting): 推理 -> 行动 -> 观察 -> 再推理。
- OpenAI Functions / Tool Calling: 利用模型原生的函数调用能力(更高效、稳定)。
6.2 创建 Agent (通用方式)
代码示例:创建一个能够联网搜索的 Agent
Chapter 07: Retrieval (检索 / RAG)
RAG (Retrieval-Augmented Generation) 用于解决大模型幻觉和知识过时问题。
7.1 RAG 核心流程
- Source (数据源): PDF, TXT, Web, DB 等。
- Load (加载): 使用
DocumentLoaders加载为 Document 对象。
- Transform (分割): 使用
TextSplitters将长文本切分为 Chunks。
- Embed (嵌入): 使用
Embedding Models将文本转为向量。
- Store (存储): 存入
VectorStore(如 Chroma, FAISS)。
- Retrieve (检索): 根据 Query 检索相关片段。
- Generate (生成): 将检索内容 + Query 喂给 LLM 生成答案。
7.2 代码实战:构建 RAG 应用
7.3 常用切分器与数据库
- Splitters:
RecursiveCharacterTextSplitter(最常用,按语义/字符递归切分)。
- VectorStores:
Chroma(轻量级,本地),FAISS(高效),Milvus(生产级)。
项目实战:基于知识库的AI问答助手
📎 参考文章
- Tavily(搜索tool)
有关Langchain或开发相关的问题,欢迎您在底部评论区留言,一起交流~
上一篇
如何用NotionNext搭建个人博客
下一篇
🌍 How to integrate next-intl to achieve multi-language support in Next.js (App Router)
- Author:Tao Chen
- URL:https://www.nextdaddy.cn/article/3039b3f5-e6ae-80e2-812f-fd93703880fc
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!



