AI agent必须掌握的langchain知识点

10 阅读5分钟

Prompt 组件

是什么:构建发给 LLM 的提示词模板

有什么用:动态填充变量,管理对话结构

必须掌握

  • ChatPromptTemplate → 对话场景
  • PromptTemplate → 纯文本场景
  • MessagesPlaceholder → 插入历史消息的占位符
  • partial() → 预填充部分参数

Model 组件

是什么:封装 LLM 的调用接口

有什么用:统一调用各种模型

必须掌握

  • invoke() → 单次调用
  • batch() → 批量并行调用
  • stream() → 流式输出,边生成边返回
  • .content → 取返回结果

OutputParser

是什么:解析 LLM 输出的组件

有什么用:把 LLM 的原始输出转成你想要的格式

必须掌握

  • StrOutputParser → 输出纯字符串
  • JsonOutputParser + BaseModel → 输出结构化对象
  • get_format_instructions() → 告诉 LLM 按什么格式输出

LCEL 表达式

是什么:LangChain 的链式调用语法

有什么用:用 | 把组件串联成流水线

必须掌握

  • Prompt | LLM | Parser 是核心写法
  • 本质是上一步输出 → 下一步输入
  • 所有组件都是 Runnable,都能用 | 连接

RunnableParallel / RunnablePassthrough

是什么:控制数据流向的工具组件

有什么用:并行执行多条链,或在链中追加字段

必须掌握

  • RunnableParallel → 同时跑多条链,结果合并成字典
  • RunnablePassthrough.assign(context=...) → RAG 注入 context 的标准写法
  • 字典 {} 在链里就是 RunnableParallel 的简写

Callback 回调

是什么:监听链执行过程的机制

有什么用:调试、性能监控、日志记录

必须掌握

  • 继承 BaseCallbackHandler,重写事件方法
  • 通过 config={"callbacks": [...]} 传入
  • 常用事件:on_chat_model_start / on_llm_end

记忆(Memory)

是什么:管理对话历史的机制

有什么用:让 AI 记住上下文,实现多轮对话

必须掌握

存什么存哪里怎么接入链
Buffer 全存InMemory 临时RunnableWithMessageHistory
Window 限 tokenFile 持久化+ session_id 隔离用户
SummaryBuffer 压缩旧的Redis/DB 生产环境

Embedding

是什么:把文本转成向量的技术

有什么用:语义越相近的文本,向量距离越近,是 RAG 的基础

必须掌握

  • embed_query() → 查询时用
  • embed_documents() → 建索引时用
  • 余弦相似度值越接近 1 = 越相似
  • 中文场景用千帆或 bge 模型

向量数据库

是什么:存储和检索向量的数据库

有什么用:RAG 的核心存储层,根据语义找相关文档

必须掌握

  • FAISS → 本地开发
  • Pinecone → 生产环境
  • as_retriever() → 接入 RAG 的关键方法
  • score_threshold → 过滤低相关结果
  • mmr → 结果多样化

文档加载器

是什么:把各种格式文件加载成 Document 对象的组件

有什么用:RAG 流水线的第一步

必须掌握

  • Document = page_content + metadata
  • txt → TextLoader
  • 网页 → WebBaseLoader
  • 不确定类型 → UnstructuredFileLoader

文本分割器

是什么:把长文档切成小块的组件

有什么用:RAG 流水线的第二步,切块质量直接影响检索效果

必须掌握

  • RecursiveCharacterTextSplitter → 首选,几乎所有场景
  • chunk_size → 每块多大(推荐 500-1000)
  • chunk_overlap → 块间重叠(推荐 chunk_size 的 10-20%)
  • 中文场景加自定义分隔符 "。|!|?"
  • 代码文件用 from_language(Language.PYTHON)

文档转换器

是什么:对文档内容进行增强的组件(不切块)

有什么用:提升 RAG 召回率

必须掌握

  • 问答对提取 → 把文档变成 Q&A,用户提问更容易匹配
  • 翻译 → 多语言知识库

RAG 高级检索策略

是什么:提升 RAG 检索质量的各种技术

有什么用:解决召回率差、结果不准的问题

必须掌握

问题解决方案思想
查询角度单一Multi-QueryLLM 生成多角度查询
多查询结果排序差RAG FusionRRF 算法融合排名
问题太复杂问题分解拆成子问题逐个击破
问题太具体Step-Back回退到更宽泛的问题
问题和文档语义差距大HyDE先生成假设答案再检索
有元数据过滤需求SelfQueryRetriever自然语言自动拆过滤条件
关键词和语义都要EnsembleRetrieverBM25 + 向量混合
结果排序不够精准ReRank粗排 + 精排两步走
文档质量不稳定CRAG评估相关性,差就网搜
长文档宏观+细节ParentDocument / RAPTOR多层次检索

Tools 工具

是什么:LLM 可以调用的外部能力

有什么用:让 AI 能做查天气、搜索、计算等真实操作

必须掌握

  • @tool 装饰器 → 最常用的创建方式
  • description 写清楚 → LLM 靠这个决定要不要调用
  • name / args / return_direct → 工具四要素

Function Calling

是什么:LLM 调用工具的底层机制

有什么用:让 LLM 从"只会说"变成"能做事"

必须掌握

  • bind_tools() → 告诉 LLM 有哪些工具
  • response.tool_calls → LLM 返回的调用指令
  • ToolMessage → 把工具结果反馈给 LLM
  • LLM 只返回指令,不执行工具,执行是你的代码

Agent

是什么:能自主决定调用哪些工具、调几次的智能体

有什么用:处理需要多步推理的复杂任务

必须掌握

  • create_tool_calling_agent → 首选(模型原生支持)
  • create_react_agent → 兼容性好(所有模型)
  • AgentExecutor → 执行 Agent,设 max_iterations 防死循环
  • Agent vs Chain → Chain 流程固定,Agent 自主决策

LangGraph

是什么:构建有状态、可循环、可分支流程的图框架

有什么用:解决普通 Chain/Agent 无法处理的复杂流程

必须掌握

概念是什么
State节点间传递的数据,TypedDict 定义
Node执行操作的函数,接收 state 返回更新字段
Edge固定连接,add_edge
条件 Edge动态路由,add_conditional_edges + 路由函数
add_messages消息字段必须加这个注解,追加而不是覆盖
MemorySaver状态持久化,配合 thread_id 隔离会话
interrupt人在环路,执行前/后暂停等待人工确认

何时用 LangGraph

需要循环        → LangGraph
需要条件分支    → LangGraph
需要人工介入    → LangGraph
多 Agent 协作   → LangGraph
其他情况        → 普通 Chain 或 AgentExecutor 够用

一句话总结整个体系

Prompt | LLM | Parser          → 基础链
+ Memory                       → 有记忆的对话
+ Retriever                    → RAG 问答
+ Tools + Agent                → 自主完成任务
+ LangGraph                    → 复杂流程控制