AI 功能设计
这篇解决什么
大模型怎么分层:密钥和模型是主数据,对话 / 知识库 / 写作是业务。读完先对模块边界和表,再进聊天、知识库、写作等功能篇。各厂商只是 AiPlatformEnum 的一个 platform 值,不要按厂商各画一套 ER。
默认端口 48080,前缀 /admin-api。工程启动见 快速开始。
业务流程及架构
AI 自己不算流程引擎,没有 processDefinitionKey。业务只选模型。真正调厂商的是密钥行上的 platform 和 url。
示意图:先密钥后模型。对话、知识库、写作都挂同一套模型,不按厂商拆表。
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 密钥 / 模型 | ai_api_key、ai_model | 控制台 API 密钥 2761、模型 2767 |
| 对话 | ai_chat_conversation / ai_chat_message | AI 聊天对话 |
| 知识库 | ai_knowledge / 文档 / 段落 | AI 知识库 |
| 写作 | ai_write | AI 写作助手 |
| 绘画 / 音乐 | ai_image / ai_music | AI 绘画创作、AI 音乐创作 |
| 工具 / 工作流 | ai_tool / ai_workflow | AI 工具、AI 工作流 |
能力范围
AI 属于全功能版能力。OA 版默认没有 /ai 菜单。
先密钥后模型
ai_model.keyId 指向 ai_api_key。AiModelTypeEnum:1 对话,2 图片,5 向量。聊天至少要一条启用的对话模型。知识库还要向量模型和 spring.ai.vectorstore。
数据表 ER
主干表按已有篇和 DO 画出。各厂商接入篇只换 platform 字符串,不另造表。绘画、音乐、导图从表不进这张图。
示意图:密钥带 platform。模型挂密钥。对话和知识库都指向模型,不是按厂商分库。
前后端代码
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 模块 | 密钥、模型、对话、知识库 | ruoyi-office/yudao-module-ai/ |
| 单体引入 | yudao-module-ai-server | ruoyi-office/yudao-server/pom.xml |
| 密钥 | @RequestMapping("/ai/api-key") | AiApiKeyController |
| 模型 | /ai/model | AiModelController |
| 管理端 | 控制台各页 | ruoyi-office-vben/apps/web-antd/src/views/ai/ |
官方菜单:2758 AI 大模型(/ai)。控制台 2760。API 密钥 2761,模型配置 2767,聊天角色 2773。看不到菜单时先查角色,再确认是不是 OA 裁剪。
微服务可单独起 ai-server(模块配置端口 48090),单体日常不用。pom 注释仍写「默认注释」,依赖块当前是生效的。
ai_api_key 关键列:platform、apiKey、url、status。ai_model 还有 temperature、maxTokens、maxContexts。平台字符串以 AiPlatformEnum 为准,例如 TongYi、OpenAI、DeepSeek。

本系统截图:AI 大模型 → 控制台 → API 密钥。密钥是主数据。

本系统截图:对话页只选已启用的对话模型,不按厂商各开一套会话表。
功能开启
单体 -P boot 时已经依赖 AI 实现,没有单独的「AI 开关」页。启动 YudaoServerApplication 即可。
客户默认包 ruoyi-office-db/dump/latest/:先 schema_*.sql 再 static_data_*.sql,带 ai_api_key、ai_model、ai_chat_role、ai_chat_conversation、ai_knowledge* 等表。以后改表走 ruoyi-office-db/update/。
能打开「AI 大模型 → 控制台 → API 密钥」说明菜单在。
示意图:先密钥后模型,再进业务页。
旧文 AI 功能开启 已并入本页,请收藏本篇。
