- Remove old review reports (keep latest only) - Move docs/ to deploy/docs-backup/ - Move performance-testing/ to deploy/ - Clean up test output files - Organize root directory
5.7 KiB
5.7 KiB
Sub2API 主流模型 Key 格式支持需求文档
1. 需求背景
Sub2API 作为 AI API Gateway,需要支持用户通过平台生成的 API Key 访问各种主流大模型。当前系统已支持部分平台,但在模型覆盖和 Key 格式验证方面存在改进空间。
2. 当前支持状态
2.1 已支持的平台
| 平台标识 | 说明 | Key 前缀 | 认证方式 |
|---|---|---|---|
anthropic |
Anthropic Claude 系列 | sk-ant- |
API Key / OAuth |
openai |
OpenAI GPT 系列 (含 Codex) | sk- |
API Key / OAuth |
gemini |
Google Gemini 系列 | AIzaSy... |
API Key / OAuth |
antigravity |
Antigravity (Claude + Gemini) | sk- |
API Key |
sora |
Claude Code | sk- |
OAuth / API Key |
upstream |
自定义上游 | 任意 | Base URL + API Key |
bedrock |
AWS Bedrock | N/A | SigV4 / API Key |
2.2 当前认证类型
| 类型 | 说明 |
|---|---|
apikey |
标准 API Key 认证 |
oauth |
OAuth 2.0 认证 (完整权限) |
setup-token |
Setup Token (仅推理) |
upstream |
上游透传 (自定义 Base URL) |
bedrock |
AWS Bedrock (SigV4 签名) |
2.3 不支持的模型
以下主流模型当前未提供内置支持,需要通过 upstream 方式配置:
| 模型 | 说明 | 建议配置方式 |
|---|---|---|
| DeepSeek | 深度求索 | upstream (自定义 Base URL) |
| MiniMax | 稀宇科技 | upstream (自定义 Base URL) |
| 豆包 (Doubao) | 字节跳动 | upstream (自定义 Base URL) |
| 通义千问 (Qwen) | 阿里云 | upstream (自定义 Base URL) |
| 文心一言 (ERNIE) | 百度 | upstream (自定义 Base URL) |
| 讯飞星火 (Spark) | 科大讯飞 | upstream (自定义 Base URL) |
3. 需求概述
3.1 内置默认支持
在管理后台的账号管理页面,增加主流模型 Key 格式的自动识别和验证功能:
- 用户输入 Key 后,系统自动识别所属平台
- 根据平台自动填充相关配置项
- 提供 Key 格式验证,确保符合各平台规范
3.2 需要支持的主流编程助手/模型
| 编程助手/模型 | Key 格式示例 | 平台标识 |
|---|---|---|
| Claude (Anthropic) | sk-ant-xxxxx |
anthropic |
| OpenAI (GPT) | sk-xxxxx |
openai |
| Gemini (Google) | AIzaSyxxxxx |
gemini |
| Codex (OpenAI) | sk-xxxxx |
openai |
| DeepSeek | sk-xxxxx |
deepseek (新增) |
| MiniMax | mk-xxxxx |
minimax (新增) |
| 豆包 | ak-xxxxx |
doubao (新增) |
| 通义千问 (Qwen) | sk-xxxxx |
qwen (新增) |
| 文心一言 | apikey-xxxxx |
ernie (新增) |
| 讯飞星火 | xxxxx-xxxxx |
spark (新增) |
3.3 配置文件位置
Key 前缀在 backend/config.yaml 中配置:
default:
api_key_prefix: "sk-" # 用户 API Key 前缀
4. 实现方案
4.1 方案 A: 新增平台标识 (推荐)
在 backend/internal/domain/constants.go 中新增平台常量:
const (
// 现有平台
PlatformAnthropic = "anthropic"
PlatformOpenAI = "openai"
PlatformGemini = "gemini"
PlatformAntigravity = "antigravity"
PlatformSora = "sora"
// 新增平台
PlatformDeepSeek = "deepseek"
PlatformMiniMax = "minimax"
PlatformDoubao = "doubao"
PlatformQwen = "qwen"
PlatformERNIE = "ernie"
PlatformSpark = "spark"
)
优点:
- 完整的平台支持
- 可单独配置调度、速率限制等
- 便于统计各平台使用情况
工作量:
- 中等,需要新增账号类型处理逻辑
4.2 方案 B: 扩展 Upstream 类型
利用现有的 upstream 类型,增加预定义模板:
// upstream 模板类型
const (
UpstreamTemplateDeepSeek = "deepseek"
UpstreamTemplateMiniMax = "minimax"
UpstreamTemplateQwen = "qwen"
// ...
)
优点:
- 改动最小
- 复用现有代码
缺点:
- 缺乏平台级支持
- 统计和调度不够精细
4.3 推荐实现路径
- Phase 1: 新增平台标识 (DeepSeek, MiniMax, Qwen)
- Phase 2: 新增平台认证处理逻辑
- Phase 3: 前端账号管理页面优化 (Key 格式自动识别)
- Phase 4: 扩展更多国内模型支持
5. 前端界面需求
5.1 账号创建页面
在账号管理 → 新增账号 页面:
- Key 输入框:用户粘贴 API Key
- 自动识别:根据 Key 前缀自动选择平台
- 平台下拉:支持手动选择 (预设为自动识别结果)
- 配置项:根据平台显示对应配置项
5.2 Key 格式识别规则
const KEY_PATTERNS = [
{ prefix: 'sk-ant-', platform: 'anthropic', name: 'Anthropic Claude' },
{ prefix: 'sk-', platform: 'openai', name: 'OpenAI / Codex' },
{ prefix: 'AIzaSy', platform: 'gemini', name: 'Google Gemini' },
{ prefix: 'sk-', platform: 'deepseek', name: 'DeepSeek' },
{ prefix: 'mk-', platform: 'minimax', name: 'MiniMax' },
{ prefix: 'ak-', platform: 'doubao', name: '字节跳动豆包' },
// ...
]
6. 相关文件
后端
backend/internal/domain/constants.go- 平台常量定义backend/internal/service/account_service.go- 账号服务backend/ent/schema/account.go- 账号数据库 schema
前端
frontend/src/views/admin/account/- 账号管理视图frontend/src/composables/useAccount.ts- 账号相关逻辑
7. 测试用例
新增平台支持后需验证:
- 各平台 Key 格式识别正确
- 各平台 API 调用正常
- 调度器正确选择对应平台账号
- 速率限制正常工作
- 使用统计正确记录
文档版本: v1.0
创建日期: 2026-03-24
最后更新: 2026-03-24