|
|
# 前端模型联调指南 (V3 & R1)
|
|
|
|
|
|
本文档旨在指导前端开发人员如何通过 API 调用不同的 LLM 模型(DeepSeek-V3 和 DeepSeek-R1)。
|
|
|
|
|
|
---
|
|
|
|
|
|
## 1. 模型标识符说明
|
|
|
|
|
|
在调用 API 时,请使用以下字符串作为模型标识:
|
|
|
|
|
|
| 模型名称 | 标识符 (API 传参值) | 适用场景 |
|
|
|
| :--- | :--- | :--- |
|
|
|
| **DeepSeek-V3** | `deepseek-ai/DeepSeek-V3` | 普通对话、通用问答、响应速度快。 |
|
|
|
| **DeepSeek-R1** | `Pro/deepseek-ai/DeepSeek-R1` | 复杂逻辑推理、深度故障诊断、代码生成。 |
|
|
|
|
|
|
---
|
|
|
|
|
|
## 2. 接口调用方式
|
|
|
|
|
|
### 2.1 AI 聊天接口 (`/api/v1/ai/chat`)
|
|
|
|
|
|
前端需要在请求体的 `context` 对象中传入 `model` 字段。
|
|
|
|
|
|
#### 请求示例 (TypeScript/Fetch):
|
|
|
```typescript
|
|
|
const response = await fetch('/api/v1/ai/chat', {
|
|
|
method: 'POST',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/json',
|
|
|
'Authorization': `Bearer ${userToken}`
|
|
|
},
|
|
|
body: JSON.stringify({
|
|
|
sessionId: "current-chat-id",
|
|
|
message: "如何解决 NameNode 处于安全模式?",
|
|
|
stream: true, // 建议开启流式
|
|
|
context: {
|
|
|
model: "Pro/deepseek-ai/DeepSeek-R1", // 切换模型
|
|
|
agent: "HadoopExpert"
|
|
|
}
|
|
|
})
|
|
|
});
|
|
|
```
|
|
|
|
|
|
#### 响应处理 (SSE 流式):
|
|
|
当 `stream: true` 时,响应格式为 SSE (Server-Sent Events)。每一行 `data` 是一个 JSON 字符串,包含 `content` (正文) 和 `reasoning` (思维链,仅 R1 支持)。
|
|
|
|
|
|
```javascript
|
|
|
// 处理逻辑示例
|
|
|
const reader = response.body.getReader();
|
|
|
while (true) {
|
|
|
const { done, value } = await reader.read();
|
|
|
if (done) break;
|
|
|
const chunk = new TextDecoder().decode(value);
|
|
|
const lines = chunk.split('\n');
|
|
|
lines.forEach(line => {
|
|
|
if (line.startsWith('data: ')) {
|
|
|
const { content, reasoning } = JSON.parse(line.slice(6));
|
|
|
if (reasoning) updateReasoningUI(reasoning); // 更新思考过程 UI
|
|
|
if (content) updateContentUI(content); // 更新正文 UI
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## 3. 故障诊断与自动修复接口 (`/api/v1/ai/diagnose-repair`)
|
|
|
|
|
|
对于自动诊断任务,模型参数直接放在请求体根部。
|
|
|
|
|
|
#### 请求示例:
|
|
|
```bash
|
|
|
curl -X POST http://localhost:8000/api/v1/ai/diagnose-repair \
|
|
|
-H "Content-Type: application/json" \
|
|
|
-d '{
|
|
|
"cluster": "cluster-uuid-123",
|
|
|
"model": "Pro/deepseek-ai/DeepSeek-R1",
|
|
|
"auto": true,
|
|
|
"maxSteps": 3
|
|
|
}'
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
## 4. 注意事项
|
|
|
|
|
|
1. **默认模型**: 如果前端不传递 `model` 参数,后端将使用 `.env` 文件中配置的 `LLM_MODEL` (目前默认为 V3)。
|
|
|
2. **R1 推理过程**: DeepSeek-R1 会输出 `reasoning_content`。前端建议提供一个可折叠的“思考过程”组件,用来展示 `reasoning` 字段的内容,以增强用户体验。
|
|
|
3. **错误处理**: 若传入无效的模型名称,后端可能会返回 `403` 或 `502` 错误,请前端做好兜底逻辑。
|