Files
tokens-reef/deploy/docs-backup/KEY_FORMAT_SUPPORT.md

193 lines
5.7 KiB
Markdown
Raw Permalink Normal View History

# 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` 中配置:
```yaml
default:
api_key_prefix: "sk-" # 用户 API Key 前缀
```
## 4. 实现方案
### 4.1 方案 A: 新增平台标识 (推荐)
`backend/internal/domain/constants.go` 中新增平台常量:
```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` 类型,增加预定义模板:
```go
// upstream 模板类型
const (
UpstreamTemplateDeepSeek = "deepseek"
UpstreamTemplateMiniMax = "minimax"
UpstreamTemplateQwen = "qwen"
// ...
)
```
**优点**
- 改动最小
- 复用现有代码
**缺点**
- 缺乏平台级支持
- 统计和调度不够精细
### 4.3 推荐实现路径
1. **Phase 1**: 新增平台标识 (DeepSeek, MiniMax, Qwen)
2. **Phase 2**: 新增平台认证处理逻辑
3. **Phase 3**: 前端账号管理页面优化 (Key 格式自动识别)
4. **Phase 4**: 扩展更多国内模型支持
## 5. 前端界面需求
### 5.1 账号创建页面
在账号管理 → 新增账号 页面:
1. **Key 输入框**:用户粘贴 API Key
2. **自动识别**:根据 Key 前缀自动选择平台
3. **平台下拉**:支持手动选择 (预设为自动识别结果)
4. **配置项**:根据平台显示对应配置项
### 5.2 Key 格式识别规则
```javascript
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. 测试用例
新增平台支持后需验证:
1. 各平台 Key 格式识别正确
2. 各平台 API 调用正常
3. 调度器正确选择对应平台账号
4. 速率限制正常工作
5. 使用统计正确记录
---
**文档版本**: v1.0
**创建日期**: 2026-03-24
**最后更新**: 2026-03-24