LangChain框架_学习笔记
目录LangChain 是什么六大核心组件LangChain 1.x 重大演进LangGraph有状态图执行引擎核心代码实战生态工具链学习路线与资源总结1. LangChain 是什么LangChain是一个用于构建由大语言模型LLM驱动的应用程序的 Python/JS 框架。它提供了一套模块化、可组合的抽象让开发者能够轻松将 LLM 与外部数据源、工具链、记忆系统等连接起来构建从简单聊天机器人到复杂多 Agent 协作系统的各类 AI 应用。一句话理解: LangChain 不是成品 Agent而是造 Agent 的工具箱——你要亲手搭但能搭出任何东西。1.1 为什么需要 LangChain痛点LangChain 解决方案LLM 知识有截止日期无法获取实时信息Tools Agents让 LLM 调用搜索引擎、API、数据库单次对话无记忆上下文容易丢失Memory模块管理短期/长期记忆提示词管理混乱复用困难Prompts模板化支持变量注入与版本管理复杂任务需要多步编排Chains / LangGraph将多个步骤串联成工作流企业私域数据无法直接喂给 LLMIndexes RAG实现检索增强生成生产环境缺乏可观测性LangSmith全链路追踪与评估1.2 典型应用场景imageimage_search:1#7LangChain 的典型应用场景包括聊天机器人— 带记忆的多轮对话系统文档问答RAG— 基于私域知识库的问答智能 Agent— 能自主调用工具完成复杂任务内容生成— 摘要、翻译、写作辅助数据分析— 查询结构化数据、生成报表API 编排— 将多个 API 调用编排成自动化工作流2. 六大核心组件LangChain 的架构围绕六大核心模块展开理解它们是掌握框架的关键。2.1 Models模型Models 是 LangChain 的大脑负责所有推理和生成任务。LangChain 不绑定特定模型支持通过统一接口调用多种 LLM类型说明示例Chat Models对话型模型接收消息列表返回消息GPT-4、Claude、DeepSeek、QwenLLMs文本补全型模型接收字符串返回字符串GPT-3.5、text-davinci-003Embeddings文本向量化模型用于语义检索text-embedding-ada-003、BGELangChain 1.x 模型调用方式推荐fromlangchain_openaiimportChatOpenAIfromlangchain_deepseekimportChatDeepSeek# 方式1直接使用提供商包gptChatOpenAI(modelgpt-4,temperature0)deepseekChatDeepSeek(modeldeepseek-chat)# 方式2模型标识符字符串自动推断fromlangchain.agentsimportcreate_agent agentcreate_agent(openai:gpt-4,toolstools)2.2 Prompts提示词Prompts 模块用于管理提示词模板支持变量注入、少样本示例Few-shot和输出解析。fromlangchain.promptsimportChatPromptTemplate promptChatPromptTemplate.from_messages([(system,你是一位专业的{role}。),(human,请帮我{task}),])# 变量注入messagesprompt.format_messages(rolePython工程师,task写一个快速排序)2.3 Chains链Chain 是 LangChain 最基础的编排单元将多个组件按顺序串联前一个步骤的输出自动传入下一个步骤。fromlangchain.chainsimportLLMChainfromlangchain.promptsimportPromptTemplate# 简单的 LLMChainpromptPromptTemplate(input_variables[product],template为{product}写一句广告语)chainLLMChain(llmllm,promptprompt)resultchain.run(智能手表)常见 Chain 类型LLMChain— 单步 LLM 调用SequentialChain— 顺序执行多个 ChainRouterChain— 根据输入动态路由到不同子 Chain2.4 Memory记忆Memory 解决 LLM 无状态的问题让应用能够记住对话历史或用户偏好。记忆类型特点适用场景ConversationBufferMemory保存完整对话历史短对话ConversationBufferWindowMemory只保留最近 K 轮长对话防溢出ConversationSummaryMemory用 LLM 自动摘要历史超长对话VectorStoreRetrieverMemory基于向量检索相关记忆大规模知识记忆fromlangchain.memoryimportConversationBufferMemory memoryConversationBufferMemory()memory.save_context({input:你好},{output:你好有什么可以帮你的})print(memory.load_memory_variables({}))# 获取历史记录2.5 Indexes索引Indexes 模块是 RAG检索增强生成的核心负责将文档切分、嵌入、存储到向量数据库并支持语义检索。imageimage_search:1#5RAG 标准流程fromlangchain.document_loadersimportPyPDFLoaderfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain.embeddingsimportOpenAIEmbeddingsfromlangchain.vectorstoresimportChroma# 1. 加载文档loaderPyPDFLoader(paper.pdf)docsloader.load()# 2. 切分文档text_splitterRecursiveCharacterTextSplitter(chunk_size500,chunk_overlap50)splitstext_splitter.split_documents(docs)# 3. 嵌入并存储到向量库vectorstoreChroma.from_documents(splits,OpenAIEmbeddings())# 4. 检索 生成retrievervectorstore.as_retriever(search_kwargs{k:3})relevant_docsretriever.get_relevant_documents(这篇论文的核心贡献是什么)2.6 Agents智能体Agent 是 LangChain 最强大的组件它将 LLM 与 Tools 结合让模型能够自主推理、选择工具、迭代执行直到完成任务。Agent 核心循环ReAct 模式接收用户输入LLM 推理 → 决定调用哪个 ToolTool 执行并返回结果LLM 再次推理 → 循环直到满足停止条件返回最终答案fromlangchain.agentsimportcreate_agent,AgentExecutorfromlangchain.toolsimportTool# 定义工具tools[Tool(nameCalculator,funccalculator,description执行数学计算),Tool(nameSearch,funcsearch,description搜索互联网获取实时信息),]# 创建 AgentLangChain 1.x 统一入口agentcreate_agent(openai:gpt-4,toolstools)agent_executorAgentExecutor(agentagent,toolstools,verboseTrue)# 执行resultagent_executor.invoke({messages:[{role:user,content:今天北京天气如何25的平方是多少}]})3. LangChain 1.x 重大演进LangChain 从 0.x 到 1.x 经历了重大架构升级核心变化包括3.1 统一 Agent 创建接口版本创建方式特点0.3initialize_agent,create_react_agent,create_openai_functions_agent…多种方式容易混淆1.xcreate_agent统一入口基于 LangGraph 构建3.2 新增核心能力LangChain 1.x 引入了多项生产级特性 动态模型选择— 根据对话复杂度在运行时切换模型如简单问题用 GPT-4o-mini复杂问题用 GPT-4 Middleware中间件— 在 Agent 执行流程中插入自定义逻辑日志、限流、模型路由 结构化输出— 强制 Agent 返回 JSON / Pydantic 模型便于下游处理 自定义状态Custom State— 扩展 Agent 的短期记忆存储业务上下文️ Guardrails护栏— 输出安全校验与内容过滤 Human-in-the-loop— 人工介入审核关键决策点3.3 完整技术栈---------------重点核心部分--------------- # 1 LangChain核心组件之 Agents智能体 # 2 LangChain核心组件之 Models模型 # 3 LangChain核心组件之 Messages消息 # 4 LangChain核心组件之 Tools工具 # 5 LangChain核心组件之 Short-term memory短期记忆 # 6 LangChain核心组件之 Streaming流式传输 # 7 LangChain核心组件之 Structured output 结构化输出 ---------------高级应用部分--------------- # 8 LangChain高级之 Middleware 中间件 # 9 LangChain高级之 Guardrails 护栏 # 10 LangChain高级之 Runtime 运行时 # 11 LangChain高级之 Context engineering 上下文工程 # 12 LangChain高级之 Model Context Protocol (MCP) 模型上下文协议 # 13 LangChain高级之 Human-in-the-loop 人机交互 # 14 LangChain高级之 Multi-agent 多智能体 # 15 LangChain高级之 Retrieval 检索 # 16 LangChain高级之 Long-term memory 长期记忆4. LangGraph有状态图执行引擎传统 Chain 本质上是有向无环图DAG无法处理循环、条件分支和持久化状态。LangGraph是 LangChain 生态在 2024-2026 年的重大演进已成为复杂工作流编排的核心引擎。4.1 LangGraph vs 传统 Chain特性传统 ChainLangGraph循环支持❌ 无✅ 节点间可循环跳转条件分支❌ 有限✅ 动态条件路由状态持久化❌ 无内置✅ Checkpoint 检查点机制人工介入❌ 不支持✅ Human-in-the-loop流式输出❌ 整链输出✅ 节点级流式4.2 LangGraph 核心概念State状态— 整个图共享的状态对象节点间通过状态传递数据Node节点— 执行单元可以是 LLM 调用、工具调用、函数处理Edge边— 节点间的连接支持普通边和条件边Checkpoint检查点— 状态快照支持中断恢复和历史回放4.3 代码示例fromlanggraph.graphimportStateGraph,ENDfromtypingimportTypedDict,List# 定义状态classAgentState(TypedDict):messages:List[str]next_action:str# 定义节点defcall_llm(state:AgentState)-AgentState:state[messages].append(LLM 思考中...)state[next_action]use_toolreturnstatedefuse_tool(state:AgentState)-AgentState:state[messages].append(调用工具完成)state[next_action]endreturnstate# 构建图graphStateGraph(AgentState)graph.add_node(llm,call_llm)graph.add_node(tool,use_tool)graph.add_edge(llm,tool)# 条件边根据状态决定下一步graph.add_conditional_edges(tool,lambdas:ENDifs[next_action]endelsellm)graph.set_entry_point(llm)# 编译并执行appgraph.compile()resultapp.invoke({messages:[],next_action:})4.4 多 Agent 工作流LangGraph 特别适合构建多 Agent 协作系统例如Researcher Agent— 负责信息检索Chart Generator Agent— 负责数据可视化Router— 根据任务类型动态分配 Agent5. 核心代码实战5.1 实战一带工具调用的 ReAct Agentfromlangchain.agentsimportcreate_agent,AgentExecutorfromlangchain.toolsimportToolfromlangchain_openaiimportChatOpenAIimportos# 设置 API Keyos.environ[OPENAI_API_KEY]your-api-key# 定义工具defcalculator(expression:str)-str:try:returnstr(eval(expression,{__builtins__:{}},{}))exceptExceptionase:returnf计算错误{e}defget_current_time(_:str)-str:fromdatetimeimportdatetimereturndatetime.now().strftime(%Y-%m-%d %H:%M:%S)tools[Tool(nameCalculator,funccalculator,description执行数学计算输入为数学表达式如 360 * 24),Tool(nameCurrentTime,funcget_current_time,description获取当前日期时间),]# 创建 AgentmodelChatOpenAI(modelgpt-4,temperature0)agentcreate_agent(model,toolstools,system_prompt你是一个 helpful 的助手尽可能使用工具来回答用户问题。)agent_executorAgentExecutor(agentagent,toolstools,verboseTrue)# 执行resultagent_executor.invoke({messages:[{role:user,content:今天的日期是360乘以24等于多少}]})print(result[output])5.2 实战二动态模型选择成本优化fromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportcreate_agentfromlangchain.agents.middlewareimportwrap_model_call,ModelRequest,ModelResponse# 定义两个模型basic_modelChatOpenAI(modelgpt-4o-mini)# 便宜、快速advanced_modelChatOpenAI(modelgpt-4)# 强大、昂贵wrap_model_calldefdynamic_model_selection(request:ModelRequest,handler)-ModelResponse:message_countlen(request.state[messages])# 对话超过10轮切换到强模型modeladvanced_modelifmessage_count10elsebasic_modelreturnhandler(request.override(modelmodel))agentcreate_agent(modelbasic_model,toolstools,middleware[dynamic_model_selection])5.3 实战三RAG 文档问答系统fromlangchain.document_loadersimportPyPDFLoaderfromlangchain.text_splitterimportRecursiveCharacterTextSplitterfromlangchain.embeddingsimportOpenAIEmbeddingsfromlangchain.vectorstoresimportChromafromlangchain.chainsimportRetrievalQA# 1. 加载 切分文档loaderPyPDFLoader(company_handbook.pdf)docsloader.load()splitterRecursiveCharacterTextSplitter(chunk_size500,chunk_overlap50)splitssplitter.split_documents(docs)# 2. 构建向量库vectorstoreChroma.from_documents(splits,OpenAIEmbeddings())retrievervectorstore.as_retriever(search_kwargs{k:4})# 3. 构建 RAG Chainqa_chainRetrievalQA.from_chain_type(llmChatOpenAI(modelgpt-4),chain_typestuff,retrieverretriever,return_source_documentsTrue)# 4. 提问resultqa_chain({query:公司的年假政策是什么})print(f答案:{result[result]})print(f来源:{[doc.metadatafordocinresult[source_documents]]})6. 生态工具链LangChain 生态不仅包含核心框架还有一系列配套工具6.1 LangSmith — 可观测性平台LangSmith 是 LangChain 官方提供的 LLM 应用观测平台核心功能** Trace 追踪** — 可视化每个 Chain/Agent 的执行步骤、Token 消耗、延迟测试与评估— 批量运行测试集自动评估输出质量Prompt 版本管理— 提示词 A/B 测试与回滚监控告警— 生产环境性能监控6.2 LangServe — 部署服务LangServe 让你可以将 LangChain 应用一键部署为 REST APIfromfastapiimportFastAPIfromlangserveimportadd_routes appFastAPI()add_routes(app,chain,path/chat)# 自动生成 /chat/invoke /chat/stream 等端点6.3 生态对比工具作用是否付费LangChain核心开发框架开源免费LangGraph有状态图执行引擎开源免费LangSmith可观测性与评估有免费额度LangServe部署为 API 服务开源免费7. 学习路线与资源7.1 推荐学习路线Week 1: 基础入门 ├── Day 1-2: 安装环境理解 Models Prompts ├── Day 3-4: 掌握 Chains 基础编排 ├── Day 5-6: Memory 记忆系统实战 └── Day 7: 小项目带记忆的聊天机器人 Week 2: 进阶应用 ├── Day 8-9: Indexes RAG 文档问答 ├── Day 10-11: Tools 开发与 Agent 基础 ├── Day 12-13: ReAct Agent 实战 └── Day 14: 小项目私域知识库问答系统 Week 3: 高级特性 ├── Day 15-16: LangGraph 图编排 ├── Day 17-18: 多 Agent 协作系统 ├── Day 19-20: Middleware 动态模型 └── Day 21: 小项目多 Agent 研报生成系统 Week 4: 生产部署 ├── Day 22-23: LangSmith 观测与评估 ├── Day 24-25: LangServe 部署 ├── Day 26-27: Guardrails 安全 └── Day 28: 完整项目上线7.2 官方资源 LangChain 官方文档 LangGraph 文档 LangSmith 平台 GitHub 仓库7.3 与其他框架对比维度LangChainAutoGPTCrewAI定位Agent 构建脚手架开箱即用的执行者多角色协作编排学习曲线陡峭2-4周平缓半天中等1周生态成熟度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐生产稳定性高低易死循环中适用场景企业级 RAG、复杂工作流自动化研究多角色内容生产选型建议: 构建生产级系统 →LangChain LangGraph快速原型验证 →CrewAI个人探索 →AutoGPT8. 总结8.1 核心要点回顾组件核心作用记忆口诀Models推理大脑“谁在想”Prompts指令模板“怎么说”Chains流程编排“怎么串”Memory记忆管理“记得住”Indexes知识检索“查得到”Agents自主决策“自己干”Tools外部能力“能干啥”8.2 2026 发展趋势框架融合加速— LangChain 吸收角色编排概念框架边界逐渐模糊Agent 可观测性成为标配— 无 Trace/Log 的 Agent 无法进入生产环境边缘 Agent 爆发— 手机端 LLM 推理成熟轻量 Agent 在移动端落地Multi-Agent 工程化— 从 Hackathon 玩具走向拥有状态恢复、死锁检测的工业级方案Agent 即服务AaaS— 托管式 Agent 平台兴起8.3 最后LangChain 的学习曲线确实较陡概念众多但一旦掌握其**“组件化 可组合”**的设计哲学你就能像搭积木一样构建出任意复杂的 LLM 应用。建议从简单的 Chain 开始逐步深入到 Agent 和 LangGraph配合 LangSmith 进行观测调优最终走向生产部署。核心心法: Chain 解决怎么做Agent 解决做什么LangGraph 解决怎么循环做。参考来源LangChain 官方文档LangGraph 官方博客CSDN《LangChain 实战指南2026年大模型应用开发框架核心价值与落地实践》CSDN《2026 AI Agent 框架深度对比LangChain vs AutoGPT vs CrewAI》ApFramework《知识提取LangChain 核心概念与内容精要》