OpenAI 接入
这篇解决什么
官方 OpenAI 平台字符串怎么填、密钥和模型各落哪张表。读完能对上 AiPlatformEnum.OPENAI = "OpenAI",不要和微软 Azure 那条分支混用。
默认端口 48080。开启见 AI 功能设计。
示意图:运行时密钥来自库表。YAML 的 spring.ai.openai 只是占位。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 密钥 | @RequestMapping("/ai/api-key") | ruoyi-office/yudao-module-ai/.../controller/admin/model/AiApiKeyController.java |
| 模型 | /ai/model | AiModelController |
| 工厂 | buildOpenAiChatModel | AiModelFactoryImpl |
| 选项 | OpenAiChatOptions | AiUtils.buildChatOptions |
| 管理端 | 密钥、模型页 | ruoyi-office-vben/apps/web-antd/src/views/ai/model/ |
官方菜单:API 密钥 2761,模型配置 2767。没有「OpenAI」独立菜单。
url 空时工厂用 OpenAI 默认 Base URL。apiKey 支持 ${OPENAI_API_KEY} 这种占位,启动时解析。对话 type=1,绘画 2,向量 5 各建各的模型行,共用或分用密钥都可以。
Azure 走 AzureOpenAI 和另一套 deploymentName 选项,本篇不写。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
platform | 必须是 OpenAI | AiApiKeyDO / AiModelDO |
apiKey / url | 密钥、可选网关地址 | AiApiKeyDO |
keyId | 模型挂哪条密钥 | AiModelDO |
model | 如 gpt-4o-mini | 同上 |
temperature / maxTokens | 对话参数 | 同上 |
字典 ai_platform 的值为 OpenAI。保存 VO 用 @InEnum(AiPlatformEnum.class)。
平台字符串区分大小写
填 openai 或中文「OpenAI 官方」会校验失败。微软那条是 AzureOpenAI,不要填进本篇这条密钥。
先密钥后模型
ai_model.keyId 为空或指错行,对话工厂拿不到 key。绘画走 /ai/image/draw 的 OpenAI 分支,见 AI 绘画创作。
按本仓库 DO 生成的 ER。
配置与操作
走 控制台 → API 密钥(2761,/ai/console/api-key)建行,platform 必须是 OpenAI,apiKey 可写 ${OPENAI_API_KEY}。再走 模型配置(2767,/ai/console/model)挂 keyId:对话 type=1,绘画 2,向量 5。没有「OpenAI」独立菜单。
url 空则用官方默认 Base URL。不要填 AzureOpenAI。开启见 AI 功能设计。

本系统截图:AI 大模型 → 控制台 → API 密钥。各厂商共用这一页,用 platform 区分。

本系统截图:控制台 → 模型配置。keyId 必须指向同平台密钥。
