# AI 模型管理 - 启用与分类联调方案 ## 涉及页面 - AI 大模型 → 模型管理(`ai/model/model/index`) - 依赖模型下拉的业务页面(对话、图像、知识库、工作流) ## 业务流程与数据带入 1. 模型管理列表按「模型类型」分组展示:同一类型的多行在类型列纵向合并成一格。 2. 每行状态列改为「启用」开关,直接切换该模型的启用/停用。 3. 启用某个模型时,后端自动关闭**同类型 + 同能力**下已启用的其他模型,前端只需整页刷新。 4. 停用模型不会自动启用其他模型,该类型该能力可能因此没有可用模型。 ## API | 方法 | 路径 | 说明 | |------|------|------| | PUT | `/ai/model/update-status` | 更新模型启用状态(本次新增) | | GET | `/ai/model/page` | 模型分页,新增 `capability` 查询参数 | | GET | `/ai/model/simple-list` | 模型下拉,新增 `capability` 查询参数 | **请求参数(update-status):** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | id | Long | 是 | 模型编号 | | status | Integer | 是 | 0-启用,1-停用 | **请求参数(page):** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | pageNo | Integer | 是 | 页码 | | pageSize | Integer | 是 | 每页条数 | | name | String | 否 | 模型名字,模糊匹配 | | model | String | 否 | 模型标识,模糊匹配 | | type | Integer | 否 | 模型类型 | | capability | String | 否 | 模型能力:text-文本,vision-视觉 | | platform | String | 否 | 平台 | | status | Integer | 否 | 状态 | **响应字段新增(page / get / simple-list):** | 字段 | 类型 | 说明 | |------|------|------| | capability | String | 模型能力:text-文本,vision-视觉 | **响应示例:** ```json { "code": 0, "data": { "list": [ { "id": 2, "name": "通义千问对话模型", "model": "qwen-max", "platform": "TongYi", "type": 1, "capability": "text", "status": 0 }, { "id": 4, "name": "通义千问视觉模型", "model": "qwen-vl-plus", "platform": "TongYi", "type": 1, "capability": "vision", "status": 0 } ], "total": 4 } } ``` ## 字段展示规则 | 字段 | 展示位置 | 说明 | |------|----------|------| | 模型类型 | 列表首列 | 同类型多行纵向合并,形成分类分组 | | 模型能力 | 列表、表单 | 文本/视觉;仅对话类型需要区分 | | 启用 | 列表状态列 | 开关控件,切换即调用 update-status | | 模型标识 | 搜索表单 | 支持模糊搜索 | ## 业务规则说明 | 场景 | 规则 | |------|------| | 启用模型 | 自动关闭同 `type + capability` 的其他启用模型,保证每组只有一个启用 | | 停用模型 | 只关闭自身,不自动启用其他模型 | | 新建模型 | 若状态为启用,同样会关闭同组其他模型 | | 编辑模型 | 模型类型、能力不可修改(前端已禁用);仅新建时可选 | | 对话类型 | 文本能力与视觉能力各可启用一个,互不覆盖 | | 非对话类型 | 能力固定为文本,每组只能启用一个 | | 图片识别 | 只使用视觉能力的启用模型,未启用时接口直接报错提示去启用 | ## 注意事项 - 模型类型、能力在编辑时不可修改。若要改变模型归类,需删除后重新创建。 - 启用开关切换后必须整页刷新,因为同组其他行的状态已被后端改写。 - 图片识别(发票、报价单、质检报告)依赖视觉能力模型;如果停用了唯一的视觉模型,这些功能会报错并提示去启用。 - 能力字段在历史数据上由后端按模型标识自动判定(含 `vl` 的对话模型归为视觉),前端无需迁移。 - 非对话类型不需要展示能力字段,提交时可不传,后端默认按 `text` 处理。