Files
api-box/PRD.md
T
2025-10-05 16:58:02 +08:00

122 lines
6.4 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.
## 产品需求文档 (PRD):AI API 配置与对话简易工具
---
### **1. 背景**
随着大模型应用普及,开发者需频繁切换不同厂商的API(如 OpenAI、通义千问、硅基流动)。现有方案操作繁琐(需手动修改代码/环境变量),缺乏统一配置入口。本工具旨在提供**轻量级 Web 界面**,支持快速配置主流厂商 API 并进行简单对话,提升开发效率。
---
### **2. 目标**
- ✅ **核心目标**:用户通过 1 个页面完成所有厂商 API 配置与对话测试
- ✅ **关键指标**:
- 配置操作简易(选厂商 → 输入密钥/接入点 → 保存)
- 支持主流厂商
---
### **3. 项目范围**
| **范围** | **包含** | **不包含** |
|-------------------|---------------------------------------------|------------------------------------|
| **功能** | - 厂商配置管理(密钥/接入点)<br>- 多厂商对话界面<br>- 安全存储密钥 | - 用户认证/权限管理<br>- 聊天历史记录<br>- 复杂对话逻辑(如 multi-turn) |
| **支持厂商** | OpenAI, Anthropic, Google (Gemini), 阿里云(通义千问), 百度(文心一言) | 本地模型(如 Llama)、定制化厂商 API |
| **安全** | 密钥加密存储、禁止明文展示 | 无 Key 管理后台(纯客户端安全) |
| **平台** | 现代浏览器(Chrome/Firefox/Safari) | 移动端适配、桌面应用 |
> ✨ **附录:厂商支持列表**
> | 厂商 | 接入点示例 | 密钥类型 |
> |--------------|-------------------------------------|-------------|
> | OpenAI | `https://api.openai.com/v1/chat/completions` | `sk-...` |
> | Anthropic | `https://api.anthropic.com/v1/messages` | `sk-...` |
> | Google | `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent` | `AIza...` |
> | 阿里云通义 | `https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation` | `sk-...` |
> | 百度文心 | `https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/ernie\_bot` | `your_api_key` |
---
### **4. 功能需求**
#### **4.1 厂商配置管理(核心功能)**
| 功能 | 说明 | 用户操作流 |
|---------------------|----------------------------------------------------------------------|-------------------------------------|
| **厂商下拉选择** | - 预置 5 个厂商(见附录表格),下拉菜单中**自动隐藏**未启用的厂商 | 1. 点击下拉框 → 2. 选中目标厂商 |
| **密钥/接入点输入** | - 动态显示对应字段(OpenAI 需输入 `密钥`+`接入点`,通义需输入 `API Key`) | 1. 填写密钥(如 `sk-abc123`)<br>2. 填写接入点(默认预填) |
| **保存与验证** | - 保存时**自动校验密钥格式**(如 OpenAI 密钥以 `sk-` 开头)<br>- **不存储明文**,使用 AES-256 加密后存入浏览器 `localStorage` | 1. 点击「保存配置」→ 2. 成功提示<br>→ 3. 即时生效(无需刷新) |
> ⚠️ **安全设计**:
> - 密钥在客户端加密存储,**服务端不接触密钥**
> - 配置页面关闭后,密钥不可恢复(用户需重新配置)
#### **4.2 AI 对话界面(核心功能)**
| 功能 | 说明 |
|---------------------|----------------------------------------------------------------------|
| **对话输入框** | 单行文本输入,支持中文/英文提问(示例:`“解释量子计算”`) |
| **厂商选择器** | **对话前必选**:从已配置的厂商列表中选(默认显示按配置顺序排序) |
| **发送与响应** | - 点击「发送」按钮 → 显示加载状态 → 厂商 API 返回结果显示在底部 |
| **错误处理** | - 密钥错误 → 提示 `“厂商 [X] 密钥无效”`<br>- 服务端错误 → 提示 `“[厂商] API 调用失败 (错误码: 500)”` |
> 🌰 **示例流程**:
> 1. 用户在配置页为 OpenAI 保存密钥 `sk-test123`
> 2. 进入对话页 → 选 OpenAI → 输入 `“写首关于AI的诗”` → 点击发送
> 3. 即时显示 OpenAI 返回的诗句
---
### **5. 非功能需求**
| 类别 | 要求 |
|---------------|---------------------------------------|
| **性能** | 配置保存响应时间 ≤ 500ms;对话响应 ≤ 3s(依赖厂商) |
| **可用性** | 0 学习成本:所有操作 ≤ 3 步,无复杂菜单 |
| **可扩展性** | 新增厂商仅需修改前端配置表(无需改代码) |
| **安全** | 100% 避免明文密钥存储,废弃旧配置自动清除 |
| **兼容性** | 支持 Chrome/Firefox/Safari 最新版,不兼容 IE |
---
### **6. 应用流程图**
```mermaid
graph TD
A[访问主页] --> B[配置厂商]
B --> C{是否选择新厂商}
C -- 是 --> D[填写厂商/密钥/接入点]
D --> E[保存加密]
E --> B
C -- 否 --> F[对话界面]
F --> G[选厂商 + 输入提问]
G --> H[调用厂商 API]
H --> I{成功}
I -- 是 --> J[显示结果]
I -- 否 --> K[显示错误提示]
```
---
### **7. 紧急问题处理**
| 问题场景 | 解决方案 |
|--------------------------|------------------------------------------|
| 用户误填错误密钥 | 配置页右侧显示“密钥验证失败”提醒 |
| 厂商 API 调用超时 | 支持重试(1 次),超时后提示“服务不可用” |
| 首次使用无任何厂商配置 | 顶部显示提示“请先配置厂商:OpenAI/通义千问” |
---
### **8. 附录:厂商配置预设**
```javascript
// 前端配置表(示例,可增加新厂商)
const PLATFORMS = [
{
id: 'openai',
name: 'OpenAI',
endpoint: 'https://api.openai.com/v1/chat/completions',
keyPlaceholder: 'sk-...',
keyType: 'api_key'
},
{
id: 'qwen',
name: '通义千问(阿里云)',
endpoint: 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation',
keyPlaceholder: 'sk-...',
keyType: 'api_key'
},
// 其他厂商...
];
```