LangChain 到底帮你干了什么活?——Agent 开发框架完全解读
1. 引言LangChain 到底解决了什么问题很多初学者第一次接触 LangChain 时都会被它庞大的模块体系吓到模型封装、提示词模板、记忆、工具调用、Agent、检索……看起来什么都有却又说不清它到底帮你干了什么活。本文不打算罗列 API而是从「它替你省掉了哪些重复劳动」这个角度把 LangChain 在 Agent 开发中的价值讲透并给出可运行的代码实战。一句话总结LangChain 帮你把「调模型」这件小事升级成了「编排一套会思考、会调用工具、会记忆、会检索的完整系统」这件大事。它把 AI 应用开发中大量重复、易错、与业务无关的胶水代码抽象成标准组件让你专注于业务逻辑本身。2. 核心价值拆解LangChain 替你干了五类活在进入代码之前先建立整体认知。LangChain 在 Agent 开发中主要替你承担以下五类工作模型接入的统一封装无论你用的是 OpenAI、Anthropic 还是本地模型LangChain 都提供一致的调用接口切换模型时业务代码几乎不用改。提示词工程的结构化把提示词从「裸字符串」升级为「可复用、可组合、可版本管理的模板」并自动处理变量注入。对话记忆的自动管理帮你维护历史消息、控制上下文窗口长度避免「聊着聊着就忘了前面说了什么」。工具调用的协议标准化把普通 Python 函数包装成模型可识别的 Tool让模型能按需调用外部能力。Agent 决策循环的编排模型「思考 → 决定调用哪个工具 → 观察结果 → 再思考」的循环由框架替你跑起来。下面我们逐一用代码验证这些能力。3. 环境准备与基础依赖本文所有代码基于 Python 3.10 和 LangChain 0.3.x。建议先创建虚拟环境并安装依赖pip install langchain langchain-openai langchain-community如果你使用 OpenAI 兼容接口例如本地部署的模型服务可以通过环境变量或直接传入参数配置 API Key 和 Base URLimport os os.environ[OPENAI_API_KEY] your-api-key os.environ[OPENAI_BASE_URL] https://api.openai.com/v14. 第一类活模型接入的统一封装没有 LangChain 时你直接调用各家 SDK代码风格完全不同。有了 LangChain你只需要面向统一的ChatModel接口编程。from langchain_openai import ChatOpenAI 统一接口换模型只改这一行 llm ChatOpenAI(modelgpt-4o-mini, temperature0.7) response llm.invoke(用一句话解释什么是 Agent) print(response.content)如果你想换成 Anthropic 的 Claude只需要把导入和实例化部分替换为ChatAnthropic下游的调用方式llm.invoke(...)完全不变。这就是「统一封装」带来的直接收益模型供应商被抽象成可替换的插件。5. 第二类活提示词工程的结构化裸字符串拼接提示词容易出错且难以维护。LangChain 的PromptTemplate把提示词变成可复用的模板from langchain_core.prompts import ChatPromptTemplate prompt ChatPromptTemplate.from_messages([ (system, 你是一位资深的{domain}专家回答要简洁、准确。), (human, 请解释一下{question}), ]) 渲染模板 messages prompt.invoke({ domain: 人工智能, question: 什么是检索增强生成RAG, }) print(messages)更进一步LangChain 还支持FewShotPromptTemplate少样本示例、PipelinePromptTemplate模板组合等高级能力让提示词像代码一样具备结构性和可维护性。6. 第三类活对话记忆的自动管理大模型本身是无状态的每次调用都是「全新对话」。LangChain 的 Memory 模块帮你维护历史上下文并自动处理窗口截断。from langchain.memory import ConversationBufferMemory from langchain_core.chat_history import InMemoryChatMessageHistory from langchain_core.messages import HumanMessage, AIMessage 使用内存消息历史 history InMemoryChatMessageHistory() history.add_user_message(我叫小明是一名后端工程师。) history.add_ai_message(你好小明很高兴认识你。) 把历史注入到下一次对话 llm ChatOpenAI(modelgpt-4o-mini) messages [ {role: system, content: 你是一个友好的助手。}, *history.messages, {role: user, content: 我叫什么名字}, ] response llm.invoke(messages) print(response.content) # 输出你叫小明对于长对话ConversationSummaryMemory会自动总结早期内容以节省 TokenConversationBufferWindowMemory则只保留最近 N 轮。这些策略如果手写既繁琐又容易出错。7. 第四类活工具调用的协议标准化Agent 的核心能力是「调用工具」。LangChain 用tool装饰器把普通函数变成模型可识别的工具并自动生成 JSON Schema 描述。from langchain_core.tools import tool tool def get_weather(city: str) - str: 查询指定城市的当前天气。 # 这里可以替换为真实天气 API return f{city}今天晴气温 26℃适合出行。 tool def calculate(expression: str) - str: 计算数学表达式例如 12*3。 return str(eval(expression)) 查看工具自动生成的 Schema print(get_weather.name) print(get_weather.description) print(get_weather.args)LangChain 会自动从函数签名和 docstring 中提取参数名、类型和描述生成符合 OpenAI Function Calling 规范的 JSON Schema。你不需要手写任何协议代码。8. 第五类活Agent 决策循环的编排把前面所有组件组合起来就得到了一个完整的 Agent。它会在「思考 → 调用工具 → 观察结果 → 再思考」的循环中自主完成任务。from langchain.agents import create_tool_calling_agent, AgentExecutor from langchain_core.prompts import ChatPromptTemplate 1. 准备工具列表 tools [get_weather, calculate] 2. 定义提示词 prompt ChatPromptTemplate.from_messages([ (system, 你是一个智能助手可以调用工具来回答问题。), (human, {input}), (placeholder, {agent_scratchpad}), ]) 3. 创建 Agent agent create_tool_calling_agent(llm, tools, prompt) 4. 创建执行器 executor AgentExecutor(agentagent, toolstools, verboseTrue) 5. 运行 result executor.invoke({input: 帮我算一下 (2345)*2 等于多少顺便查一下北京的天气。}) print(result[output])运行这段代码你会看到 Agent 自动完成以下动作先调用calculate计算表达式再调用get_weather查询天气最后把两个结果整合成自然语言回答。整个过程你只写了十几行代码决策循环、工具选择、结果解析全部由框架替你完成。9. 进阶实战带检索能力的 RAG Agent真实业务中Agent 往往还需要结合私有知识库。下面演示如何把向量检索RAG接入 Agent让它能回答「训练数据之外」的问题。from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import FAISS from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_core.tools import tool 1. 准备知识库文档 documents [ LangChain 是一个用于构建大语言模型应用的框架。, Agent 是能够自主决策并调用工具的智能体。, RAG 通过检索外部知识来增强模型的回答能力。, ] 2. 切分并向量化 splitter RecursiveCharacterTextSplitter(chunk_size50, chunk_overlap10) chunks splitter.create_documents(documents) embeddings OpenAIEmbeddings() vectorstore FAISS.from_documents(chunks, embeddings) 3. 把检索封装成工具 tool def search_knowledge(query: str) - str: 从内部知识库检索与问题相关的信息。 docs vectorstore.similarity_search(query, k2) return \n.join([d.page_content for d in docs]) 4. 构建带检索能力的 Agent tools [search_knowledge] prompt ChatPromptTemplate.from_messages([ (system, 你是企业内部知识助手优先使用检索到的知识回答。), (human, {input}), (placeholder, {agent_scratchpad}), ]) agent create_tool_calling_agent(llm, tools, prompt) executor AgentExecutor(agentagent, toolstools, verboseTrue) result executor.invoke({input: 什么是 RAG它有什么作用}) print(result[output])这个例子展示了 LangChain 的另一个关键价值组件可插拔。检索、记忆、工具、模型都是独立模块你可以像搭积木一样自由组合构建出适合自己业务的复杂系统。10. 常见坑与避坑建议在实际开发中有几个高频问题值得注意上下文窗口溢出Agent 每轮循环都会把历史追加到 prompt 中长任务容易超限。建议使用ConversationSummaryMemory或限制最大迭代次数。工具调用失败无重试默认情况下工具抛异常会导致整个 Agent 失败。建议在工具内部做异常捕获返回友好的错误信息让模型自行调整。过度依赖模型判断Agent 的决策质量取决于底层模型能力。复杂任务建议用更强的模型如 gpt-4o简单任务用轻量模型以节省成本。忽略安全校验如果 Agent 能调用执行类工具如执行 Shell 命令务必做好权限控制和输入校验防止注入攻击。11. 总结回到开篇的问题LangChain 到底帮你干了什么活答案是它把 AI 应用开发中的重复性、易错性、与业务无关的胶水工作全部抽象成了标准组件。你不再需要手写各家模型的 SDK 适配、不再需要手工拼接提示词、不再需要自己维护对话历史、不再需要为工具调用设计协议、更不需要自己实现 Agent 的决策循环。你只需要专注于两件事定义好你的工具以及设计好你的提示词。剩下的编排工作交给 LangChain。希望本文的代码实战能帮你建立起对 LangChain 的整体认知。下一步建议你从自己的业务场景出发挑一个最简单的工具比如查天气、算日期把它接入 Agent跑通第一个端到端的智能体应用。

相关新闻

Redis桌面管理革命:Another Redis Desktop Manager完整实战指南

Redis桌面管理革命:Another Redis Desktop Manager完整实战指南

Redis桌面管理革命:Another Redis Desktop Manager完整实战指南 【免费下载链接】AnotherRedisDesktopManager 🚀🚀🚀A faster, better and more stable Redis desktop manager [GUI client], compatible with Linux, Windows, Ma…

2026/10/17 10:17:51 阅读更多 →
NsEmuTools终极指南:一键搞定任天堂Switch模拟器安装与管理

NsEmuTools终极指南:一键搞定任天堂Switch模拟器安装与管理

NsEmuTools终极指南:一键搞定任天堂Switch模拟器安装与管理 【免费下载链接】ns-emu-tools 一个用于安装/更新 NS 模拟器的工具 项目地址: https://gitcode.com/gh_mirrors/ns/ns-emu-tools 还在为复杂的NS模拟器配置而烦恼吗?每次想玩Switch游戏…

2026/10/19 21:03:32 阅读更多 →
现在不启动AI转型,半年后将丧失客户响应权:基于Gartner 2024预警的3类生存级场景推演

现在不启动AI转型,半年后将丧失客户响应权:基于Gartner 2024预警的3类生存级场景推演

更多请点击: https://codechina.net 第一章:现在不启动AI转型,半年后将丧失客户响应权:基于Gartner 2024预警的3类生存级场景推演 Gartner 2024年《AI驱动的客户体验临界点报告》指出:当行业头部企业平均客户首次响应…

2026/10/18 10:40:07 阅读更多 →

最新新闻

AI平台选型指南:从通用对话到开源自部署的实战策略

AI平台选型指南:从通用对话到开源自部署的实战策略

1. 主流AI平台的全景地图与选型逻辑1.1 为什么现在聊“AI平台”比聊“AI模型”更实际过去一年我接触了不少团队,从几个人的小工作室到上百人的产品线,大家问得最多的问题早就不是“哪个模型最强”,而是“我该把活儿交给哪个平台”。这个转变很…

2026/10/20 21:33:02 阅读更多 →
Win11 25H2下WPS频繁未响应:一个从证据到方向的完整排查记录

Win11 25H2下WPS频繁未响应:一个从证据到方向的完整排查记录

先说结论:我遇到的这个“Win11 25H2 WPS 频繁未响应”问题,直到现在还没有一个确定的根因。但是经过几天反复测试和收集证据,基本可以锁定它并不是WPS软件自身单独惹的祸,而是系统底层和当前环境里某个驱动层组件有兼容性冲突。这…

2026/10/20 21:33:02 阅读更多 →
MCP / Agent / Skill 技术生态分类汇总:用 TaoToken 统一 Key 打通三类工具链

MCP / Agent / Skill 技术生态分类汇总:用 TaoToken 统一 Key 打通三类工具链

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 21:33:02 阅读更多 →
Claude账号防封全攻略:避开风控红线,让账号长期稳定

Claude账号防封全攻略:避开风控红线,让账号长期稳定

说来有点丢人,我在刚接触 Claude 的头两个月里,就亲眼看着身边三个朋友先后被提示账号异常,其中一个甚至用了不到三天就进小黑屋。那时候大家的第一反应都是"平台是不是疯了",但后来我对照着官方使用条款和自己的操作记…

2026/10/20 21:33:02 阅读更多 →
AI漫剧工业化生产流水线:人机协作边界与六层技术栈实战

AI漫剧工业化生产流水线:人机协作边界与六层技术栈实战

1. 项目概述:这不是“白嫖教程”,而是一套可落地的AI漫剧工业化生产流水线“AI漫剧制作全教程”这个标题,乍看是知识付费圈常见的流量钩子,但真正拆开来看,它背后指向的是一整套正在快速成型的数字内容工业化新范式。我…

2026/10/20 21:33:01 阅读更多 →
FPGA开发者必看:SRIO协议从IP配置到数据收发的完整调试指南

FPGA开发者必看:SRIO协议从IP配置到数据收发的完整调试指南

简介:面向FPGA与嵌入式系统开发者,这套Xilinx SRIO使用例程围绕Serial RapidIO高速串行互连协议在Spartan6系列中的实际部署,系统覆盖硬核配置、端口速率选择、测试平台搭建与仿真验证,解决高带宽低延迟场景下的接口设计与调试难题…

2026/10/20 21:31:57 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →