Complete admin model management
This commit is contained in:
@@ -35,6 +35,10 @@
|
||||
| D-012 | 大模型真实调用先按 OpenAI 兼容 `chat/completions` 非流式响应接入。 | 默认采用 | 先打通配置化真实模型调用和失败日志,后续再升级为模型原生流式透传。 |
|
||||
| D-013 | 管理后台开发阶段支持首次登录自动创建默认管理员。 | 默认采用 | 降低本地初始化成本;生产环境必须修改默认账号密码。 |
|
||||
| D-014 | 管理后台 Element Plus 先整体引入,后续再做按需导入优化。 | 默认采用 | 阶段五优先保证后台功能闭环和交付速度,体积优化后续处理。 |
|
||||
| D-015 | 模型管理按“OpenAI 兼容协议 + 原生协议”两类补全。 | 默认采用 | DeepSeek、通义千问兼容模式、Kimi、硅基流动、火山方舟优先走 OpenAI 兼容;Anthropic Messages、Gemini generateContent 保留原生协议适配。 |
|
||||
| D-016 | 模型配置支持 `baseUrl` 自动拼接接口,同时保留 `apiUrl` 覆盖能力。 | 默认采用 | 降低普通配置成本,同时给特殊代理网关、私有化模型和供应商非标准路径保留出口。 |
|
||||
| D-017 | 编辑模型时 API Key 留空表示保留旧密钥。 | 默认采用 | 减少密钥重复暴露,避免后台人员只改参数时误覆盖密钥。 |
|
||||
| D-018 | 模型高级参数用 JSON 对象透传。 | 默认采用 | 用较低成本兼容供应商差异,避免数据库字段无限膨胀。 |
|
||||
|
||||
## 待确认决策
|
||||
|
||||
@@ -42,7 +46,7 @@
|
||||
| --- | --- | --- | --- |
|
||||
| Q-001 | 管理后台是否最终采用 Vue 3 + Element Plus? | 默认采用 | 开始后台工程前。 |
|
||||
| Q-002 | 真实短信供应商是谁? | 先 mock | 接入真实登录前。 |
|
||||
| Q-003 | 大模型供应商、API URL、模型名和鉴权方式是什么? | 先按 OpenAI 兼容接口 | 接入真实模型前。 |
|
||||
| Q-003 | 大模型供应商、API URL、模型名和鉴权方式是什么? | 后台模型管理已支持多供应商配置,真实生产供应商仍待确认。 | 接入真实模型前。 |
|
||||
| Q-004 | 飞书知识库实时检索 API 是否满足 SpaceID/NodeID 检索要求? | 先做 mock + 技术验证 | 阶段二后端基础工程完成后尽快验证。 |
|
||||
| Q-005 | 模型 API Key 生产环境如何保存? | 优先环境变量引用或加密存储 | 做模型管理功能前。 |
|
||||
| Q-006 | 飞书检索是否直接调飞书原生 API,还是先由独立适配服务封装? | 当前先预留 `FEISHU_SEARCH_URL` 适配服务入口 | 飞书账号、权限和 API 返回结构确认后。 |
|
||||
|
||||
@@ -0,0 +1,122 @@
|
||||
# 模型管理补全记录
|
||||
|
||||
日期:2026-07-07
|
||||
|
||||
## 本次目标
|
||||
|
||||
把管理后台的模型管理从“只保存一个 OpenAI 兼容地址”补全为可维护的第三方 LLM 配置能力,后续可以支持 OpenAI、DeepSeek、通义千问兼容模式、Kimi、硅基流动、火山方舟、Anthropic Claude、Google Gemini 等供应商。
|
||||
|
||||
## 参考口径
|
||||
|
||||
本次以各供应商公开接口文档的共同配置项为基础,不绑定某一个供应商 SDK:
|
||||
|
||||
- OpenAI 兼容类:统一使用 `chat/completions` 风格,支持 `model`、`messages`、`temperature`、`top_p`、`max_tokens`、`stream`、`response_format` 等常见参数。
|
||||
- DeepSeek、硅基流动、通义千问兼容模式、Kimi、火山方舟:优先作为 OpenAI 兼容协议接入,通过不同 `Base URL` 和 `modelName` 区分。
|
||||
- Anthropic Claude:使用 Messages API 原生协议,鉴权使用 `x-api-key`,并支持 `anthropic-version`。
|
||||
- Google Gemini:使用 `generateContent` 原生协议,生成参数放在 `generationConfig` 下。
|
||||
|
||||
## 已完成
|
||||
|
||||
### 后端
|
||||
|
||||
- 扩展 `sys_model` 数据结构,新增:
|
||||
- `display_name`
|
||||
- `api_type`
|
||||
- `base_url`
|
||||
- `auth_type`
|
||||
- `api_version`
|
||||
- `top_p`
|
||||
- `top_k`
|
||||
- `presence_penalty`
|
||||
- `frequency_penalty`
|
||||
- `context_window`
|
||||
- `stream_enabled`
|
||||
- `response_format`
|
||||
- `extra_params`
|
||||
- `remark`
|
||||
- 新增 Alembic 迁移 `0002_expand_model_config`。
|
||||
- 扩展模型创建接口,支持保存完整第三方 LLM 参数。
|
||||
- 新增模型更新接口:
|
||||
- 编辑模型时如果 API Key 留空,则保留原 API Key。
|
||||
- 这样可以避免后台人员每次改参数都必须重新粘贴密钥。
|
||||
- 新增模型测试接口:
|
||||
- 后台可直接发起一次轻量测试。
|
||||
- 返回可用状态、错误信息和部分模型回复。
|
||||
- 扩展 `ModelClientService`:
|
||||
- `openai_compatible`:按 OpenAI 兼容 `chat/completions` 调用。
|
||||
- `anthropic_messages`:按 Anthropic Messages API 调用。
|
||||
- `gemini_generate_content`:按 Gemini generateContent 调用。
|
||||
- `extra_params` 支持 JSON 对象透传,用于补充供应商特有参数。
|
||||
|
||||
### 管理后台
|
||||
|
||||
- 模型管理表单改为完整配置面板。
|
||||
- 新增供应商预设:
|
||||
- OpenAI
|
||||
- DeepSeek
|
||||
- 通义千问 DashScope
|
||||
- Kimi / Moonshot
|
||||
- 硅基流动 SiliconFlow
|
||||
- 火山方舟 Ark
|
||||
- Anthropic Claude
|
||||
- Google Gemini
|
||||
- 新增参数配置:
|
||||
- 协议类型
|
||||
- Base URL
|
||||
- API URL 覆盖
|
||||
- 鉴权方式
|
||||
- API Version
|
||||
- Temperature
|
||||
- Top P
|
||||
- Top K
|
||||
- Presence Penalty
|
||||
- Frequency Penalty
|
||||
- Max Tokens
|
||||
- 上下文窗口
|
||||
- 流式输出开关
|
||||
- 响应格式
|
||||
- 高级 JSON 参数
|
||||
- 备注
|
||||
- 新增编辑模型、测试模型、启用模型操作。
|
||||
- 前端保存前增加基础校验:
|
||||
- 新增模型必须填写 API Key。
|
||||
- 编辑模型允许 API Key 留空。
|
||||
- Base URL 和 API URL 至少填写一个。
|
||||
- 高级 JSON 参数必须是 JSON 对象。
|
||||
|
||||
## 默认工程决策
|
||||
|
||||
| 编号 | 决策 | 原因 |
|
||||
| --- | --- | --- |
|
||||
| M-001 | 第三方 LLM 分为 OpenAI 兼容协议和原生协议两类。 | 国内多数供应商提供 OpenAI 兼容模式,用统一协议可以减少重复代码;Anthropic、Gemini 保留原生协议以避免参数结构不匹配。 |
|
||||
| M-002 | `apiUrl` 可以为空,优先由 `baseUrl + apiType` 自动拼接。 | 后台人员更容易配置,只要填供应商 Base URL 和模型名即可;高级场景仍可用 API URL 覆盖。 |
|
||||
| M-003 | 编辑模型时 API Key 留空表示不修改。 | 避免密钥频繁暴露和重复粘贴,降低误改风险。 |
|
||||
| M-004 | 高级参数使用 JSON 对象透传。 | 保留不同供应商的扩展能力,同时避免每个小参数都单独改数据库结构。 |
|
||||
| M-005 | Anthropic、Gemini 预设默认不强行填采样参数。 | 部分模型对非默认采样参数较敏感,预设应先保证能通,再由后台人员按需调整。 |
|
||||
| M-006 | 模型测试接口直接调用真实供应商。 | 这是后台配置验收动作,应该真实发现 Key、URL、模型名和参数错误。 |
|
||||
|
||||
## 当前边界
|
||||
|
||||
- API Key 当前仍存储在数据库字段中,生产环境建议后续升级为加密存储或环境变量引用。
|
||||
- 流式输出字段已保存,但当前真实模型调用仍以非流式方式完成,用户端 SSE 分块由后端模拟输出。
|
||||
- 不同供应商的费用、限流、区域和模型上下文窗口仍需要运营配置时自行确认。
|
||||
- `extra_params` 由后台人员自行维护,系统只校验 JSON 对象格式,不校验供应商语义。
|
||||
|
||||
## 本次验证
|
||||
|
||||
- 后端编译检查:通过。
|
||||
- 后端 OpenAPI 检查:通过,当前 `paths` 数量为 34。
|
||||
- Alembic MySQL 静态 SQL 检查:通过,迁移 SQL 生成成功。
|
||||
- 用户端 H5 构建:通过。
|
||||
- 管理后台构建:通过。
|
||||
- Docker Compose 配置检查:通过。
|
||||
- `git diff --check`:通过。
|
||||
|
||||
说明:管理后台构建仍有 Vite chunk size 提示,原因是当前阶段 Element Plus 整体引入,属于已记录的阶段性取舍,不影响本次功能可用性。
|
||||
|
||||
## 后续建议
|
||||
|
||||
1. 接入生产前补充密钥加密或密钥引用机制。
|
||||
2. 增加“复制模型配置”能力,方便按环境复制供应商参数。
|
||||
3. 增加模型测试结果记录,便于排查某个供应商近期是否不稳定。
|
||||
4. 接入真实流式模型后,再把 `stream_enabled` 从配置字段升级为真实调用策略。
|
||||
@@ -33,4 +33,5 @@
|
||||
| `2026-07-06-phase4-rag-external-services.md` | 阶段四 RAG 和外部服务接入骨架记录。 |
|
||||
| `2026-07-06-phase5-admin-console.md` | 阶段五管理后台记录。 |
|
||||
| `2026-07-07-admin-chat-records-completion.md` | 管理后台聊天记录补齐记录。 |
|
||||
| `2026-07-07-model-management-completion.md` | 管理后台模型管理补全记录。 |
|
||||
| `../test_records/2026-07-06-phase6-verification.md` | 阶段六验证记录。 |
|
||||
|
||||
Reference in New Issue
Block a user