Files
lijiaoqiao/docs/supply_feature_technical_analysis_v1_2026-03-18.md
2026-03-26 16:04:46 +08:00

285 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Subapi 技术能力分析与用户供应场景补充
> 本文档回答关于 subapi 技术深度、供应商能力、风险评估,以及补充"用户分享LLM供应"的详细设计。
---
## 1. Subapi 技术深度评估
### 1.1 技术了解程度:**足够深入**
| 维度 | 评估 | 证据 |
|------|------|------|
| 协议支持 | ⭐⭐⭐⭐⭐ | OpenAI/Anthropic/Gemini 完整兼容 |
| 契约设计 | ⭐⭐⭐⭐⭐ | 已有详细的 Connector 契约文档 |
| 错误处理 | ⭐⭐⭐⭐ | 三类错误归一,重试机制完善 |
| 流式支持 | ⭐⭐⭐⭐ | SSE/WebSocket 均已实现 |
### 1.2 已掌握的技术细节
- **Connector 契约**`subapi_connector_contract_v1_2026-03-17.md` 明确定义了请求/响应/错误归一模型
- **认证机制**:支持 Bearer Token、x-api-key、x-goog-api-key
- **版本治理**:生产环境锁定精确版本,周级升级窗口
- **风险点**:已识别 2 个 P0 问题内网隔离、query key 边界)
---
## 2. Subapi 当前供应商能力
### 2.1 已支持的供应商
| 供应商 | 模型支持 | 认证方式 | 状态 |
|--------|----------|----------|------|
| **OpenAI** | GPT-3.5/4/5 全系列 | API Key | ✅ 稳定 |
| **Anthropic** | Claude 2/3/4 全系列 | API Key / OAuth | ✅ 稳定 |
| **Google Gemini** | Gemini 2/3 全系列 | API Key / OAuth | ✅ 稳定 |
| **Antigravity** | Claude 4.5+ / Gemini 2.5+ | OAuth | ✅ 稳定 |
| **Sora** | 图片/视频生成 | API Key | ✅ 稳定 |
| **AWS Bedrock** | Claude/Titan 等 | AWS 凭证 | ✅ 稳定 |
| **百度文心** | ERNIE 系列 | API Key | ✅ |
| **讯飞星火** | Spark 系列 | API Key | ✅ |
| **腾讯混元** | Hunyuan 系列 | API Key | ✅ |
| **Perplexity** | Pro/Labs | API Key | ✅ |
### 2.2 供应商能力总结
- **总计**10+ 供应商100+ 模型
- **海外主力**OpenAI、Anthropic、Gemini支持 OAuth 授权)
- **国内支持**百度、讯飞、腾讯API Key 方式)
- **⚠️ 注意**subapi 不支持用户自己挂载账号给平台,只支持平台统一管理上游账号
---
## 3. 关键发现Subapi 不支持"用户分享LLM供应"
### 3.1 Subapi 现有模式
```
平台方(管理员)→ 添加上游账号 → 分发给用户使用
```
- 平台方统一管理所有 LLM 供应商账号
- 用户使用平台生成的 API Key 调用
- 优点:统一管理、计费简单
- 缺点:无法实现"用户分享多余配额"
### 3.2 用户想要的模式
```
用户A供应方→ 挂载自己账号的剩余配额 → 平台售卖 → 用户B需求方使用
```
- 任何用户可以把自己的 LLM 账号/配额挂载到平台
- 平台验证账号有效性后接受供应
- 平台将配额卖给其他用户
- 供应方获得收益分成
### 3.3 结论
**Subapi 没有实现"用户分享LLM供应"功能!**
这意味着用户的独特场景需要**在我方平台层实现**,而不是依赖 subapi。
---
## 4. 风险评估
### 4.1 Subapi 集成风险
| 风险项 | 级别 | 缓解措施 |
|--------|------|----------|
| 内网隔离缺失 | P0 | 新增 SEC-007/008 任务 |
| query key 边界歧义 | P0 | 新增 SEC-009 强制测试 |
| 接管率口径冲突 | P1 | COMP-007 统一 canonical |
| CN 平台硬编码 | P1 | COMP-008 配置表驱动 |
### 4.2 商业风险
| 风险项 | 级别 | 说明 |
|--------|------|------|
| 用户供应功能需自研 | 高 | 供应侧功能不在 subapi 范围内 |
| ToS 合规风险 | 高 | 需严格审查各供应商条款 |
| 供应商账号封禁 | 中 | 需多账号冗余 + 备用通道 |
---
## 5. 用户分享LLM供应 - 完整设计补充
### 5.1 功能定位
这是**平台独有功能**,不在 subapi 范围内,需要我方平台层实现。
### 5.2 业务流程
```
┌─────────────────────────────────────────────────────────────────────────┐
│ 用户供应LLM配额业务流程 │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ 供应方用户A 平台 需求方用户B
│ │ │ │ │
│ ▼ │ │ │
│ 1. 注册/登录 │ │ │
│ │ │ │ │
│ ▼ │ │ │
│ 2. 挂载LLM账号 │ │ │
│ (API Key/OAuth) │ │ │
│ │ │ │ │
│ ▼ │ │ │
│ 3. 平台验证账号 │ │ │
│ (有效性/额度/合规) │ │ │
│ │ │ │ │
│ ▼ │ │ │
│ 4. 设置供给配额 │ │ │
│ (挂载量/售价) │ │ │
│ │ │ │ │
│ ▼ │ │ │
│ 5. 供应上线 │ │ │
│ │───────────────────────┼───────────────────────────┤ │
│ │ │ │ │
│ │ ▼ │ │
│ │ 6. 平台展示 │ │
│ │ (套餐列表) │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ │ 7. 购买套餐 │
│ │ │ │ │
│ │ ▼ │ │
│ │ │ 8. 获取平台调用凭证 │
│ │ │ │ │
│ │ ▼ │ │
│ │ │ 9. 调用LLM服务 │
│ │ │◀──────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ 10. 收益到账 11. 平台抽成 │
│ │
└─────────────────────────────────────────────────────────────────────────┘
```
### 5.3 核心模块设计
#### 5.3.1 账号挂载模块
| 功能 | 说明 |
|------|------|
| **挂载方式** | API Key 手动输入 / OAuth 授权 |
| **支持的供应商** | 与平台支持列表一致 |
| **账号验证** | 调用供应商 API 验证有效性 |
| **额度获取** | 调用供应商 API 获取剩余额度 |
| **合规检查** | 检查是否违反供应商 ToS |
#### 5.3.2 套餐发布模块
| 功能 | 说明 |
|------|------|
| **最小挂载量** | 平台设定最低额度(如 $10 |
| **最大挂载量** | 根据账号类型和历史表现设定 |
| **定价规则** | 供应方设置售价,平台设定最低价 |
| **有效期** | 可选择日/月/永久 |
| **状态管理** | 上架/下架/售罄/过期 |
#### 5.3.3 调度与计费模块
| 功能 | 说明 |
|------|------|
| **请求调度** | 优先用低价/空闲供应,保障成功率 |
| **额度扣减** | 实时扣减供应方额度 |
| **账单生成** | 记录每笔交易的 token 量和费用 |
| **收益计算** | 供应方收益 = 售价 × 消耗量 × 60% |
#### 5.3.4 风控模块
| 功能 | 说明 |
|------|------|
| **账号健康** | 监控账号可用性、额度消耗异常 |
| **欺诈检测** | 检测恶意套现、虚假额度 |
| **ToS 合规** | 检测供应商禁止的调用模式 |
| **保证金** | 供应方需缴纳保证金(防违约) |
### 5.4 数据模型
```sql
-- 供应方账号表
CREATE TABLE supply_accounts (
id BIGINT PRIMARY KEY,
user_id BIGINT NOT NULL,
platform VARCHAR(50) NOT NULL, -- openai/anthropic/gemini/baidu/...
account_type VARCHAR(20) NOT NULL, -- api_key/oauth
encrypted_key VARCHAR(500), -- 加密存储
display_name VARCHAR(100),
status VARCHAR(20), -- pending/active/suspended
verified_at TIMESTAMP,
created_at TIMESTAMP DEFAULT NOW()
);
-- 供应套餐表
CREATE TABLE supply_packages (
id BIGINT PRIMARY KEY,
supply_account_id BIGINT NOT NULL,
model VARCHAR(100) NOT NULL,
available_quota DECIMAL(20, 6), -- 可用额度
sold_quota DECIMAL(20, 6) DEFAULT 0, -- 已售额度
price_per_1m DECIMAL(20, 6), -- 每百万tokens价格
status VARCHAR(20), -- active/sold_out/expired
valid_until TIMESTAMP,
created_at TIMESTAMP DEFAULT NOW()
);
-- 供应方收益表
CREATE TABLE supply_earnings (
id BIGINT PRIMARY KEY,
user_id BIGINT NOT NULL,
supply_package_id BIGINT NOT NULL,
consumption_tokens BIGINT NOT NULL,
consumption_amount DECIMAL(20, 6) NOT NULL,
platform_share DECIMAL(20, 6) NOT NULL, -- 平台抽成
supplier_share DECIMAL(20, 6) NOT NULL, -- 供应方收益
created_at TIMESTAMP DEFAULT NOW()
);
```
### 5.5 与现有系统的集成
| 模块 | 集成点 | 说明 |
|------|--------|------|
| **认证系统** | 复用现有用户体系 | 供应方需完成实名认证 |
| **计费系统** | 复用账务引擎 | 供应方收益计入用户余额 |
| **风控系统** | 复用合规引擎 | 账号需通过 ToS 检查 |
| **API 网关** | 新增路由规则 | 识别供应来源,调度到对应账号 |
### 5.6 实施计划
| 阶段 | 时间 | 任务 | 交付 |
|------|------|------|------|
| **S0-a** | W1-W2 | 账号挂载模块开发 | 挂载/验证/下架功能 |
| **S0-b** | W3-W4 | 套餐发布模块开发 | 上架/定价/展示功能 |
| **S0-c** | W5-W6 | 调度与计费模块开发 | 实时调度/扣减/账单 |
| **S0-d** | W7-W8 | 风控模块开发 | 健康监控/欺诈检测 |
| **S0-e** | W9-W10 | 内部测试与修复 | 试运行 |
| **S0-f** | W11-W12 | 首批供应方引入 | 10家供应方 |
---
## 6. 结论与建议
### 6.1 结论
1. **Subapi 技术掌握充分**:已有详细的契约文档,可以完成集成
2. **Subapi 供应商覆盖全**10+ 供应商100+ 模型
3. **用户供应功能缺失**Subapi 不支持,需平台层自研
### 6.2 建议
1. ✅ 继续推进 Subapi 集成(技术可行)
2. ✅ 补充用户供应功能的自研计划(当前规划缺失)
3. ✅ 将 S0 阶段延长,增加供应侧功能开发
4. ✅ 优先在 S0-e 阶段引入首批供应方进行验证
---
**文档状态**:补充说明
**关联文档**
- `llm_gateway_subapi_evolution_plan_v4_1_2026-03-18.md`
- `subapi_connector_contract_v1_2026-03-17.md`