当大语言模型还在实验室里惊艳众人时一个名为LangChain的框架已悄然诞生。如今它已成为AI应用开发不可或缺的基础设施。本文将带你全面了解LangChain的核心原理、实战应用与发展前景。一、LangChain大模型时代的“基础设施”1.1 诞生于ChatGPT之前的远见2022年10月哈佛大学毕业生Harrison Chase哈里森·蔡斯发起研发了一个名为LangChain的开源框架用于开发由大语言模型LLMs驱动的应用程序。值得一提的是LangChain的发布比ChatGPT问世还要早一个月这一先发优势让LangChain迅速获得了广泛关注和支持GitHub Stars一路飙升成为AI开发者社区最炙手可热的项目之一。LangChain的名字本身就有丰富的内涵。“Lang”指的是Language即大语言模型“Chain”则是“链”的意思——将大模型与外部数据及各种组件连接成链以此构建AI应用程序。简单来说LangChain ≠ LLMs。LangChain之于LLMs类似于Spring之于Java、Django之于Python的关系。1.2 大模型应用开发的“四大痛点”在实际使用大语言模型时开发者会遇到一些天然限制知识滞后LLM的知识截止到训练数据的时间点无法获取最新信息无法联网模型本身不具备主动获取外部信息的能力输出不稳定同样的问题模型可能给出不同的答案无法对接外部工具模型只能“说”不能“做”不能调用API、查询数据库或操作其他系统直接调用GPT或GLM4等模型的API进行开发固然可行但LangChain的价值在于简化开发难度、统一调用规范、降低学习成本、提供现成的链式组装。开发者可以更专注于业务逻辑而无须花费大量时间和精力处理底层技术细节。1.3 当前大模型应用开发框架生态除了LangChain市面上还有哪些主流的大模型应用开发框架下表列出了几个代表性的框架及其定位框架描述LangChain (Python)出现最早、最成熟的适合复杂任务分解和单Agent应用LlamaIndex (Python)专注于高效的索引和检索适合RAG场景LangChain4J (Java)LangChain的Java版本核心功能完备SpringAI / SpringAI Alibaba (Java)待进一步成熟目前只是简单封装SemanticKernel (C#)微软推出的C#生态优选方案从定位来看LangChain被称为“大模型开发界的瑞士军刀”其核心优势在于灵活性和扩展性能够处理从简单问答到复杂多步骤任务的各种场景。而LlamaIndex则更像一个“知识接入层”专注于数据索引和检索优化常与LangChain配合使用。1.4 LangChain生态架构LangChain的生态系统并不仅仅是一个框架而是一整套工具链LangChain主框架帮助快速开始构建Agent支持任意模型提供商LangGraph提供低级编排控制支持记忆和人工参与可以管理具有持久执行能力的长时间运行任务LangSmith帮助AI团队使用实时生产数据进行持续测试和改进提供观测、评估与部署功能Deep Agents用于构建能够规划、使用子Agent并利用文件系统处理复杂任务的Agent二、RAG让大模型学会“开卷考试”2.1 为什么要用RAG大语言模型存在两个核心问题知识冻结随着LLM规模扩大训练成本与周期相应增加模型无法实时学习到最新的信息或动态变化。比如你问它“请推荐现在的热门影片”它可能给出几个月甚至一年前的信息。大模型幻觉当涉及大模型从未在训练过程中学习过的信息时模型无法给出准确的答案转而开始臆想和编造答案。这对企业级应用来说是致命的问题。RAGRetrieval-Augmented Generation检索增强生成正是解决这两个问题的有效方案。2.2 RAG的核心原理RAG的流程可以这样理解给LLM一场“开卷考试”。当LLM面对陌生领域、答复能力有限时RAG通过外部知识检索提供参考材料让LLM根据这些参考来回答。实践证明这种方式能让答案的正确率从60%提升到90%。用更技术化的语言来说RAG通过整合外部知识显著增强了LLM在知识密集型任务中的表现。它的优势在于实时性和较低的计算成本能够有效集成外部知识源以提升LLM的可靠性和事实准确性。2.3 LangChain实现RAG的核心流程LangChain实现RAG的流程包括六个关键步骤Source数据源视频、图片、文本、代码、文档等多种类型Load加载将多源异构数据统一加载为文档对象Transform转换对文档进行处理比如将文本切分为合适大小的小块Embed嵌入将文本编码为向量Store存储将向量化后的数据存储到向量数据库中Retrieve检索根据用户输入从向量库中检索相关文本段落2.4 代码示例构建一个文档问答系统下面我们用LangChain构建一个完整的RAG问答系统实现企业知识库智能问答。环境准备python# 安装所需依赖 # pip install langchain langchain-community chromadb sentence-transformers from langchain.document_loaders import TextLoader, DirectoryLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import HuggingFaceEmbeddings from langchain.vectorstores import Chroma from langchain.chains import RetrievalQA from langchain.chat_models import ChatOpenAI from langchain.prompts import PromptTemplate第一步加载文档# 从指定目录加载所有txt文档 loader DirectoryLoader( ./knowledge_base/, # 知识库目录 glob**/*.txt, # 匹配所有txt文件 loader_clsTextLoader, # 使用文本加载器 show_progressTrue # 显示加载进度 ) documents loader.load() print(f已加载 {len(documents)} 个文档)第二步文本分割# 创建文本分割器 # chunk_size控制每个文本块的大小chunk_overlap保证块之间有重叠避免语义割裂 text_splitter RecursiveCharacterTextSplitter( chunk_size500, # 每个块500字符 chunk_overlap50, # 块之间重叠50字符 separators[\n\n, \n, 。, , , ] # 优先按段落和句子分割 ) # 执行分割 chunks text_splitter.split_documents(documents) print(f共分割为 {len(chunks)} 个文本块)第三步文本嵌入与存储# 选择嵌入模型 # sentence-transformers/all-MiniLM-L6-v2 是一个轻量级且效果不错的模型 embeddings HuggingFaceEmbeddings( model_namesentence-transformers/all-MiniLM-L6-v2, model_kwargs{device: cpu}, # 也可设置为cuda使用GPU加速 encode_kwargs{normalize_embeddings: True} ) # 将文本块向量化并存入Chroma向量数据库 vector_store Chroma.from_documents( documentschunks, embeddingembeddings, persist_directory./chroma_db # 持久化存储路径 ) print(文档向量化完成已存入Chroma向量数据库)第四步构建RAG问答链# 定义提示模板 # 指导LLM基于检索到的上下文来回答问题 prompt_template 你是一个专业的AI助手。请基于以下提供的上下文信息来回答问题。 如果上下文信息不足以回答用户的问题请直接说“根据现有知识库我无法回答这个问题”不要自己编造答案。 上下文信息 {context} 用户问题{question} 请基于上述上下文给出准确、清晰的回答。 # 创建提示模板对象 PROMPT PromptTemplate( templateprompt_template, input_variables[context, question] ) # 初始化大语言模型 # 这里以OpenAI为例实际可以替换为任何支持LangChain的模型 llm ChatOpenAI( model_namegpt-3.5-turbo, temperature0, # 温度设为0使回答更确定、更保守 max_tokens500 ) # 创建检索器根据用户问题查找最相关的文本块 retriever vector_store.as_retriever( search_typesimilarity, # 相似度搜索 search_kwargs{k: 3} # 返回最相似的3个文本块 ) # 构建RAG问答链 qa_chain RetrievalQA.from_chain_type( llmllm, chain_typestuff, # stuff模式将检索到的文本直接拼接后送入LLM retrieverretriever, chain_type_kwargs{prompt: PROMPT}, return_source_documentsTrue # 返回引用的源文档便于追溯 )第五步测试问答系统# 测试问答功能 def ask_question(question): 向知识库提问并打印答案 result qa_chain({query: question}) print(f问题{question}) print(f答案{result[result]}) print(\n参考来源) for i, doc in enumerate(result[source_documents]): print(f [{i1}] {doc.metadata.get(source, 未知)} - {doc.page_content[:100]}...) print(- * 50) # 执行测试 ask_question(公司的年假政策是什么) ask_question(员工入职培训流程包括哪些步骤) ask_question(销售岗位有哪些注意事项)运行效果示例问题公司的年假政策是什么 答案根据公司员工手册规定入职满1年的员工享有5天带薪年假入职满5年的员工享有10天带薪年假入职满10年的员工享有15天带薪年假。代码解释DirectoryLoader负责批量加载文档支持多种格式RecursiveCharacterTextSplitter通过递归方式按分隔符列表优先在语义边界处分割文本避免切断完整句子Chroma是一个轻量级向量数据库适合开发和测试场景RetrievalQA是LangChain内置的RAG问答链封装了“检索→组装→生成”的完整流程temperature0让模型输出更加确定避免“创造性”回答带来的幻觉风险三、Agent让大模型学会“独立思考”如果说RAG让LLM学会了“开卷考试”那么Agent则让LLM具备了“独立解决问题”的能力。3.1 Agent的核心要素OpenAI的元老翁丽莲Lilian Weng于2023年6月在个人博客中首次提出了现代AI Agent的架构其核心可以用一个公式表示Agent LLM Memory Tools Planning Action具体来说Agent包含以下五个核心要素1大模型LLM作为“大脑”提供推理、规划和知识理解能力是AI Agent的决策中枢。2记忆Memory短期记忆存储单次对话周期的上下文信息长期记忆横跨多个任务或时间周期可通过模型参数微调、知识图谱或向量数据库实现3工具使用Tool Use调用外部工具如API、数据库、搜索引擎、计算器扩展能力边界。Agent可以调用MCP或Function Calling等API就像滴滴打车、携程、美团这些外部服务接口一样。4规划决策Planning通过任务分解、反思与自省框架实现复杂任务处理。例如利用思维链Chain of Thought将目标拆解为子任务并通过反馈优化策略。5行动Action实际执行决策的模块涵盖软件接口操作和物理交互。3.2 Agent的实际运作流程用一个生活中的例子来理解Agent的工作方式“打车到西藏玩”这个复杂任务。大脑中枢规划行程的你LLM充当规划者规划步骤1规划打车路线步骤2订饭店、酒店...调用工具调用MCP或Function Calling等API使用滴滴打车、携程、美团订酒店饭店记忆能力沟通时要知道上下文比如订酒店得知道是西藏路上的酒店执行能够执行上述操作3.3 Agent开发的四种场景在实际开发中大模型应用可以根据需求复杂度分为四种场景场景1纯Prompt——Prompt是操作大模型的唯一接口一问一答模式场景2Agent Function Calling——AI主动提要求需要对接外部系统时AI要求执行某个函数。比如你问“我明天去杭州出差要带伞吗”Agent让你先查天气预报查完后再告诉你答案场景3RAG——需要补充领域知识时使用。Embeddings将文字转换为更易于相似度计算的编码向量向量数据库把向量存起来方便查找。在智能客服场景中使用最广泛场景4Fine-tuning微调——让模型“努力学习考试内容”长期记住并活学活用。特点是成本最高在前面三种方式解决不了问题的情况下才使用3.4 代码示例构建一个ReAct Agent下面我们用LangChain构建一个具备工具调用能力的Agent让它能自主查询天气、进行计算等。# 安装依赖 # pip install langchain langchain-openai langchain-community from langchain.agents import create_react_agent, AgentExecutor from langchain.agents import Tool from langchain.chat_models import ChatOpenAI from langchain.prompts import PromptTemplate import requests import json # 定义工具1获取天气信息 def get_weather(city: str) - str: 获取指定城市的天气信息 # 实际应用中可调用真实天气API # 这里用模拟数据演示 weather_data { 北京: 晴24°C湿度45%空气质量良好, 上海: 多云转阴22°C湿度65%可能有小雨, 杭州: 阵雨20°C湿度78%建议带伞, 深圳: 晴间多云28°C湿度70% } return weather_data.get(city, f抱歉未找到{city}的天气信息) # 定义工具2计算器功能 def calculate(expression: str) - str: 执行数学计算 try: # 安全计算注意实际生产环境应使用更安全的方式 result eval(expression) return f{expression} {result} except Exception as e: return f计算错误{str(e)} # 定义工具3查询航班信息模拟 def search_flight(city: str) - str: 查询到指定城市的航班信息 flights { 北京: CA1234 08:00起飞CA5678 14:30起飞, 上海: MU1234 09:15起飞MU5678 15:45起飞 } return flights.get(city, f抱歉未找到到{city}的航班信息) # 封装为LangChain Tool对象 tools [ Tool( nameWeather, funcget_weather, description获取城市天气信息。输入城市名称返回该城市的天气情况。 ), Tool( nameCalculator, funccalculate, description执行数学计算。输入数学表达式如 3 * 8 5。 ), Tool( nameFlightSearch, funcsearch_flight, description查询到指定城市的航班信息。输入城市名称返回航班列表。 ) ] # 定义ReAct Agent的提示模板 # ReAct Reason Act让Agent交替进行推理和行动 react_prompt PromptTemplate.from_template( 你是一个智能助手可以使用工具来解决用户的问题。 你有以下工具可用 {tools} 工具名称{tool_names} 回答格式必须严格遵守以下格式 Question: 用户的问题 Thought: 思考如何解决问题 Action: 选择要使用的工具必须是 [{tool_names}] 中的一个 Action Input: 工具的输入参数 Observation: 工具返回的结果 ...可以重复 Thought/Action/Observation 多次 Thought: 我现在知道最终答案了 Final Answer: 给用户的最终回答 开始 Question: {input} Thought: {agent_scratchpad} ) # 初始化LLM llm ChatOpenAI( model_namegpt-3.5-turbo, temperature0, # Agent场景建议温度较低保证决策的确定性 max_tokens1000 ) # 创建Agent agent create_react_agent( llmllm, toolstools, promptreact_prompt ) # 创建Agent执行器 agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, # 打印Agent的思考过程便于调试 max_iterations5, # 最多迭代5次防止无限循环 handle_parsing_errorsTrue ) # 测试Agent def run_agent_task(task: str): 执行Agent任务并打印结果 print(f用户任务{task}) print(- * 50) result agent_executor.invoke({input: task}) print(f最终结果{result[output]}) print( * 50) # 测试用例1多步骤推理 run_agent_task(我计划明天去杭州出差帮我查一下杭州天气然后计算5天住宿费假设每天400元) # 测试用例2工具组合调用 run_agent_task(查一下北京的天气然后告诉我北京和上海的航班信息)运行效果示例用户任务我计划明天去杭州出差帮我查一下杭州天气然后计算5天住宿费假设每天400元 -------------------------------------------------- Entering new AgentExecutor chain... Thought: 需要先查杭州天气再计算住宿费 Action: Weather Action Input: 杭州 Observation: 阵雨20°C湿度78%建议带伞 Thought: 已获取天气现在计算住宿费 Action: Calculator Action Input: 400 * 5 Observation: 400 * 5 2000 Thought: 我现在知道最终答案了 Final Answer: 杭州明天的天气是阵雨20°C湿度78%建议带伞。5天的住宿费用共计2000元按每天400元计算。 -------------------------------------------------- 最终结果杭州明天的天气是阵雨20°C湿度78%建议带伞。5天的住宿费用共计2000元按每天400元计算。 代码解释create_react_agent创建的是遵循ReActReason Act范式的Agent核心是“思考→行动→观察”的循环Tool类用于封装外部能力需要提供name工具名、func执行函数和description描述供LLM判断何时使用AgentExecutor是Agent的运行容器负责控制迭代次数、错误处理等verboseTrue可以观察Agent的每一步推理过程对调试非常有用ReAct提示模板中{agent_scratchpad}是一个关键占位符用于存放Agent前几步的历史推理记录四、2025-2026大模型应用的“黄金时代”4.1 行业趋势Agent元年已经到来2025年被广泛认为是Agent智能体元年。据MIT发布的《2025 AI Agent Index》报告显示2025年学术界提及“AI agent”或“agentic AI”的论文数量超过了之前所有年份的总和。启明创投在WAIC 2025上发布的AI十大展望中指出未来12-24个月Agent形态将从“工具辅助”走向“任务承接”首批真正意义上的“AI员工”将进入企业广泛参与客户服务、销售、运营、研发等核心流程。Gartner也明确指出代理型AI已成为2025年及未来的关键技术趋势智能体正从简单的辅助工具进化为能够协同运作的复杂生态系统。4.2 就业市场大模型相关岗位爆发在就业市场方面大模型相关岗位需求呈现出爆发式增长2025年1-10月新发AI岗位量同比攀升543%9月单月同比增幅超过11倍算法工程师、大模型算法位居新发岗位量最多的岗位第一、第二位高性能计算工程师成为人才最紧缺的岗位人才供需比为0.31相当于每3个岗位争夺1名求职者AI科学家平均月薪突破12.7万元AIGC算法工程师平均薪资较普通算法工程师高出近18%对应的大模型相关岗位主要包括岗位核心职责大模型工程化工程师负责AIGC项目工程侧的架构设计和研发落地大模型基座开发工程师构建和维护大模型基础设施数据开发工程师构建高质量、多模态、动态更新的训练数据集大模型运维/Infra工程师管理大模型推理集群和基础设施4.3 LangSmith Fleet让Agent开发走向生产级2026年2月LangChain推出了LangSmith Fleet原名Agent Builder这是一个重要的里程碑。新版本引入了以下关键功能文件上传功能用户可以直接上传CSV、图片和文本文件到对话中统一工具注册表集中管理所有连接的工具管理员可以查看认证状态并控制工具访问权限对话转Agent通过自然对话完成一个任务然后一键保存为可复用的AI Agent无需编写提示工程Agent身份与权限管理支持在整个公司范围内安全管理Agent这些功能让无代码AI Agent平台成为可能降低了Agent开发的门槛个人开发者可以免费使用基础功能企业用户则根据席位和追踪量付费。4.4 LangChain v1.0架构升级与生产就绪2025年10月LangChain发布了v1.0.0版本完成了一次彻底的架构升级——所有Agent逻辑统一迁移到LangGraph运行时之上从原型友好转向生产就绪。在2026年第一季度LangChain持续迭代LangGraph v1.1发布支持类型安全的流式调用和类型安全的invokeDeep Agents v0.5 alpha发布引入异步子Agent和多模态支持新增NVIDIA集成扩展了硬件加速能力五、LangChain核心组件深度解析5.1 Model I/OModel I/O负责标准化大模型的输入和输出包含三个环节Format格式化通过模板管理大模型的输入将原始数据格式化成模型可以处理的形式Predict预测调用LLM接收输入进行预测或生成回答Parse解析规范化模型输出比如将模型输出格式化为JSON5.2 Chains链“链条”用于将多个组件组合成一个完整的流程方便链式调用。你可以将Prompt Template、LLM、Output Parser等组件“链”在一起形成一个处理管道。5.3 Retrieval检索对应RAG流程负责检索外部数据作为参考信息输入LLM辅助生成答案。5.4 AgentsAgentAgent自主规划执行步骤并使用工具来完成任务形成“用户问题 → LLM → 解析 → 工具调用 → 观察 → LLM → ... → 最终回答”的循环。六、LangChain典型应用场景根据讲义中的项目类型以下是LangChain最常见的应用场景项目场景核心技术点典型应用文档问答助手Prompt Embedding RetrievalQA企业内部知识库问答智能日程规划助手Agent Tool Memory行程规划、任务管理LLM数据库问答SQLDatabaseToolkit Agent自然语言查询数据库多模型路由对话系统RouterChain 多LLM根据任务动态选择模型互联网智能客服ConversationChain RAG Agent电商、金融客服机器人企业知识库助手VectorDB LLM Streamlit本地模型私有知识库6.1 文档问答助手企业使用LangChain加载内部文档如员工手册、产品说明结合向量存储实现语义搜索回答员工或客户的问题。例如新员工询问“销售岗位有哪些注意事项”系统自动检索相关手册并生成自然语言回答。6.2 智能助理开发LangChain的Agent模块结合工具完成复杂任务。例如用户请求调用天气API、计算器和日历规划户外旅游活动。更高级的用法是结合Google Search、网页爬取工具实现“分析某股票趋势并生成报告”的任务。6.3 对话聊天机器人电商平台使用LangChain的ConversationChain结合ConversationBufferMemory记录用户历史对话提供个性化客服。例如用户问“推荐一款跑鞋”机器人根据之前提到的偏好如“喜欢轻量鞋”推荐合适产品。6.4 数据分析与洞察生成金融分析师使用LangChain加载CSV数据结合LLM分析销售趋势生成自然语言报告。例如从销售数据中提取“哪些产品在特定地区销量最高”并生成可视化描述。七、总结与展望LangChain的本质LangChain不是要取代LLM而是成为LLM与现实世界的桥梁。它提供了一套标准化的抽象让开发者不必从零手搓Agent的基础设施而是专注于业务逻辑本身。核心价值统一多种大模型API的调用方式降低切换成本提供模块化的组件组合能力让复杂的AI逻辑变得结构化、易扩展内置最佳实践RAG、Agent、Memory等避免重复造轮子完整的生态系统LangGraph、LangSmith、Deep Agents支撑生产级部署技术选择建议追求快速验证和社区生态 → LangChain专注文档检索和知识库 → LlamaIndex需要精细控制Agent状态和流程 → LangGraphJava技术栈团队 → Spring AI或LangChain4J未来展望随着LangChain v1.0架构升级完成和LangSmith Fleet的推出Agent开发正从“实验室玩具”走向“生产级工具”。对于开发者来说掌握LangChain不仅是掌握一个框架更是掌握未来AI应用开发的核心方法论。正如讲义中所说“应用开发是大模型最值得关注的方向学习LangChain框架高效开发大模型应用。”