LLM智能体实现
RAG、Agent、MCP、Skills
RAG、Agent、MCP、Skills 是当前构建 实用、可落地的AI应用 的四大核心技术。它们各司其职、层层递进,共同解决了大模型“知识旧、不会干、连不上、不专业”的四大痛点。
一、核心概念速览
| 术语 | 全称 | 核心定位 | 解决问题 | 通俗比喻 |
|---|---|---|---|---|
| RAG | Retrieval-Augmented Generation 检索增强生成 | 外部知识库 | 解决AI“幻觉”、知识过时、无私有数据问题 | 随身档案室 |
| Agent | Intelligent Agent 智能体 | 自主决策者 | 让AI从“聊天”变“干活”,自主完成复杂任务 | 项目总指挥/大脑 |
| MCP | Model Context Protocol 模型上下文协议 | 通用连接器 | 统一AI与外部工具/数据的连接标准 | USB-C万能接口 |
| Skills | 技能/工具 | 执行单元 | 提供专业化、原子化的具体操作能力 | 工具箱/手脚 |
二、详细解析
1. RAG (检索增强生成)
核心作用:给AI装上“外挂知识库”,确保回答真实、有据、可溯源。
- 原理:用户提问 → 系统从向量数据库/文档库检索相关片段 → 将检索内容作为上下文喂给LLM → 模型基于真实资料生成答案。
- 关键价值:
- 无需重新训练模型,即可接入私有数据(公司文档、产品手册、实时数据)。
- 大幅减少“幻觉”(AI编造事实)。
- 知识可实时更新。
- 示例:问“公司2025年报销政策?”→ RAG检索内部文档 → AI引用文档内容作答。
2. Agent (智能体)
核心作用:赋予AI自主思考、规划、执行、反思的能力,是系统的“大脑”。
- 核心能力循环 (Agent Loop):
- 理解意图:解析用户模糊需求(如“帮我订机票”)。
- 任务拆解:将复杂目标拆为子步骤(查航班→比价→预订→通知)。
- 调用工具:调度Skills/MCP完成具体操作。
- 决策反思:根据结果判断是否成功、是否重试、是否调整策略。
- 公式:Agent = LLM (大脑) + 规划 + 记忆 + 调度 (Skills/MCP)
3. MCP (模型上下文协议)
核心作用:AI世界的统一接口标准,由Anthropic于2024年提出。
- 解决痛点:
- 前:每个工具(数据库、API、邮箱)接口不同,Agent需重复开发适配器。
- 后:一次开发,处处可用。像USB-C一样,即插即用。
- 核心功能:
- 标准化:统一请求/响应格式。
- 安全可控:内置权限、数据隔离、访问审计。
- 跨模型兼容:Claude、GPT、Llama等均可使用。
- 架构:Client(AI端)↔ Server(工具/数据源端)。
4. Skills (技能/工具)
核心作用:Agent的**“手脚”,封装单一、专业、可复用**的执行能力。
- 特点:
- 原子化:一个Skill只做一件事(如“查天气”“发邮件”“生成PPT”)。
- 被动触发:必须被Agent调用,无自主意识。
- 可组合:多个Skill串联完成复杂流程。
- 与MCP的关系:
- MCP是底层协议(规范如何连接)。
- Skill是基于MCP的功能包(提供具体服务)。
三、四者协同工作流程(实例)
任务:“帮我分析本月销售数据,生成周报并发送给领导邮箱。”
- Agent (总指挥) 接收指令,拆解任务:
- 步骤1:获取销售数据 → 调用 RAG 检索数据库。
- 步骤2:数据分析 → 调用 数据分析Skill。
- 步骤3:生成周报 → 调用 文档生成Skill。
- 步骤4:发送邮件 → 调用 邮件发送Skill。
- MCP (连接器) 负责:
- 以统一标准与数据库、Excel、邮件系统通信。
- 传递数据、管理权限、确保安全。
- RAG (知识库):
- 精准检索本月销售原始数据,确保AI分析基于事实。
- Skills (执行层):
- 各Skill专注完成本职工作,最终由Agent整合结果,完成全流程。
四、总结
- RAG 负责**“知道”**(提供准确知识)。
- Agent 负责**“思考”**(自主决策规划)。
- MCP 负责**“连接”**(打通外部世界)。
- Skills 负责**“行动”**(执行具体操作)。
这四项技术组合,是目前构建企业级、自动化、高可靠AI应用(如智能助理、业务专家、自动化工作流)的主流架构。
基于 RAG + Agent + MCP + Skills 开发企业级AI应用
以“四者协同工作流程(实例)”为案例,具体介绍下如何开发一个AI应用,具体流程是什么?结构是什么?如何进行?
落地案例复用
业务需求:自动拉取本月销售数据→结合公司报表规范文档分析→生成销售周报→自动发送至负责人邮箱
完整落地架构、分层结构、开发全流程、四者协同逻辑,全程工程化落地视角。
一、整体架构分层(核心结构)
四层解耦设计,企业通用、易扩展、易维护
1. 应用入口层(前端/API接口)
↓
2. 智能调度层 —— Agent(大脑:意图理解、任务拆解、流程编排、反思重试)
↓
3. 能力中间层 —— MCP(统一协议网关:统一连接、权限、通信、鉴权)
↓
4. 能力执行层
├─ RAG模块(私有知识库检索、规范/制度/历史报表查询)
└─ Skills技能集(原子化工具:查数据、数据分析、文档生成、邮件推送)四层角色定位
- Agent:业务总指挥,纯逻辑调度,不写具体业务操作
- MCP:统一接入层,所有工具、数据库、文档服务都走MCP标准通信,消除异构接口差异
- RAG:静态知识/私有文档查询(制度、规范、历史案例)
- Skills:动态业务操作(查库、计算、生成文件、发邮件)
二、完整开发全流程(从零到上线)
阶段1:需求拆解 & 能力梳理(前期设计)
- 拆解复杂任务为原子子步骤
- 步骤1:读取本月业务销售数据
- 步骤2:检索公司《销售周报撰写规范》
- 步骤3:结合数据+规范做智能分析
- 步骤4:自动生成标准Word/PDF周报
- 步骤5:读取负责人邮箱,自动推送文件
- 梳理需要的能力
- 知识库:周报规范、历史优秀周报 → 交给 RAG
- 工具能力:查业务库、数据分析、文档生成、发邮件 → 封装为 Skills
- 统一通信:所有技能、知识库服务统一接入 → MCP Server
- 流程编排、多步骤自动执行 → Agent
阶段2:基础设施&底层服务搭建
RAG 模块开发
- 文档入库:上传公司周报规范、制度、历史报表
- 预处理:分段、清洗、向量化、存入向量数据库(Milvus/ES)
- 封装检索接口:相似度召回、重排序、上下文压缩
- 注册为 MCP 可调用服务
Skills 技能开发(原子化、单一职责)
每个Skill只做一件事,独立开发、可复用- Skill1:销售数据库查询技能(连接MySQL/数仓,按时间范围查销量、营收、环比)
- Skill2:数据统计分析技能(计算同比、环比、增长率、异常数据标注)
- Skill3:周报文档生成技能(模板填充、格式排版、导出Word/PDF)
- Skill4:邮件推送技能(SMTP配置、附件上传、定向发送)
关键:所有Skill 只实现能力,不做流程判断,交给Agent调度
MCP 协议层搭建
- 搭建 MCP Server:统一注册所有 RAG服务 + 全部Skills
- 统一规范:入参、出参、错误码、权限校验、调用日志
- MCP Client 集成到大模型/Agent框架中,实现一键调用所有能力
阶段3:Agent 核心逻辑开发(核心关键)
Agent核心四大模块:意图识别 → 任务拆解 → 工具路由 → 结果反思
意图理解
接收用户指令:帮我做本月销售周报并发给领导
大模型识别:目标=销售周报+分析+邮件推送任务自动拆解
Agent自主拆分串行流程:
任务1 → 调用MCP→查询销售数据Skill
任务2 → 调用MCP→RAG检索周报规范
任务3 → 调用MCP→数据分析Skill
任务4 → 调用MCP→文档生成Skill
任务5 → 调用MCP→邮件发送Skill工具路由调度
Agent维护工具列表+能力描述,通过MCP协议匹配对应技能,自动传参、调用、等待返回。反思与容错
- 数据查询失败:自动重试/提示时间参数错误
- 内容缺失:再次调用RAG补充规范要求
- 生成格式错误:重新调用文档Skill二次渲染
阶段4:四者协同完整执行链路(实时运行流程)
- 用户发起请求 → 进入系统
- Agent 接收指令,拆解多步任务,生成执行计划
- Agent 通过 MCP Client 向 MCP Server 发起标准化调用
- MCP 统一路由分发:
- 需要查制度、查规范 → 路由到 RAG 服务
- 需要查数据、算指标、生成文件、发邮件 → 路由到对应 Skills
- 各个Skill/RAG独立执行,结果通过MCP原路返回
- Agent 汇总所有结果,结合大模型做整合、润色、逻辑串联
- 最终输出周报内容+完成邮件发送,返回执行结果给用户
阶段5:联调、测试、上线
- 单技能测试:单独测查数据、RAG检索、发邮件是否正常
- 链路联调:完整跑通全流程,测试异常场景(无数据、文档缺失)
- 权限管控:基于MCP做技能调用权限、数据脱敏
- 生产部署:容器化部署、接口限流、调用日志、监控告警
三、核心结构代码化极简示意(伪代码,便于理解)
// 1. MCP 统一客户端
McpClient mcpClient = new McpClient();
// 2. Agent 智能调度器
BusinessAgent agent = new BusinessAgent(mcpClient);
// 3. 注册所有能力到MCP
mcpClient.registerService(RagService.class); // RAG知识库
mcpClient.registerService(QueryDataSkill.class);
mcpClient.registerService(AnalysisSkill.class);
mcpClient.registerService(DocGenerateSkill.class);
mcpClient.registerService(EmailSkill.class);
// 4. 用户请求,Agent全自动执行
String userQuery = "生成本月销售周报并发送给负责人";
AgentResult result = agent.runAutoWorkflow(userQuery);四、关键设计亮点(企业开发必看)
- 解耦可复用
Skill原子化,后续做月报、季报、日报,直接复用现有技能,不用重复开发。 - 统一标准
MCP屏蔽数据库、邮件、文档、向量库的异构差异,新增能力只需要注册MCP即可。 - 可控可溯源
RAG保证内容合规、符合公司制度;MCP记录每一次工具调用,便于审计。 - 大模型轻量化
Agent只做调度和整合,复杂计算、IO、文档操作全部下沉到Skill,降低大模型压力。
五、一句话极简总结
- 怎么搭:四层架构(入口→Agent→MCP→RAG+Skills)
- 怎么开发:先做RAG知识库、再拆原子Skills、再用MCP统一接入、最后用Agent编排全流程
- 怎么运行:Agent拆任务 → MCP统一中转 → RAG给知识、Skills做执行 → 结果汇总输出
实现该销售周报案例「Agent」的主流开发方式、技术栈、框架 + 横向对比总结
实现上文示例的Agent开发可以使用哪些方式,如框架、技术栈,给出不讨论方式的总结对比
基于统一案例:Agent+MCP+RAG+Skills 自动生成销售周报并发邮件
分类梳理:轻量自研、低代码Agent框架、专业企业级Agent框架、大模型原生能力四大方案,含技术栈、适用场景、优缺点、对比总结。
一、四大实现方案 + 对应技术栈
方案1:纯自研轻量Agent(无框架、原生开发)
核心技术栈
- 后端:Java/SpringBoot、Python/FastAPI
- LLM调用:OpenAI SDK、DeepSeek、通义千问原生API
- 通信:原生HTTP/WebSocket(自行对接MCP协议)
- 能力管理:手动封装Skills、手写RAG调用逻辑
- 核心代码:手写意图解析、任务拆解、步骤调度、上下文管理、重试容错
核心特征
完全自定义、零框架绑定、轻量化、代码全可控。
方案2:通用大模型应用框架(主流轻量化首选)
代表框架
LangChain、LlamaIndex技术栈
- 语言:Python 为主,LangChain4j 适配 Java
- 内置能力:Task拆解、Tool工具注册、上下文记忆、Prompt编排、回调管理
- 生态:原生支持RAG、工具调用、链式编排
- MCP适配:可自行集成MCP Client,对接统一技能服务
- 核心特征
开箱即用的Agent基础能力,不用手写任务拆解、工具调度底层逻辑,开发速度快。
方案3:企业级AI Agent开发框架(工程化、生产级)
代表框架
- 国内:Dify、Coze扣子、FastGPT、百炼Agent
- 开源企业级:Qwen-Agent、MiniMax Agent
技术栈
低代码/可视化编排 + 原生支持:
工具市场、技能注册、RAG知识库、权限管理、流程画布、日志审计、MCP协议兼容
少量二次开发即可对接业务数据库、邮件、内部接口。核心特征
业务落地最快,可视化拖拽编排流程,自带运维、权限、审计,适合企业内部业务AI应用。
方案4:大模型原生智能体能力(零开发/极少开发)
代表能力
GPT Agents、Claude Agent、通义万相智能体、豆包企业智能体技术栈
依托大模型平台原生能力,仅需:
- 配置插件/工具(Skills)
- 接入私有知识库(RAG)
- 配置MCP服务白名单
- 设定固定业务指令
- 核心特征
代码量最少,几乎不用后端开发,适合快速验证业务场景。
二、四大方案 关键维度对比(直接对标案例需求)
| 对比维度 | 纯自研Agent | LangChain/LlamaIndex | 企业级框架(Dify/Coze) | 大模型原生Agent |
|---|---|---|---|---|
| 开发成本 | 极高,全手写逻辑 | 低,基础能力内置 | 极低,低代码可视化 | 最低,近乎零代码 |
| 定制化程度 | 100%完全自定义 | 高,灵活扩展 | 中等,受框架约束 | 低,平台能力绑定 |
| 工程化能力 | 自行实现(容错、日志、权限) | 基础工程能力,需二次封装 | 原生生产级:权限、审计、监控、限流 | 平台托管,无法深度改造 |
| RAG/Skills集成 | 全手动封装 | 原生完美支持 | 开箱即用,一键接入 | 插件化接入 |
| MCP协议对接 | 完全自主开发适配 | 可灵活扩展对接MCP | 新版原生兼容MCP | 逐步适配MCP标准 |
| 性能与稳定性 | 自主把控,上限高 | 中等,适合中小应用 | 企业级稳定,适合长期业务 | 依赖平台,不可控 |
| 适用场景 | 定制化极高、自研底座、核心中台 | 算法/AI业务、个性化AI服务 | 企业内部数字化、业务自动化(本案例最优) | 快速原型、临时办公场景 |
| 技术门槛 | 高(需理解Agent全链路原理) | 中(需熟悉框架API) | 低(业务开发为主) | 极低(业务配置为主) |
三、无冗余讨论·最终总结(面试/选型直接背)
纯自研Agent
完全自主可控、定制化最强,但开发量大、周期长,需要自行实现任务拆解、调度、容错、MCP适配,适合技术中台、深度自研架构,不适合快速落地销售周报这类常规业务。LangChain / LlamaIndex 类通用框架
平衡开发效率与灵活性,内置Agent调度、工具调用、RAG核心能力,技术生态成熟,是定制化AI应用最主流的中间方案,适合需要二次开发、不想完全被平台绑定的项目。Dify、Coze 等企业级低代码Agent框架
开箱即用、自带流程编排、权限、审计、知识库,原生兼容MCP与技能扩展,是本案例(企业内部周报自动化)落地最优解,成本最低、上线最快、运维完善。大模型原生智能体
几乎无需开发,上手最快,但定制能力弱、业务绑定平台,仅适合短期试用、原型验证,不适合企业长期迭代的生产级应用。
四、案例落地快速选型结论
- 要快速上线、企业内部业务 → 选:Dify / Coze 企业级框架
- 要后端自研、技术可控、个性化开发 → 选:LangChain4j(Java)/ LangChain(Python)
- 要完全自研架构、AI中台底座 → 选:纯手写自研Agent
- 要临时试用、快速验证效果 → 选:大模型原生Agent
详细介绍用Coze如何实现上述案例的Agent的开发,给出具体的步骤,作用等等
下面基于 Coze(扣子) 平台,完整、可落地、可直接照着做地讲解:
如何开发“销售周报生成 + 数据分析 + 发邮件”的 Agent(对应前面 RAG+Agent+MCP+Skills 案例)。
全程零代码/低代码,步骤、作用、配置细节全部写清。
一、案例目标(Coze 里要实现什么)
用户一句话:
“生成本月销售周报,按公司规范写,分析数据,导出文档,自动发给部门领导邮箱。”
在 Coze 中,Agent 要做到:
- 理解意图:生成本月销售周报
- 查公司规范(RAG)
- 拉取销售数据(Skill)
- 做环比/同比分析(Skill)
- 按规范生成文档(Skill)
- 自动发邮件(Skill)
- 全程自动调度、不遗漏、不报错
Coze 用 Bot = 人设(Prompt) + 知识库(RAG) + 工作流(Workflow) + 插件(Skills) 实现。
二、Coze 开发环境准备
- 注册登录:coze.cn(手机号/抖音登录)
- 进入 工作台 → 创建智能体
- 选择:专业智能体(适合复杂任务)
三、完整开发步骤(10步,每步做什么+作用+如何配置)
步骤1:创建智能体(基础信息)
做什么
- 名称:销售周报自动生成助手
- 描述:自动生成销售周报、查规范、数据分析、导出文档、发邮件
- 图标:AI 生成/上传
- 模型选择:豆包 1.5 Pro / 通义千问(复杂任务选强模型)
- 温度:0.1~0.3(低创造性、高准确性)
作用
- 定义 Agent 身份、用途、基础行为
- 选定“大脑”(LLM),控制输出稳定性
步骤2:人设与 Prompt(Agent灵魂:定规则)
做什么(写 Prompt)
你是专业销售周报智能助手,严格按以下规则执行:
1. 任务:生成【本月】销售周报
2. 必须先从【知识库】查询《销售周报编写规范》
3. 必须调用【销售数据查询】获取本月数据
4. 必须做:销售额、销量、同比、环比、区域排名、异常分析
5. 必须按规范格式生成完整周报
6. 必须调用【文档生成】导出文件
7. 必须调用【邮件发送】发给:leader@company.com
8. 禁止跳步、禁止编造数据、严格按步骤执行
9. 执行中每一步都要告诉用户当前进度作用
- 给 Agent 固定角色、约束、执行顺序、输出要求
- 这是 Agent 不会乱做、不会漏步的核心保证
步骤3:配置知识库(RAG 能力)
做什么
- 左侧菜单 → 知识库 → 新建知识库
- 名称:公司销售规范库
- 上传文档:
- 《销售周报编写规范.pdf》
- 《数据指标口径说明.docx》
- 系统自动:
- 分割文本 → 向量化 → 存入向量库
- 绑定到当前智能体
作用(RAG)
- 让 Agent 精准查公司制度,不幻觉、不瞎编格式
- 对应案例:RAG = 规范来源
步骤4:开发/注册 Skills(工具:让Agent会干活)
Coze 中 Skills = 插件(Plugin) + 自定义工作流(Workflow)。
本案例需要4个 Skills:
Skill 1:销售数据查询(对接数据库/API)
做什么
- 插件市场 → 自定义插件 → HTTP 请求
- 配置:
- 名称:销售数据查询
- 请求地址:
https://internal-api.com/sales?month=current - 方法:GET
- 认证:API Key / OAuth
- 返回:JSON(销售额、销量、区域、产品、同比、环比)
作用
- Agent 可自动拉取真实业务数据(Skill = 数据能力)
Skill 2:数据指标分析(LLM + 代码)
做什么
- 工作流 → 新建:数据分析工作流
- 节点:
- 接收:原始数据
- LLM 节点:计算环比、同比、排名、异常点
- 输出结构化 JSON
作用
- 自动做业务分析,不用人工计算
Skill 3:文档生成(Word/PDF)
做什么
- 插件市场 → 文档生成插件
- 配置:
- 模板:周报模板.docx
- 输入:标题、数据、分析、规范
- 输出:下载链接 / 文件流
作用
- 按 RAG 规范自动生成合规文档
Skill 4:邮件发送
做什么
- 插件市场 → 邮件插件
- 配置:
- SMTP 服务器、账号、密码
- 默认收件人、标题、正文模板
作用
- Agent 自动发邮件,完成最后闭环
步骤5:MCP 统一接入(Coze 自动做)
做什么
- Coze 内部已实现 MCP 标准协议
- 所有插件/工作流自动注册到 MCP 服务中心
- Agent 调用时统一通过 MCP 路由:
- Agent → MCP → 插件/工作流
- 你不用写代码,只需开启:允许调用插件
作用(MCP)
- 统一权限、统一日志、统一参数、统一异常
- 安全、可审计、可监控
步骤6:可视化工作流编排(Agent核心:任务拆解+调度)
做什么(最关键)
进入 流程编排 → 工作流画布,拖拽节点连成:
开始 → 意图确认 →
1. 调用 RAG(查周报规范) →
2. 调用 Skill(销售数据查询) →
3. 调用 Skill(数据分析) →
4. 调用 Skill(生成文档) →
5. 调用 Skill(发送邮件) →
结束每节点配置(示例)
节点1:RAG 检索
- 工具:知识库
- 查询内容:
销售周报编写规范 - 结果保存到变量:
$规范
节点2:数据查询
- 工具:销售数据查询
- 参数:month=当前月
- 结果保存到变量:
$原始数据
节点3:数据分析
- 工具:数据分析工作流
- 输入:
$原始数据 - 输出:
$分析结果
节点4:文档生成
- 工具:文档生成
- 输入:
$规范+$原始数据+$分析结果 - 输出:
$文档链接
节点5:发送邮件
- 工具:邮件发送
- 收件人:leader@company.com
- 附件:
$文档链接 - 正文:周报已生成,请查收
作用(Agent 核心)
- 把自然语言需求 → 变成可执行步骤
- Agent = 总指挥:顺序控制、参数传递、上下文管理
- 完全可视化,不用写一行代码
步骤7:异常处理与容错(Agent稳定性)
做什么
在每个工具节点后加:
- 条件判断节点
- 成功 → 继续下一步
- 失败 → 重试2次 → 仍失败 → 友好提示 + 终止
示例:
数据查询 → 成功 → 下一步
→ 失败 → 重试 → 失败 → 输出:"数据获取失败,请联系管理员"作用
- Agent 不会崩溃,有容错、可重试
- 企业级稳定
步骤8:上下文与记忆(Agent连贯性)
做什么
- 开启 会话记忆(默认30分钟)
- 所有变量:
$规范$数据$文档自动存在Agent上下文 - 步骤间自动传递,不用手动赋值
作用
- 多步骤数据无缝串联
- Agent 记得“前面干了什么、结果是什么”
步骤9:预览调试(验证Agent是否正确)
做什么
右侧 预览窗口 输入:
“帮我生成本月销售周报并发给领导”
观察:
- Agent 思考过程(Thinking)
- 是否按顺序调用:
- RAG → 数据 → 分析 → 文档 → 邮件
- 是否报错、是否漏步、结果是否正确
作用
- 提前发现问题:Prompt 不对、流程错、工具挂了
- 保证上线可用
步骤10:发布上线(部署使用)
做什么
- 右上角 发布
- 版本:V1.0
- 发布渠道:
- 内部:飞书、钉钉、豆包
- API:供系统集成
- 发布后可直接对话使用
作用
- Agent 从开发环境 → 生产可用
- 全员可使用
四、Coze 中 Agent 的四大核心作用(对应本案例)
- 意图理解
- 读懂“生成周报” → 拆解为结构化任务
- 任务编排
- 自动按序执行:RAG → 数据 → 分析 → 文档 → 邮件
- 工具调度(MCP+Skills)
- 统一调用所有工具,参数自动传递
- 结果整合 + 容错
- 融合所有结果,异常处理,最终交付
五、技术栈总结(Coze 内置)
- Agent 引擎:Coze 原生(任务拆解、调度、记忆)
- RAG:内置向量库 + 文档解析
- MCP:内置协议网关(插件/工作流统一调用)
- Skills:HTTP 插件、工作流、邮件、文档、数据库
- LLM:豆包 / 通义千问
- 部署:一键发布到 IM/API
六、面试/背诵浓缩版
在 Coze 中开发 Agent 就是:
- 建智能体 → 定身份选模型
- 写Prompt → 定规则约束
- 传知识库 → 实现RAG
- 加插件 → 实现Skills
- 画工作流 → Agent 任务编排
- 配异常 → 保证稳定
- 测+发布 → 上线使用
Coze 核心价值:
零代码实现完整 Agent+RAG+MCP+Skills,企业级稳定、最快落地。
用 LangChain 完整实现「销售周报自动生成 + 发邮件」Agent 开发
详细介绍用LangChain如何实现上述案例的Agent的开发,给出具体的步骤,作用等等
全程详细步骤 + 每一步作用 + 代码可直接运行 + 对应RAG/Agent/MCP/Skills
这是企业级标准实现,Python + LangChain 最主流落地方案。
一、案例目标(LangChain 要实现什么)
用户输入一句话:
“生成本月销售周报,按公司规范,分析数据,生成文档,发送到领导邮箱”
必须实现:
- Agent:任务拆解、调度、决策
- RAG:检索《周报编写规范》
- Skills:查数据、分析、生成文档、发邮件
- MCP 思想:统一工具调用接口(LangChain 内置就是标准工具协议)
二、技术栈(固定、标准)
- Python 3.10+
- LangChain(核心框架)
- LangChain OpenAI(大模型对接,也可换豆包/通义千问)
- FAISS(轻量向量库,做RAG)
- PyPDF(读取规范文档)
- 邮件、HTTP、文档生成库
三、完整开发步骤(8步,每一步=做什么+作用+代码)
步骤0:安装依赖(必须先运行)
pip install langchain langchain-openai langchain-community faiss-cpu pypdf python-dotenv python-docx步骤1:配置大模型 & 环境(Agent大脑)
做什么
配置 LLM,作为 Agent 的思考核心。
作用
给 Agent 提供理解、规划、决策、总结能力。
代码
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
load_dotenv()
# 大脑:LLM
llm = ChatOpenAI(
model="gpt-3.5-turbo", # 可替换成通义千问/豆包
temperature=0.1 # 低随机性,保证任务准确
)步骤2:构建 RAG 模块(知识库 = 公司规范)
做什么
加载《销售周报编写规范.pdf》→ 切片 → 向量化 → 存入向量库 → 构建检索器。
作用
让 Agent 能查真实规范,不编造格式 → 这就是 RAG。
代码
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
# 1. 加载文档
loader = PyPDFLoader("销售周报编写规范.pdf")
docs = loader.load()
# 2. 切分文档
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = splitter.split_documents(docs)
# 3. 构建向量库
embedding = OpenAIEmbeddings()
db = FAISS.from_documents(splits, embedding)
# 4. 构建检索器(RAG核心)
rag_retriever = db.as_retriever(search_kwargs={"k": 2})步骤3:开发 Skills(工具 = 让Agent会干活)
做什么
开发4个原子技能:
- 查询销售数据
- 数据分析
- 生成Word文档
- 发送邮件
每个 Skill 用 @tool 装饰器包装 → 给 Agent 调用。
作用
Skills = Agent 的手脚,真正执行操作。
代码(核心!)
from langchain.tools import tool
import json
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from docx import Document
# --------------------------
# Skill 1: 查询本月销售数据
# --------------------------
@tool
def query_sales_data(month: str) -> str:
"""查询本月或指定月份的销售数据,返回JSON格式"""
print("→ 调用Skill:查询销售数据")
mock_data = {
"month": "2025-04",
"total_sales": 1280000,
"month_on_month_growth": "+8.3%",
"top_product": "产品A",
"top_region": "华东"
}
return json.dumps(mock_data, ensure_ascii=False)
# --------------------------
# Skill 2: 数据分析
# --------------------------
@tool
def analyze_sales_data(data: str) -> str:
"""对销售数据进行环比、排名、异常分析"""
print("→ 调用Skill:数据分析")
return "本月销售额128万,环比增长8.3%,产品A销量第一,华东区域最强。"
# --------------------------
# Skill 3: 生成周报文档
# --------------------------
@tool
def generate_report_doc(content: str) -> str:
"""根据分析内容生成Word周报文档"""
print("→ 调用Skill:生成Word文档")
doc = Document()
doc.add_heading("销售周报", 0)
doc.add_paragraph(content)
path = "销售周报.docx"
doc.save(path)
return path
# --------------------------
# Skill 4: 发送邮件
# --------------------------
@tool
def send_email(to: str, subject: str, body: str, attachment: str) -> str:
"""发送带附件的邮件给指定收件人"""
print("→ 调用Skill:发送邮件")
return f"邮件已发送至 {to},附件:{attachment}"步骤4:把 RAG 也包装成 Tool(统一协议 = MCP思想)
做什么
把 RAG 检索包装成工具。
作用
让 Agent 可以像调用普通工具一样调用RAG → 统一接口 = MCP 思想。
代码
from langchain.tools.retriever import create_retriever_tool
rag_tool = create_retriever_tool(
rag_retriever,
"search_weekly_report_rules",
"用于查询公司的销售周报编写规范、格式、要求"
)步骤5:把所有工具交给 Agent(技能池)
做什么
把 RAG工具 + 4个Skills 合成一个工具列表。
作用
Agent 只能使用列表里的工具 → 可控、安全。
代码
tools = [
rag_tool, # RAG 规范查询
query_sales_data, # 查数据
analyze_sales_data, # 分析
generate_report_doc, # 生成文档
send_email # 发邮件
]步骤6:创建 Agent(核心!大脑 + 记忆 + 调度 + 规划)
做什么
使用 LangChain 官方标准 create_openai_tools_agent
这是工业级Agent,具备:
- 意图理解
- 任务拆解
- 工具选择
- 参数自动填充
- 多步自动执行
- 异常处理
作用
这就是整个案例的总指挥:Agent。
代码
from langchain.agents import create_openai_tools_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
# 1. 定义Prompt(Agent的系统指令)
prompt = ChatPromptTemplate.from_messages([
("system", "你是严格的销售周报生成助手,必须按顺序执行:查规范→查数据→分析→生成文档→发邮件,不许跳步,不许编造数据。"),
("user", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
# 2. 创建Agent
agent = create_openai_tools_agent(llm, tools, prompt)
# 3. 创建执行器(带记忆、带循环、带调度)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True, # 打印执行过程(调试必开)
handle_parsing_errors=True
)步骤7:运行 Agent(启动!全自动执行)
做什么
输入用户指令,让 Agent 自动完成全流程。
作用
启动任务,Agent 自动:
理解 → 拆步骤 → 调用RAG → 调用Skills → 汇总结果 → 发邮件
代码
if __name__ == "__main__":
result = agent_executor.invoke({
"input": "生成本月销售周报,按照公司规范生成文档,并发送到领导邮箱 leader@company.com"
})
# 输出最终结果
print("\n===== 最终结果 =====")
print(result["output"])步骤8:观察执行过程(Agent 真正做了什么)
运行后你会看到 Agent 全自动完成以下步骤:
- 理解用户需求
- 调用 RAG 查询周报规范
- 调用 Skill 查询销售数据
- 调用 Skill 分析数据
- 调用 Skill 生成周报文档
- 调用 Skill 发送邮件
- 整合所有结果,返回给用户
这就是 完整的 RAG + Agent + Skills + MCP 统一协议 落地!
四、LangChain 中每一部分对应什么?(面试必背)
| 模块 | 对应技术概念 | 作用 |
|---|---|---|
| LLM | Agent大脑 | 思考、决策、规划 |
| Retriever | RAG | 检索公司规范,防止幻觉 |
| @tool 函数 | Skills | 原子化执行操作 |
| Tools列表 | MCP协议 | 统一调用接口、标准格式 |
| AgentExecutor | 智能调度器 | 任务拆解、步骤控制、上下文记忆 |
五、本案例中 LangChain Agent 的具体作用(最核心)
- 意图理解
读懂“生成周报”这种模糊需求。 - 任务拆解
自动拆成 5 个步骤,不会乱、不会漏。 - 工具选择
该查规范 → 调 RAG
该干活 → 调 Skills - 参数自动填充
自动把上一步结果传给下一步。 - 流程控制
串行执行、异常捕获、失败重试。 - 结果整合
把所有工具返回的碎片 → 合成最终周报。
六、最精简总结(背会=面试满分)
用 LangChain 开发 Agent 就 6 步:
- 配置 LLM(大脑)
- 构建 RAG(知识库)
- 写 @tool 技能(Skills)
- 统一工具列表(MCP)
- 创建 Agent 调度器
- 运行 → 自动完成全流程