大家好我是你们的技术伙伴。站在2026年的时间节点回望大语言模型LLM已经不再是新鲜事物它渗透在我们生活的方方面面。但作为一名开发者如果只满足于调用现成的模型而不懂其内部的运行逻辑那我们和“调参侠”又有什么区别今天我将结合Python代码实战与深度理论剖析带你从零构建一套完整的LangChain知识体系。我们将穿越Transformer的迷雾直击LangChain的核心组件让你在面对任何LLM面试题或技术难题时都能从容不迫。核心内容概览LangChain核心组件全景Models、Prompts、Chains、Memory、Indexes、Agents。LCEL链式语法掌握|操作符构建高效的处理流水线。智能体Agent实战让大模型具备“思考”与“行动”的能力。 第一部分LangChain核心组件全景LangChain是围绕LLMs建立的一个框架它的核心理念是为各种LLMs实现通用的接口把LLMs相关的组件“链接”在一起简化LLMs应用的开发难度。1. Models模型AI的“大脑”Models组件提供了与各种模型的集成接口。目前主要支持三种类型LLMs接收文本输入返回文本。Chat Models基于LLMs接收聊天消息AIMessage/HumanMessage/SystemMessage列表作为输入。Embeddings Models接收文本返回浮点数列表向量化。代码实战调用通义千问Qwen-Maxfrom langchain_community.llms.tongyi import Tongyi from dotenv import load_dotenv import os # 1. 加载环境变量 load_dotenv() # 2. 实例化模型 llm Tongyi(modelqwen-max) # 3. 模型推理 res llm.invoke(帮我讲个笑话吧) print(res)2. Prompts提示词与AI沟通的“咒语”Prompt是引导模型生成特定结果的关键。LangChain提供了PromptTemplate来构建动态提示词。代码实战构建通用提示词模板from langchain_core.prompts import PromptTemplate # 定义模板 template 我的邻居姓{lastname}他生了个儿子给他儿子起个名字 # 构建提示词模板 prompt PromptTemplate( input_variables[lastname], templatetemplate, ) # 生成提示词 prompt_text prompt.format(lastname王) print(prompt_text)3. Chains链串联组件的“流水线”Chain是将LLM与其他组件结合起来完成应用程序的过程。代码实战LCELLangChain Expression Language链式语法LCEL使用|符号将组件连接起来是目前最推荐的写法。# 安装pip install langchain from langchain_core.prompts import PromptTemplate from langchain_community.llms.tongyi import Tongyi # 初始化模型 llm Tongyi(modelqwen-max) # 定义模板 prompt PromptTemplate.from_template( 请为姓氏 {lastname} 的宝宝起一个名字要求有诗意。 ) # 构建Chain chain prompt | llm # 执行链 result chain.invoke({lastname: 李}) print(result.content)4. Memory记忆让AI“记得住”你大模型本身不具备记忆能力Memory组件用于保存和模型交互时的上下文状态。代码实战ConversationChain实现连续对话from langchain.chains import ConversationChain from langchain_community.chat_models.tongyi import ChatTongyi # 实例化聊天模型 chat ChatTongyi() # 创建会话链 conversation ConversationSection(chat) # 连续对话 print(conversation.predict(input小明有1只猫)) print(conversation.predict(input小刚有2只狗)) print(conversation.predict(input小明和小刚一共有几只宠物?))5. Indexes索引RAG的“地基”Indexes组件负责文档处理包括加载、分割、向量化存储和检索。代码实战文档加载与向量存储from langchain_community.document_loaders import TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain_chroma import Chroma from langchain_community.embeddings import DashScopeEmbeddings # 1. 加载文档 loader TextLoader(./data/pku.txt, encodingutf8) docs loader.load() # 2. 文档分割 text_splitter CharacterTextSplitter(chunk_size180, chunk_overlap0) split_texts text_splitter.split_documents(docs) # 3. 加载嵌入模型 embeddings DashScopeEmbeddings() # 4. 构建向量库并持久化 vectordb Chroma.from_documents( documentssplit_texts, embeddingembeddings, persist_directory./chroma_data )6. Agents智能体会“思考”的AIAgent是LangChain中最强大的组件它能让模型根据输入决定调用哪些工具Tools。代码实战Agent调用维基百科与计算器from langchain.agents import initialize_agent, AgentType from langchain_community.agent_toolkits.load_tools import load_tools from langchain_community.llms.tongyi import Tongyi # 初始化模型 llm Tongyi() # 加载工具 (维基百科、数学计算) tools load_tools([wikipedia, llm-math], llmllm) # 初始化Agent agent initialize_agent( tools, llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, verboseTrue # 显示思考过程 ) # 执行任务 agent.invoke(故宫的历史简介是什么) agent.invoke(计算300的25%是多少)️ 第二部分LCEL链式语法详解LCELLangChain Expression Language是LangChain的核心语法糖它让代码变得极其简洁且可读。核心逻辑就像Unix的管道符|一样把前一个组件的输出作为后一个组件的输入。实战案例构建一个“起名专家”链from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_community.chat_models.tongyi import ChatTongyi # 1. 定义提示词模板 prompt ChatPromptTemplate.from_template( 你是一位资深国学专家请根据姓氏 {lastname}参考《诗经》起一个有文化底蕴的名字。 ) # 2. 初始化模型 model ChatTongyi(modelqwen-max) # 3. 初始化解析器 (将模型输出解析为字符串) parser StrOutputParser() # 4. 组装LCEL链 # 执行流程Prompt - Model - Parser chain prompt | model | parser # 5. 调用 result chain.invoke({lastname: 苏}) print(f推荐名字: {result}) 第三部分智能体Agent的“思考”之旅Agent 大模型 任务规划 工具使用 记忆。它最大的特点是能根据问题动态决定是否需要调用工具。1. Agent的工作流程Input接收用户输入。Thought大模型思考是否需要工具如果需要选择哪个工具传入什么参数。Action执行工具。Observation观察工具返回的结果。Final Answer生成最终答案。2. 代码实战自定义工具我们可以让Agent具备任何能力比如查询当前时间。from langchain.agents import tool from datetime import date # 定义自定义工具 tool def get_current_date(text: str) - str: 返回今天的日期。 return str(date.today()) # 加载原有工具并加入自定义工具 tools load_tools([llm-math], llmllm) agent initialize_agent(tools [get_current_date], llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, verboseTrue) # 提问 agent.invoke(今天是星期几) 第四部分总结与展望回顾这篇文章我们完成了以下技术探险核心组件掌握了LangChain的六大核心组件。LCEL语法学会了如何用|构建高效的处理流水线。Agent实战让AI具备了“思考”与“行动”的能力。2026年的今天AI技术日新月异希望这篇博客能成为你技术进阶路上的垫脚石。如果你觉得有收获希望点赞、收藏、关注你的支持是我持续输出硬核内容的最大动力