Files
aue/AI接口使用规范.md
2026-06-03 13:16:30 +08:00

396 lines
9.2 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.
# AI接口使用规范
## 1. 接口概览
| 接口路径 | 方法 | 功能描述 |
|---------|------|----------|
| `/ai/chat/stream` | POST | AI流式问答实时返回处理过程 |
| `/ai/sessions` | GET | 获取用户会话列表,支持分页 |
| `/ai/session/{sessionId}` | GET | 获取指定会话的完整交互记录 |
| `/ai/message/{messageId}/references` | GET | 获取指定消息的引用信息 |
| `/ai/session/{sessionId}/references` | GET | 获取指定会话的所有引用信息 |
| `/ai/session/{sessionId}` | DELETE | 删除指定的会话及其相关信息 |
| `/ai/sessions` | DELETE | 批量删除多个会话及其相关信息 |
## 2. 认证方式
所有接口均需要在请求头中携带 `Authorization` 字段,格式为:
```
Authorization: Bearer {token}
```
其中 `{token}` 是用户登录后获取的JWT令牌。
## 3. 接口详情
### 3.1 AI流式问答接口
**接口路径**: `/ai/chat/stream`
**请求方法**: POST
**功能描述**: 向AI服务发起流式问答请求实时返回处理过程完成后自动保存到数据库
**请求参数**:
| 参数名 | 类型 | 必选 | 描述 |
|--------|------|------|------|
| message | String | 是 | 用户提问内容 |
| id | String | 否 | 请求ID用于追踪请求 |
| session_id | String | 否 | 会话ID若不提供则自动生成 |
**请求示例**:
```json
{
"message": "公司的出差补助标准是什么?",
"id": "req_123456",
"session_id": "sess_123456"
}
```
**响应格式**: 流式SSE (Server-Sent Events)
**响应示例**:
```
event: message
data: {"type":"message","content":"根据公司政策,出差补助标准如下:"}
event: message
data: {"type":"message","content":"1. 一线城市500元/天"}
event: message
data: {"type":"message","content":"2. 二线城市350元/天"}
event: message
data: {"type":"message","content":"3. 三线城市250元/天"}
event: complete
data: {"type":"complete","message":"回答完成"}
```
**错误响应**:
```
event: error
data: {"type":"error","message":"用户未登录"}
```
### 3.2 获取用户会话列表接口
**接口路径**: `/ai/sessions`
**请求方法**: GET
**功能描述**: 获取当前登录用户的所有会话列表,按创建时间倒序排列
**请求参数**:
| 参数名 | 类型 | 必选 | 默认值 | 描述 |
|--------|------|------|--------|------|
| page | Integer | 否 | 1 | 页码 |
| pageSize | Integer | 否 | 10 | 每页大小 |
**请求示例**:
```
GET /ai/sessions?page=1&pageSize=10
```
**响应格式**:
```json
{
"success": true,
"data": [
{
"id": 1,
"sessionId": "sess_123456",
"userId": 1,
"summary": "用户询问公司政策相关问题",
"createTime": "2026-04-21 09:00:00"
}
],
"total": 1,
"page": 1,
"pageSize": 10,
"pages": 1
}
```
**错误响应**:
```json
{
"success": false,
"message": "用户未登录"
}
```
### 3.3 获取会话详情接口
**接口路径**: `/ai/session/{sessionId}`
**请求方法**: GET
**功能描述**: 获取指定会话的完整交互记录包括用户提问与AI回答
**请求参数**:
| 参数名 | 类型 | 必选 | 默认值 | 描述 |
|--------|------|------|--------|------|
| sessionId | String | 是 | - | 会话ID |
| page | Integer | 否 | 1 | 页码 |
| pageSize | Integer | 否 | 20 | 每页大小 |
**请求示例**:
```
GET /ai/session/sess_123456?page=1&pageSize=20
```
**响应格式**:
```json
{
"success": true,
"data": [
{
"id": 1,
"conversationId": "sess_123456",
"role": "user",
"content": "公司的出差补助标准是什么?",
"messageType": "text",
"isFinished": 1,
"createTime": "2026-04-21 09:00:00"
},
{
"id": 2,
"conversationId": "sess_123456",
"role": "assistant",
"content": "根据公司政策,出差补助标准如下:\n1. 一线城市500元/天\n2. 二线城市350元/天\n3. 三线城市250元/天",
"messageType": "text",
"isFinished": 1,
"createTime": "2026-04-21 09:01:30"
}
],
"total": 2,
"page": 1,
"pageSize": 20,
"pages": 1
}
```
**错误响应**:
```json
{
"success": false,
"message": "无权访问该会话"
}
```
### 3.4 获取消息引用信息接口
**接口路径**: `/ai/message/{messageId}/references`
**请求方法**: GET
**功能描述**: 获取指定消息的引用信息,包括文档来源、页码、片段内容等
**请求参数**:
| 参数名 | 类型 | 必选 | 描述 |
|--------|------|------|------|
| messageId | Long | 是 | 消息ID |
**请求示例**:
```
GET /ai/message/2/references
```
**响应格式**:
```json
{
"success": true,
"data": [
{
"id": 1,
"messageId": 2,
"chunkId": "chunk_001",
"docPath": "uploads/policies/travel_policy.pdf",
"docName": "出差政策.pdf",
"page": 10,
"excerpt": "出差补助标准一线城市500元/天二线城市350元/天三线城市250元/天。此标准适用于所有员工。",
"createTime": "2026-04-21 09:01:30"
}
],
"total": 1
}
```
**错误响应**:
```json
{
"success": false,
"message": "用户未登录"
}
```
### 3.5 获取会话引用信息接口
**接口路径**: `/ai/session/{sessionId}/references`
**请求方法**: GET
**功能描述**: 获取指定会话的所有引用信息,包括文档来源、页码、片段内容等
**请求参数**:
| 参数名 | 类型 | 必选 | 描述 |
|--------|------|------|------|
| sessionId | String | 是 | 会话ID |
**请求示例**:
```
GET /ai/session/sess_123456/references
```
**响应格式**:
```json
{
"success": true,
"data": [
{
"id": 1,
"messageId": 2,
"chunkId": "chunk_001",
"docPath": "uploads/policies/travel_policy.pdf",
"docName": "出差政策.pdf",
"page": 10,
"excerpt": "出差补助标准一线城市500元/天二线城市350元/天三线城市250元/天。此标准适用于所有员工。",
"createTime": "2026-04-21 09:01:30"
}
],
"total": 1
}
```
**错误响应**:
```json
{
"success": false,
"message": "无权访问该会话"
}
```
### 3.6 删除单个会话接口
**接口路径**: `/ai/session/{sessionId}`
**请求方法**: DELETE
**功能描述**: 删除指定的会话及其所有相关消息和引用信息
**请求参数**:
| 参数名 | 类型 | 必选 | 描述 |
|--------|------|------|------|
| sessionId | String | 是 | 会话ID |
**请求示例**:
```
DELETE /ai/session/sess_123456
```
**响应格式**:
```json
{
"success": true,
"message": "会话删除成功"
}
```
**错误响应**:
```json
{
"success": false,
"message": "无权删除该会话"
}
```
### 3.7 批量删除会话接口
**接口路径**: `/ai/sessions`
**请求方法**: DELETE
**功能描述**: 批量删除多个会话及其所有相关消息和引用信息
**请求参数**:
| 参数名 | 类型 | 必选 | 描述 |
|--------|------|------|------|
| sessionIds | List<String> | 是 | 会话ID列表 |
**请求示例**:
```json
[
"sess_123456",
"sess_789012"
]
```
**响应格式**:
```json
{
"success": true,
"message": "会话批量删除成功",
"deletedCount": 2
}
```
**错误响应**:
```json
{
"success": false,
"message": "无权删除部分会话"
}
```
## 4. 权限控制
1. **用户认证**所有接口均需要有效的JWT令牌
2. **会话访问权限**:用户只能访问和删除自己的会话
3. **批量操作验证**:批量删除时,所有会话必须都属于当前用户
## 5. 错误处理
| 错误类型 | 状态码 | 错误信息 | 说明 |
|---------|--------|----------|------|
| 未登录 | 401 | 用户未登录 | 缺少有效的Authorization头 |
| 无权限 | 403 | 无权访问该会话/无权删除该会话 | 会话不属于当前用户 |
| 参数错误 | 400 | 会话ID列表不能为空 | 请求参数不符合要求 |
| 服务器错误 | 500 | 操作失败: {具体错误信息} | 服务器内部错误 |
## 6. 最佳实践
1. **会话管理**
- 每次对话使用相同的session_id以保持上下文
- 定期清理不需要的会话以节省存储空间
2. **请求优化**
- 使用分页参数减少返回数据量
- 合理设置pageSize避免一次请求过多数据
3. **错误处理**
- 捕获并处理接口返回的错误信息
- 对网络异常和超时进行适当处理
4. **安全性**
- 不要在前端存储敏感的会话信息
- 定期更新JWT令牌
## 7. 接口性能
1. **响应时间**
- 会话列表和详情接口:< 500ms
- 引用信息接口:< 300ms
- 删除接口:< 200ms
2. **并发处理**
- 支持同时处理多个请求
- 流式接口采用SSE技术支持长时间连接
3. **数据量限制**
- 单个会话最多存储1000条消息
- 批量删除最多支持100个会话
## 8. 版本控制
| 版本 | 变更内容 | 发布日期 |
|------|----------|----------|
| v1.0 | 初始版本包含基础AI对话功能 | 2026-04-25 |
| v1.1 | 新增会话管理和引用信息接口 | 2026-04-25 |
## 9. 联系支持
- **技术支持**tech-support@example.com
- **API文档**https://api.example.com/docs
- **服务状态**https://status.example.com
---
*本规范文档由系统自动生成,如有变更请以实际接口为准。*