2026年最硬核的LangChain从入门到精通:全网最细核心组件全景剖析
大家好,我是你们的技术伙伴。👋
站在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-Max
from langchain_community.llms.tongyi import Tongyi from dotenv import load_dotenv import os # 1. 加载环境变量 load_dotenv() # 2. 实例化模型 llm = Tongyi(model='qwen-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"], template=template, ) # 生成提示词 prompt_text = prompt.format(lastname="王") print(prompt_text)3. Chains(链):串联组件的“流水线”
Chain是将LLM与其他组件结合起来完成应用程序的过程。
代码实战:LCEL(LangChain Expression Language)链式语法
LCEL使用|符号将组件连接起来,是目前最推荐的写法。
# 安装:pip install langchain from langchain_core.prompts import PromptTemplate from langchain_community.llms.tongyi import Tongyi # 初始化模型 llm = Tongyi(model='qwen-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', encoding='utf8') docs = loader.load() # 2. 文档分割 text_splitter = CharacterTextSplitter(chunk_size=180, chunk_overlap=0) split_texts = text_splitter.split_documents(docs) # 3. 加载嵌入模型 embeddings = DashScopeEmbeddings() # 4. 构建向量库并持久化 vectordb = Chroma.from_documents( documents=split_texts, embedding=embeddings, persist_directory='./chroma_data' )6. Agents(智能体):会“思考”的AI
Agent是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"], llm=llm) # 初始化Agent agent = initialize_agent( tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True # 显示思考过程 ) # 执行任务 agent.invoke("故宫的历史简介是什么?") agent.invoke("计算300的25%是多少?")🏗️ 第二部分:LCEL链式语法详解
LCEL(LangChain 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(model='qwen-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"], llm=llm) agent = initialize_agent(tools + [get_current_date], llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) # 提问 agent.invoke("今天是星期几?")📝 第四部分:总结与展望
回顾这篇文章,我们完成了以下技术探险:
- 核心组件:掌握了LangChain的六大核心组件。
- LCEL语法:学会了如何用
|构建高效的处理流水线。 - Agent实战:让AI具备了“思考”与“行动”的能力。
2026年的今天,AI技术日新月异,希望这篇博客能成为你技术进阶路上的垫脚石。如果你觉得有收获,希望点赞、收藏、关注!你的支持是我持续输出硬核内容的最大动力!
