2026 企业级 AI 应用落地盘点:从对话到 Agent 的 6 类场景实测(含 Spring AI 多模型与知识库 RAG)
🌐 演示地址:https://ruoyioffice.com | 📦 源码1·GitHub:ruoyi-office | 📦 源码2·GitCode:ruoyi-office | 📦 源码3·Gitee:ruoyi-office | 💬 微信:17156169080(备注「RuoYi Office」)
2026 年,企业不再问「要不要上 AI」,而是问「先上哪一类、怎么控成本、怎么和现有 OA/BPM/HRM 打通」。外挂一个 ChatGPT 账号,解决不了制度问答、流程生表、权限边界;钉钉智能助手好上手,却难把企业私有接口与审批上下文吃透。真正能落地的,往往是系统内嵌的 AI 中台:多模型可切换、知识库可溯源、工具可编排、工作流可配置。 本文按 6 类场景做实测盘点,并锚定 RuoYi Office(
yudao-module-ai)的真实实现路径。

▲ 六场景全景:① 多模型对话中台 → ② 企业知识库 RAG → ③ AI 写作助手 → ④ MCP/Tool 调用 → ⑤ AI 工作流(Tinyflow)与 FormCreate AI 生表 → ⑥ 多模态(绘图/音乐/思维导图);底层统一 Spring AI + 模型工厂 + 角色/权限收口
引言:企业 AI 落地,到底卡在哪?
多数团队不是「不会调 API」,而是踩在这几个坑上反复返工:
痛点一:模型绑定过死。代码里写死一家厂商 SDK,业务今天要 DeepSeek、明天要通义、后天要内网 Ollama,每次换模型都是改代码 + 发版。
痛点二:通用模型不懂企业资料。员工问「差旅住宿标准」,模型一本正经胡编;没有 RAG(检索增强生成),答案不可信、不可溯源。
痛点三:只会聊天,不会干活。查考勤、建工单、查库存需要调企业接口;没有 Tool/MCP,Agent 只是话术壳。
痛点四:能力散落,无法运营。对话、写作、绘图、工作流各开一套后台,Key、配额、角色、审计无法统一。
| 现状 | 后果 |
|---|---|
| 单模型硬编码 | 换模型 = 改代码发版 |
| 无企业知识库 | 答不准、不可溯源 |
| 无工具调用 | AI 不能触达业务动作 |
| AI 能力外挂 | 权限/租户/审计割裂 |
| 只做对话 Demo | 无法进入审批/表单/流程场景 |
一句话结论:2026 的企业 AI,核心不是「再接一个聊天框」,而是把对话、检索、工具、工作流、多模态收敛成可运营的中台能力。
一、三种落地路径怎么选?
在展开 6 类场景前,先横向对比三条常见路径,避免一上来就选错架构。
| 维度 | 外挂 ChatGPT / 网页助手 | 钉钉等办公智能助手 | 一体化系统内嵌 AI 中台 |
|---|---|---|---|
| 上手速度 | 快(账号即用) | 快(组织内开通) | 中(需配 Key/模型) |
| 企业私有知识 | 弱(难控资料边界) | 中(依赖平台能力) | 强(自建 RAG + 权限) |
| 调企业内部接口 | 弱 | 中(开放平台/插件) | 强(MCP + 本地 Tool) |
| 与 OA/BPM 表单协同 | 弱 | 中 | 强(同系统同登录态) |
| 多模型切换 | 弱(绑定厂商) | 弱~中 | 强(工厂 + 配置表) |
| 数据与审计可控 | 弱(出域风险) | 中 | 强(私有化 + 操作日志) |
| 适合阶段 | 个人试用、灵感草稿 | 组织级轻量问答 | 生产级业务嵌入 |
选型建议:个人效率优先选外挂;组织协同优先选办公套件助手;要把 AI 嵌进审批、知识库、低代码表单、Agent 工具链,优先选系统内嵌中台。 RuoYi Office 走的是第三条路:AI 模块与系统用户、角色、租户、菜单同域,前端统一落在 views/ai。
二、场景 1:多模型对话中台
2.1 是什么
多模型对话中台,是把多家大模型(通义、DeepSeek、智谱、OpenAI、Ollama 等)抽象成统一「对话能力」,运营在后台配置 Key 与模型,业务侧只认 modelId,调用方不感知厂商差异。
2.2 企业能解决什么
- 同一租户内,客服用高性价比模型、研发用推理更强的模型。
- 涉密场景切到内网 Ollama,公网场景切云端,配置热切换。
- 对话历史、角色人设、温度/MaxTokens 可运营,而不是写死在 yml。
2.3 落地要点
- 平台枚举化:厂商清单集中管理,避免魔法字符串。
- Key 与模型分表:一把 Key 挂多个模型;换 Key 不影响模型元数据。
- 工厂缓存 ChatModel:按平台构建 Spring AI 标准接口并缓存。
- 角色绑定模型/知识库/工具:对话入口统一,能力按角色裁剪。
2.4 RuoYi Office 怎么做
后端以 AiPlatformEnum 枚举国内/国外平台(通义、文心、DeepSeek、智谱、星火、豆包、混元、硅基流动、MiniMax、Moonshot、百川、阶跃、OpenAI、Azure、Anthropic、Gemini、Ollama、Grok 等),由 AiModelFactoryImpl.getOrCreateChatModel 按平台 switch 构建并缓存 ChatModel。前端入口在 views/ai/chat 与 views/ai/model(模型、API Key、对话角色)。
2.5 常见坑
| 坑 | 表现 | 建议 |
|---|---|---|
| Key 写死配置文件 | 多租户无法各用各的 Key | Key 入库,按租户隔离 |
| 直接 new 厂商 SDK | 换模型改代码 | 统一走工厂 + Spring AI |
| 不做流式 | 长回答体验差 | 对话用 SSE/Flux 流式 |
| 上下文无限增长 | Token 爆、成本飙 | 按会话配置上下文条数 |
三、场景 2:企业知识库 RAG
3.1 是什么
RAG(Retrieval-Augmented Generation,检索增强生成)是:先从企业知识库检索相关片段,再把片段喂给大模型生成答案,解决「模型没读过你们制度」的问题。
3.2 企业能解决什么
- 制度/手册/FAQ 问答,答案可溯源到分段。
- 新人培训、客服话术、产品规格查询。
- 把「胡编」变成「有据可查」。
3.3 落地要点
- 三层模型:知识库(规则)→ 文档(原文)→ 分段(检索单元)。
- 切片策略可配置:语义切、Markdown-QA 切,忌一刀切固定长度。
- 向量检索 + 可选 Rerank:先召回再重排,提升准确率。
- 对话侧按角色召回:角色绑定
knowledgeIds,不是全局乱搜。
3.4 RuoYi Office 怎么做
分段检索在 AiKnowledgeSegmentServiceImpl.searchDocument:向量库 similaritySearch,有 Rerank 模型时先放大 topK 再重排过滤。对话发送时由 AiChatMessageServiceImpl.recallKnowledgeSegment 按角色绑定的知识库逐个召回,再拼进 Prompt。前端在 views/ai/knowledge(知识库/文档/分段/检索试跑)。
3.5 常见坑
| 坑 | 表现 | 建议 |
|---|---|---|
| 切块过大/过小 | 噪声大或语义碎 | 按文档类型选策略 + 调 maxTokens |
| 只靠向量相似度 | 问「住宿标准」召回「申请流程」 | 开启 Rerank + 调阈值 |
| 分段删了向量没删 | 召回幽灵内容 | 增删改同步 VectorStore |
| 答案无引用 | 用户不信任 | 前端展示命中分段与分数 |
四、场景 3:AI 写作助手
4.1 是什么
AI 写作助手是面向「给定原文/提纲 → 扩写、润色、续写、缩写」的通用生成能力,通常带写作类型、语气、长度等参数,并落库生成记录便于复用。
4.2 企业能解决什么
- 周报、通知、邮件草稿、活动文案的初稿提速。
- 统一语气与结构,降低「每人风格迥异」的沟通成本。
- 作为通用助手嵌入日常办公,而不是绑定单一业务单据。
4.3 落地要点
- 写作角色独立:系统消息与模型可单独配置。
- 流式输出:长文边生成边展示。
- 记录可回溯:原文、提示、生成结果入库。
- 边界说清楚:通用写作 ≠ 已内置某行业公文套红/版式引擎。
4.4 RuoYi Office 怎么做
AiWriteServiceImpl.generateWriteContent 会优先查找写作助手角色,取其 systemMessage 与绑定模型,构建 Prompt 后 chatModel.stream,完成后回写 generatedContent。前端在 views/ai/write。与公文模块无硬耦合:写作是通用助手;若要做「公文语体/红头模板/版式合规」,属于扩展方向(可在写作角色 system 提示 + 公文模板库上叠加),不宜宣传为「已内置公文 AI」。
4.5 常见坑
| 坑 | 表现 | 建议 |
|---|---|---|
| 把写作当公文系统 | 版式/套红/发文流程对不上 | 写作出草稿,公文走专用模块 |
| 无角色人设 | 输出风格飘 | 配置写作专用 ChatRole |
| 不同步落库 | 无法复盘与审计 | 生成前后都写库 |
五、场景 4:MCP / Tool 调用(大模型调企业接口)
5.1 是什么
MCP(Model Context Protocol,模型上下文协议)是标准化「大模型如何发现并调用外部工具」的协议;再配合本地 Function Tool,让模型从「只会聊天」升级为「能查能改」的 Agent。
5.2 企业能解决什么
- 「帮我查张三本月考勤」「创建一个会议室预约草稿」这类动作。
- 统一接入外部 MCP Server 与本系统工具,避免每个工具一套胶水。
- 按对话角色裁剪可用工具,收口权限边界。
5.3 落地要点
- 角色挂载工具:
toolIds+mcpClientNames。 - 统一成 ToolCallback:本地工具与 MCP 工具同一编排。
- 默认关闭 MCP:生产按需开启,避免误连不安全端点。
- 先只读后写操作:写接口必须鉴权、审计、可回滚。
5.4 RuoYi Office 怎么做
角色 DO 含 mcpClientNames;对话构建工具列表时,匹配 McpSyncClient 后用 SyncMcpToolCallbackProvider 取出回调并入 Prompt。配置侧 spring.ai.mcp.server/client.enabled 默认 false(见模块 application.yaml),避免未评估就暴露工具面。前端角色配置在 views/ai/model/chatRole,工具管理在 views/ai/model/tool。
5.5 常见坑
| 坑 | 表现 | 建议 |
|---|---|---|
| MCP 默认全开 | 意外连上示例 Server | 默认 false,显式开启 |
| 工具描述含糊 | 模型乱调工具 | 名称/参数/返回写清楚 |
| 写操作无二次确认 | 误删误改 | 高风险工具加人审/白名单 |
| 客户端名不匹配 | 工具装不上 | 注意 Client 命名拼接规则 |
六、场景 5:AI 工作流(Tinyflow)与 FormCreate AI 生表
6.1 是什么
AI 工作流是把「提示词 → LLM 节点 → 分支/变量」可视化编排并可测试执行的链路;FormCreate AI 生表是用自然语言生成/修改低代码表单规则(rule JSON),直接喂给表单设计器。
6.2 企业能解决什么
- 运营可拼「摘要 → 分类 → 生成回复」类轻量 Agent,不必每次找研发改代码。
- 业务人员用一句话生成请假/报销等表单骨架,缩短低代码建模时间。
- 把 AI 从「聊天窗口」推进到「可复用的流程资产」。
6.3 落地要点
- 工作流图(graph)持久化,LLM 节点绑定
llmId。 - 测试执行与正式发布分离,变量显式传入。
- 生表输出必须是设计器可解析的完整 JSON,禁止夹杂解释文字。
- UI 框架约定写死在系统提示(如 ant-design-vue),减少无效字段。
6.4 RuoYi Office 怎么做
工作流:AiWorkflowServiceImpl.testWorkflow 解析 graph 为 Tinyflow,对 llmNode 注入模型 Provider 后 executeForResult。前端在 views/ai/workflow。生表:AiFormCreateController 映射 /ai/form-create,系统提示要求只输出 {"rule":[...]} 的 fcRuleDiff,流式 SSE 返回。设计器侧对接该接口即可「对话改表」。
6.5 常见坑
| 坑 | 表现 | 建议 |
|---|---|---|
| 工作流无变量约定 | 节点拿不到输入 | 文档化变量字典 |
| 生表夹杂 Markdown 解释 | 设计器解析失败 | 强约束「只输出代码块」 |
| 一次生成过大表单 | 字段失控 | 分步生成 + 人工审字段名 |
| 把 AI 工作流当 BPM | 审批合规对不上 | 审批仍走 Flowable;AI 工作流做智能编排 |
七、场景 6:多模态(绘图 / 音乐 / 思维导图)
7.1 是什么
多模态能力覆盖文生图、音乐生成、思维导图结构化生成等,与文本对话共用「模型配置中台」,但调用的是 Image/音频等专用模型接口。
7.2 企业能解决什么
- 活动海报、产品示意草图、培训配图的快速出图。
- 品牌/活动 BGM 草稿(视商业授权与平台条款)。
- 会议纪要/项目拆解一键成脑图,便于分享对齐。
7.3 落地要点
- 平台枚举区分对话与多媒体(如 StableDiffusion、Midjourney、Suno)。
- 生成任务异步化,状态可查询。
- 内容安全与版权:企业场景要有审核与授权意识。
- 前端分模块,避免一个巨型页面堆所有能力。
7.4 RuoYi Office 怎么做
前端按能力拆分:views/ai/image(含 Dall·E / SD / Midjourney 等模块)、views/ai/music、views/ai/mindmap;模型仍走统一模型管理。工厂层除 ChatModel 外还提供 Image 等模型构建,保证「配置一套、能力多端」。
7.5 常见坑
| 坑 | 表现 | 建议 |
|---|---|---|
| 把演示图当生产素材 | 版权/品牌风险 | 明确授权与人工终审 |
| 同步阻塞等图 | 接口超时 | 任务表 + 轮询/回调 |
| 提示词无规范 | 出图不稳定 | 沉淀企业 Prompt 模板 |
八、后端核心实现(可直接对照源码)
下面三段代码对应「工厂切模型 → RAG 检索 → MCP 装工具」,是企业中台最常被问到的三块。
8.1 多模型工厂:按平台构建 ChatModel
AiModelFactoryImpl 用平台枚举做 switch,并对实例做单例缓存,避免每次对话重建客户端:
public ChatModel getOrCreateChatModel(AiPlatformEnum platform, String rawApiKey, String rawUrl) {
final String apiKey = resolveSpringPlaceholders(rawApiKey);
final String url = resolveSpringPlaceholders(rawUrl);
String cacheKey = buildClientCacheKey(ChatModel.class, platform, apiKey, url);
return Singleton.get(cacheKey, (Func0<ChatModel>) () -> {
switch (platform) {
case TONG_YI: return buildTongYiChatModel(apiKey);
case DEEP_SEEK: return buildDeepSeekChatModel(apiKey, url);
case ZHI_PU: return buildZhiPuChatModel(apiKey, url);
case OPENAI: return buildOpenAiChatModel(apiKey, url);
case OLLAMA: return buildOllamaChatModel(url);
// ... 其他平台
default: throw new IllegalArgumentException("未知平台: " + platform);
}
});
}上层业务只拿 ChatModel,换 DeepSeek / 通义 / Ollama 对调用方透明。
8.2 知识库检索:向量召回 + 可选 Rerank
searchDocument 先按知识库维度过滤做相似度检索;若启用 Rerank,则放大候选集再重排并按阈值过滤:
private List<Document> searchDocument(AiKnowledgeDO knowledge, AiKnowledgeSegmentSearchReqBO reqBO) {
VectorStore vectorStore = getVectorStoreById(knowledge);
Integer topK = ObjUtil.defaultIfNull(reqBO.getTopK(), knowledge.getTopK());
Double similarityThreshold = ObjUtil.defaultIfNull(
reqBO.getSimilarityThreshold(), knowledge.getSimilarityThreshold());
// 1. 向量检索(有 Rerank 时放大 topK)
int searchTopK = rerankModel != null ? topK * RERANK_RETRIEVAL_FACTOR : topK;
double searchSimilarityThreshold = rerankModel != null
? SIMILARITY_THRESHOLD_ACCEPT_ALL : similarityThreshold;
List<Document> documents = vectorStore.similaritySearch(SearchRequest.builder()
.query(reqBO.getContent()).topK(searchTopK)
.similarityThreshold(searchSimilarityThreshold)
.filterExpression(new FilterExpressionBuilder()
.eq(VECTOR_STORE_METADATA_KNOWLEDGE_ID, reqBO.getKnowledgeId().toString())
.build())
.build());
// 2. 可选 Rerank 重排并按阈值过滤
// ...
return documents;
}对话侧再通过 recallKnowledgeSegment 按角色 knowledgeIds 聚合召回,把片段包成 <Reference> 注入 Prompt。
8.3 MCP:按角色挂载 SyncMcpToolCallbackProvider
构建 Prompt 前,把本地 Tool 与 MCP 工具统一收集为 ToolCallback:
private List<ToolCallback> getToolCallbackListByRoleId(Long roleId) {
AiChatRoleDO chatRole = chatRoleService.getChatRole(roleId);
List<ToolCallback> toolCallbacks = new ArrayList<>();
// 1. 本地 toolIds → ToolCallbackResolver
// 2. mcpClientNames → SyncMcpToolCallbackProvider
if (CollUtil.isNotEmpty(mcpClients) && CollUtil.isNotEmpty(chatRole.getMcpClientNames())) {
chatRole.getMcpClientNames().forEach(mcpClientName -> {
String finalMcpClientName = mcpClientCommonProperties.getName() + " - " + mcpClientName;
mcpClients.forEach(mcpClient -> {
if (ObjUtil.notEqual(mcpClient.getClientInfo().name(), finalMcpClientName)) {
return;
}
ToolCallback[] mcpToolCallBacks =
new SyncMcpToolCallbackProvider(mcpClient).getToolCallbacks();
CollUtil.addAll(toolCallbacks, mcpToolCallBacks);
});
});
}
return toolCallbacks;
}配置提醒:模块内 MCP Server/Client 默认 enabled: false,上线前再按环境显式打开。
8.4 补充:FormCreate AI 生表的系统约束
/ai/form-create 用强约束 System Prompt,要求模型只产出设计器可解析的规则 JSON,避免「聊天废话」污染表单:
private static final String SYSTEM_MESSAGE = """
你是 FormCreate Pro 表单设计器助手。你需要根据用户需求修改或生成表单规则。
当前使用的 UI 框架是 ant-design-vue。请只输出一个 fcRuleDiff 代码块,不要输出其它解释。
代码块内容必须是完整的新表单 JSON,格式为 {"rule":[...]}。
rule 必须是 form-create 可直接解析的组件规则数组,字段名使用英文小驼峰,中文标题放在 title。
""";九、前端模块地图(views/ai)
PC 管理端把 AI 能力按场景拆页,便于权限菜单与运营配置一一对应:
| 目录 | 场景 | 典型能力 |
|---|---|---|
views/ai/chat | 多模型对话 | 会话、流式回复、角色切换 |
views/ai/knowledge | 知识库 RAG | 库/文档/分段/检索试跑 |
views/ai/write | 写作助手 | 扩写润色、生成记录 |
views/ai/workflow | AI 工作流 | Tinyflow 可视化与测试 |
views/ai/image | 绘图 | 多平台文生图 |
views/ai/music | 音乐 | 歌词/描述模式生成 |
views/ai/mindmap | 思维导图 | 文本 → 脑图结构 |
views/ai/model | 中台配置 | 模型、Key、角色、工具 |
技术栈侧:后端 Spring Boot 3.5 + Spring AI;前端 Vue3 + Vben Admin(Ant Design Vue)。AI 与 OA/BPM 同登录态、同权限体系,这是外挂 Chat 难以替代的一点。
十、技术亮点总结
| 设计要点 | 实现方式 | 价值 |
|---|---|---|
| 多平台统一 | AiPlatformEnum + AiModelFactoryImpl | 换模型不改业务代码 |
| RAG 可运营 | 知识库参数 + searchDocument / recallKnowledgeSegment | 答案可溯源 |
| Agent 工具链 | 角色 toolIds + mcpClientNames + SyncMcpToolCallbackProvider | 大模型能调企业能力 |
| MCP 默认关闭 | spring.ai.mcp.*.enabled: false | 降低误暴露风险 |
| AI 工作流 | Tinyflow + LLM 节点绑定 | 可视化编排轻量 Agent |
| AI 生表 | /ai/form-create 强约束 JSON | 加速低代码建模 |
| 多模态分治 | image/music/mindmap 分模块 | 能力清晰、权限可拆 |
| 写作边界清晰 | 通用助手,不硬绑公文 | 避免能力夸大 |
十一、快速体验
- 打开在线演示:https://ruoyioffice.com/web/(账号
admin/admin123)。 - 菜单进入 AI 大模型 → 先配 API Key 与对话模型(
model)。 - 建一个对话角色,绑定模型;可选绑定知识库 ID。
- 上传 1~2 份制度 PDF/Markdown,切片后在「检索试跑」验证召回。
- 打开对话,问制度相关问题,对照命中分段是否靠谱。
- 体验写作助手出一篇周报草稿(注意:这是通用写作,不是公文发文)。
- 有条件时开启 MCP Client,给角色挂
mcpClientNames,试一次只读查询类工具。 - 打开工作流或表单设计器 AI,感受「编排 / 生表」与纯聊天的差别。
| 仓库 | 地址 |
|---|---|
| GitHub | https://github.com/yuqing2026/ruoyi-office |
| GitCode | https://gitcode.com/zhouzhongyan/ruoyi-office |
| Gitee | https://gitee.com/yqzy1688/ruoyi-office |
本地可按文档启动单体后端(默认端口 48080)与 pnpm dev:antd 前端,重点验证 admin-api 下 /ai/** 接口。
常见问题(FAQ)
企业 AI 该先上对话,还是先上知识库 RAG?
多数团队应 对话中台与 RAG 一起上:没有统一对话入口,知识库难触达用户;没有 RAG,对话只是通用闲聊。建议第一期就做「1 个角色 + 1 个知识库 + 流式对话」。
MCP 默认关闭,生产环境怎么开?
在对应环境配置中把 spring.ai.mcp.client.enabled(及确需对外暴露时的 server)改为 true,配好 SSE 连接,再在对话角色里填写 mcpClientNames。建议先接只读工具,写操作单独鉴权与审计。
RuoYi Office 的 AI 写作能直接做公文发文吗?
不能等同。 写作助手是通用生成能力(views/ai/write),与公文发文/套红/版式无硬耦合。公文流程仍应走公文模块;写作可用于起草正文的扩展方向,需自行叠加语体提示与模板约束。
和外挂 ChatGPT、钉钉智能助手比,内嵌中台的最大优势是什么?
同系统权限与租户、可私有化部署、可挂企业知识库与 MCP 工具、可与低代码表单/流程编排协同。外挂适合个人效率;组织级生产落地更适合内嵌中台。
Spring AI 多模型切换需要发版吗?
按本方案:不需要为换模型发版。在后台维护 ai_api_key / ai_model,工厂按平台动态构建即可。新增从未支持过的厂商时,才需要扩展枚举与工厂分支。
结语
2026 企业 AI 的分水岭,不在「会不会调大模型」,而在 能否把对话、RAG、工具、工作流、生表、多模态收成可运营的中台,并与现有企业系统同域协同。外挂助手解决「能不能聊」;一体化内嵌中台解决「能不能在权限边界内办事」。
如果你的团队正从 Demo 走向生产,建议按本文 6 类场景做差距清单:先打通多模型与 RAG,再按需开 MCP 与工作流,写作与多模态作为效率增强,公文等强合规业务用专用模块承接。欢迎在评论区聊聊:你们现在卡在「答不准」还是「调不了接口」?
💡 想要体验 RuoYi Office 的强大功能?
🌐 在线演示:https://ruoyioffice.com/web/(账号 admin / admin123)
📦 源码仓库:GitHub | GitCode | Gitee
💬 技术咨询:添加微信 17156169080,备注「RuoYi Office」
⭐ 如果觉得不错,请给个 Star 支持一下!
