LangChain实战入门:快速搭建AI Agent,从零到一超详细教程!
前面讲了那么多理论这一篇来点实战。怎么用框架快速搭一个Agent目前最流行的两个框架是LangChain和LangGraph。LangChain适合快速上手LangGraph适合复杂工作流。这篇先讲LangChain下一篇再对比LangGraph。LangChain是什么LangChain是一个AI应用开发框架。它的作用是帮你把大模型、工具、知识库串起来快速搭建AI应用。不用LangChain你可以自己写代码调用大模型API、拼接工具、处理返回。但很繁琐。你要自己处理API调用、错误重试、上下文管理、输出解析——每件事都要写代码。用LangChain它帮你把常用的模式封装好你只需要组合调用。就像搭积木框架提供各种形状的积木块你只需要按自己的想法拼起来。类比一下不用框架就像自己买零件组装电脑。你要懂CPU、主板、内存、硬盘怎么搭配接口对不对驱动装不装。费时费力。用LangChain就像买整机模块化组装。框架提供了现成的模块——大模型是CPU工具是各种外设知识库是存储。你只需要按说明书把它们连起来。对于想快速验证想法的人来说LangChain的价值在于降低开发成本。你不需要从头写所有代码只需要关注业务逻辑本身。LangChain的核心概念开始动手之前先搞懂几个核心概念。概念一Model。LangChain支持各种大模型。OpenAI的GPT系列、Anthropic的Claude系列、国内的文心、通义、GLM系列甚至本地运行的Llama、Qwen等开源模型。使用的时候只需要切换模型名称其他代码基本不用改。这让换模型变得非常方便——先用GPT-4验证想法效果好了想省钱换成GPT-3.5或者本地模型代码改动很小。概念二Prompt。Prompt是给大模型的指令。Prompt模板是带变量的指令把不变的部分固定下来把变的部分留成变量。比如一个客服Agent的Prompt模板“你是{role}的客服助手用户的问题是{question}”。运行时把role换成技术支持把question换成用户实际的问题。这个模板可以重复使用每次只需要替换变量。LangChain提供了丰富的Prompt模板功能包括对话模板、Few-shot示例、输出格式控制等。概念三Chain。Chain是LangChain的核心概念。它把多个组件串联起来形成一个处理流程。最简单的Chain是这样的Prompt模板 → 大模型 → 输出。Prompt模板处理用户输入把处理结果给大模型大模型返回结果。复杂的Chain可以很长Prompt → 大模型 → 输出解析 → 条件判断 → 另一个Prompt → 另一个大模型 → 输出。Chain可以嵌套可以分叉形成复杂的处理流程。概念四Tool。Tool是Agent能调用的外部能力。包括搜索引擎、数据库查询、API调用、代码执行、文件操作等。定义一个Tool需要提供三样东西Tool的名称让Agent知道什么时候调用、Tool的描述让Agent知道Tool能做什么、Tool的具体实现实际执行逻辑。搭一个最简单的Agent目标一个能查天气的Agent。整体思路。首先定义一个天气查询的工具。然后把这个工具交给Agent。最后让Agent来处理用户问题Agent会自动判断什么时候该调用工具。第一步定义工具。天气查询工具接收一个城市名称返回该城市的天气信息。这里用一个模拟函数实际项目中会调用真实的天气API。def get_weather(city: str) - str: 获取城市天气 # 实际项目中这里调用真实天气API return f{city}今天晴天15-25度定义工具的时候函数的docstring非常重要。LangChain会用docstring来理解这个工具是做什么的然后告诉Agent什么时候该调用它。所以docstring要写得清晰准确。第二步把工具交给Agent。tools [get_weather] agent initialize_agent( tools, llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, verboseTrue )这里用了ZERO_SHOT_REACT_DESCRIPTION类型的Agent。这种Agent的工作方式是ReAct框架——先思考要不要调用工具、调用什么工具然后调用观察结果再思考下一步。verboseTrue会让Agent把思考过程打印出来方便调试和理解Agent在做什么。第三步运行Agent。result agent.invoke(北京今天天气怎么样) print(result)Agent收到问题后会经历这样的过程Thought阶段用户问北京天气我需要调用天气查询工具。Action阶段调用get_weather工具参数是北京。Observation阶段获取到北京今天晴天15-25度。Thought阶段有了天气信息可以回答用户了。Final Answer阶段给出回答。运行结果示例 Entering new Agent chain... Thought: 用户问北京天气我需要调用天气查询工具。 Action: get_weather Action Input: 北京 Observation: 北京今天晴天15-25度 Thought: 天气信息拿到了可以回答用户了。 Final Answer: 北京今天天气晴朗气温15-25度。 Finished chain.这就是一个完整的Agent。它能理解用户意图判断需要调用工具调用工具获取结果基于结果给出回答。搭一个更复杂的Agent天气查询太简单了来一个实用场景市场调研Agent。目标用户说帮我调研一下新能源车市场Agent自动完成以下步骤第一步搜索行业数据第二步搜索竞品信息第三步生成调研报告。第一步定义工具。搜索行业数据的工具。实际项目中这里会调用真实的行业数据API或者搜索引擎。def search_industry(keyword: str) - str: 搜索行业数据和报告 return f{keyword}行业2024年市场规模约5000亿同比增长25%。 def search_competitor(keyword: str) - str: 搜索竞品信息和市场份额 return f{keyword}主要竞品A品牌占比35%B品牌占比28%C品牌占比20%。 def generate_report(data: dict) - str: 基于收集的数据生成调研报告 return f# 市场调研报告\n\n行业规模{data[market_size]}\n竞品分析{data[competitors]}第二步初始化Agent。agent initialize_agent( tools, llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION, verboseTrue )第三步运行。result agent.invoke(帮我调研一下新能源车市场) print(result)Agent会自动规划执行步骤首先判断这是一个市场调研任务需要先了解行业整体情况。然后调用行业数据搜索工具获取市场规模、增长率等基础信息。接着判断还需要了解竞品情况。然后调用竞品分析工具获取主要竞品、市场份额等竞争信息。最后判断信息收集得差不多了可以生成报告了。调用报告生成工具把之前收集的数据整理成报告格式输出。Agent的核心价值在这里体现用户只需要说帮我调研新能源车市场Agent自动完成剩余所有工作。用户不需要告诉它先查什么再查什么它自己判断、自己规划、自己执行。加上记忆系统上面的Agent没有记忆。每次对话都是独立的用户之前说过什么Agent完全不记得。加上记忆让Agent能跨对话记住用户。第一步定义记忆。memory ConversationSummaryMemory( llmllm, memory_keychat_history, return_messagesTrue )ConversationSummaryMemory是一种特殊的记忆类型。它不只是保存对话历史还会定期把对话摘要压缩存储节省上下文空间。第二步带记忆的Agent。agent initialize_agent( tools, llm, agentAgentType.CONVERSATIONAL_REACT_DESCRIPTION, memorymemory, verboseTrue )CONVERSATIONAL_REACT_DESCRIPTION是专门为对话场景优化的Agent类型。它在ReAct的基础上增加了对话历史的处理能力。第三步对话。agent.invoke(我叫张三) agent.invoke(我叫什么呢)第一句Agent说“好的张三我记住了。”第二句Agent说“您叫张三。” 它记住了。这就是带记忆的Agent和普通聊天的区别。普通聊天每次都是新对话带记忆的Agent能积累信息越用越了解用户。加上RAG知识检索给Agent接入知识库。第一步准备知识库。from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import Chroma embeddings OpenAIEmbeddings() vectorstore Chroma( persist_directory./knowledge_base, embedding_functionembeddings ) vectorstore.add_documents(documents)这里用了Chroma作为向量数据库。向量数据库的作用是把文档转换成向量存储起来检索的时候通过向量相似度来找到相关文档。embeddings是嵌入模型负责把文字转换成向量。LangChain支持OpenAI的嵌入模型也可以用其他提供商或本地模型。第二步创建检索工具。retriever vectorstore.as_retriever(search_kwargs{k: 3})as_retriever把向量数据库包装成一个Retriever对象。search_kwargs里的k3表示检索返回最相关的3条文档。第三步Agent使用检索。agent initialize_agent( tools [retriever], llm, agentAgentType.ZERO_SHOT_REACT_DESCRIPTION )把retriever作为工具加到Agent的工具箱里。Agent遇到问题会自动判断要不要用知识库检索。完整架构一览一个完整的LangChain Agent从输入到输出经历了这些环节用户输入层。用户说帮我分析一下新能源车市场。记忆层。Agent检查是否有相关历史对话。如果有把历史信息也纳入考虑。工具层。Agent判断需要调用哪些工具。行业数据工具、竞品分析工具、知识库检索工具根据任务需求选择。大模型层。Agent调用大模型进行推理。大模型决定下一步做什么、调用什么工具、给出什么回答。输出层。Agent把结果返回给用户。如果需要把这次对话存到记忆里。整个流程中大模型是中枢。它接收用户输入、调用记忆、决定使用哪些工具、分析工具返回的结果、生成最终回答。每个环节都有大模型的参与。LangChain vs LangGraph两个框架有什么区别什么时候该用哪个LangChain的核心抽象是Chain。Chain是线性的一步接一步适合处理流程相对固定的任务。比如用户问问题 → 检索知识库 → 生成回答这种线性流程用Chain表达很自然。LangGraph的核心抽象是Graph。Graph是图状的有节点有边节点之间可以互相跳转适合处理复杂工作流。比如有分支、有循环、有回退的流程用Graph表达更清晰。什么时候用LangChain快速原型验证阶段。想快速搭一个原型看看效果不需要复杂的流程控制。线性流程的工具调用。步骤之间是简单的先后关系不需要来回跳转。单一Agent的场景。不涉及多Agent协作、循环执行等复杂模式。什么时候用LangGraph需要多轮对话的场景。Graph支持循环Chain不支持。Agent需要回退重试的场景。比如Agent执行出错了需要回到之前的步骤重新执行。有多Agent协作的场景。Graph可以清晰地表达Agent之间的通信和依赖关系。需要自定义状态管理的场景。Graph的状态是显式管理的可以随时查看和修改。实际建议先用LangChain上手验证了想法再考虑是否需要LangGraph。如果发现LangChain的表达能力不够再迁移到LangGraph。我的观点LangChain和LangGraph是当前最流行的Agent开发框架但框架是手段不是目的。很多人沉迷于用什么框架忘了真正重要的是Agent的能力。框架选得再好如果工具设计得不好、Prompt写得不好、知识库建设得不好Agent的效果也好不了。工具设计决定Agent能做什么。工具描述决定Agent什么时候该用。工具质量决定Agent输出的质量。Prompt优化决定Agent的理解能力。同一套工具换一个Prompt效果可能天差地别。知识库建设决定Agent的知识边界。知识库内容不对Agent回答就错。知识库内容不全Agent回答就漏。框架选型建议是这样的快速验证想法用LangChain生产级复杂应用用LangGraph不想学框架直接调用API自己搭也行。关键是跑通业务逻辑而不是被框架束缚。先让Agent能工作再考虑怎么优化。假如你从2026年开始学大模型按这个步骤走准能稳步进阶。接下来告诉你一条最快的邪修路线3个月即可成为模型大师薪资直接起飞。阶段1:大模型基础阶段2:RAG应用开发工程阶段3:大模型Agent应用架构阶段4:大模型微调与私有化部署配套文档资源全套AI 大模型 学习资料朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】配套文档资源全套AI 大模型 学习资料朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】