Compare commits
2 Commits
3626297211
...
3f22e2b875
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3f22e2b875 | ||
|
|
531688aa6b |
@@ -279,6 +279,36 @@ POST /api/v1/asr/{id}/transcribe
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### 8. 预览 ASR (上传音频文件)
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/v1/asr/{id}/preview
|
||||||
|
```
|
||||||
|
|
||||||
|
上传音频文件进行识别预览。
|
||||||
|
|
||||||
|
**Request (multipart/form-data):**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| file | file | 是 | 音频文件 (audio/* | string | 否 | 指定语言,覆盖) |
|
||||||
|
| language模型配置 |
|
||||||
|
| api_key | string | 否 | 覆盖模型配置的 API Key |
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"transcript": "您好,请问有什么可以帮助您?",
|
||||||
|
"language": "zh",
|
||||||
|
"confidence": 0.95,
|
||||||
|
"latency_ms": 1500
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Schema 定义
|
## Schema 定义
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|||||||
@@ -20,24 +20,31 @@ interface Assistant {
|
|||||||
id: string; // 助手唯一标识 (8位UUID)
|
id: string; // 助手唯一标识 (8位UUID)
|
||||||
user_id: number; // 所属用户ID
|
user_id: number; // 所属用户ID
|
||||||
name: string; // 助手名称
|
name: string; // 助手名称
|
||||||
call_count: number; // 调用次数
|
callCount: number; // 调用次数
|
||||||
opener: string; // 开场白
|
firstTurnMode: string; // 首轮模式: "bot_first" | "user_first"
|
||||||
|
opener: string; // 开场白
|
||||||
|
generatedOpenerEnabled: boolean; // 是否启用生成式开场白
|
||||||
|
openerAudioEnabled: boolean; // 是否启用预生成开场音频
|
||||||
|
openerAudioReady: boolean; // 开场音频是否已生成
|
||||||
|
openerAudioDurationMs: number; // 开场音频时长(ms)
|
||||||
prompt: string; // 系统提示词/人格设定
|
prompt: string; // 系统提示词/人格设定
|
||||||
knowledge_base_id?: string; // 关联知识库ID
|
knowledgeBaseId?: string; // 关联知识库ID
|
||||||
language: string; // 语言: "zh" | "en"
|
language: string; // 语言: "zh" | "en"
|
||||||
voice?: string; // 声音ID
|
voiceOutputEnabled: boolean; // 是否启用语音输出
|
||||||
|
voice?: string; // 声音ID
|
||||||
speed: number; // 语速 (0.5-2.0)
|
speed: number; // 语速 (0.5-2.0)
|
||||||
hotwords: string[]; // 热词列表
|
hotwords: string[]; // 热词列表
|
||||||
tools: string[]; // 启用的工具ID列表
|
tools: string[]; // 启用的工具ID列表
|
||||||
interruption_sensitivity: number; // 打断灵敏度 (ms)
|
botCannotBeInterrupted: boolean; // 是否禁止打断
|
||||||
config_mode: string; // 配置模式: "platform" | "dify" | "fastgpt" | "none"
|
interruptionSensitivity: number; // 打断灵敏度 (ms)
|
||||||
api_url?: string; // 外部API URL
|
configMode: string; // 配置模式: "platform" | "dify" | "fastgpt" | "none"
|
||||||
api_key?: string; // 外部API Key
|
apiUrl?: string; // 外部API URL
|
||||||
// 模型关联 (新增)
|
apiKey?: string; // 外部API Key
|
||||||
llm_model_id?: string; // LLM模型ID
|
// 模型关联
|
||||||
asr_model_id?: string; // ASR模型ID
|
llmModelId?: string; // LLM模型ID
|
||||||
embedding_model_id?: string; // Embedding模型ID
|
asrModelId?: string; // ASR模型ID
|
||||||
rerank_model_id?: string; // Rerank模型ID
|
embeddingModelId?: string; // Embedding模型ID
|
||||||
|
rerankModelId?: string; // Rerank模型ID
|
||||||
created_at: string;
|
created_at: string;
|
||||||
updated_at: string;
|
updated_at: string;
|
||||||
}
|
}
|
||||||
@@ -219,22 +226,109 @@ DELETE. 删除助手
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 6. 获取助手调用统计
|
### 6. 获取助手引擎配置
|
||||||
|
|
||||||
```http
|
```http
|
||||||
GET /api/v1/assistants/{id}/stats
|
GET /api/v1/assistants/{id}/config
|
||||||
|
```
|
||||||
|
|
||||||
|
获取助手的运行时引擎配置,包含 LLM、ASR、TTS、知识库等服务的完整配置信息。
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"assistantId": "abc12345",
|
||||||
|
"configVersionId": "asst_abc12345_20240115103000",
|
||||||
|
"assistant": {
|
||||||
|
"systemPrompt": "你是一个专业的客服人员...",
|
||||||
|
"firstTurnMode": "bot_first",
|
||||||
|
"greeting": "您好,请问有什么可以帮助您?",
|
||||||
|
"generatedOpenerEnabled": false,
|
||||||
|
"output": {"mode": "audio"},
|
||||||
|
"bargeIn": {"enabled": true, "minDurationMs": 500},
|
||||||
|
"services": {
|
||||||
|
"llm": {"provider": "openai", "model": "gpt-4o", "apiKey": "...", "baseUrl": "..."},
|
||||||
|
"asr": {"provider": "openai_compatible", "model": "paraformer-realtime-v2", "apiKey": "..."},
|
||||||
|
"tts": {"enabled": true, "provider": "dashscope", "model": "qwen3-tts-flash-realtime", "voice": "Cherry", "speed": 1.0}
|
||||||
|
},
|
||||||
|
"tools": [...],
|
||||||
|
"knowledgeBaseId": "kb_001",
|
||||||
|
"openerAudio": {"enabled": true, "ready": true, "pcmUrl": "/api/assistants/abc12345/opener-audio/pcm"}
|
||||||
|
},
|
||||||
|
"sessionStartMetadata": {...},
|
||||||
|
"sources": {
|
||||||
|
"llmModelId": "llm_001",
|
||||||
|
"asrModelId": "asr_001",
|
||||||
|
"voiceId": "voice_001",
|
||||||
|
"knowledgeBaseId": "kb_001"
|
||||||
|
},
|
||||||
|
"warnings": []
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 7. 获取助手开场音频状态
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/assistants/{id}/opener-audio
|
||||||
```
|
```
|
||||||
|
|
||||||
**Response:**
|
**Response:**
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"assistant_id": "abc12345",
|
"enabled": true,
|
||||||
"total_calls": 128,
|
"ready": true,
|
||||||
"connected_calls": 120,
|
"encoding": "pcm_s16le",
|
||||||
"missed_calls": 8,
|
"sampleRateHz": 16000,
|
||||||
"avg_duration_seconds": 180,
|
"channels": 1,
|
||||||
"today_calls": 15
|
"durationMs": 2500,
|
||||||
|
"textHash": "abc123...",
|
||||||
|
"ttsFingerprint": "def456...",
|
||||||
|
"updatedAt": "2024-01-15T10:30:00Z"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 8. 下载开场音频 PCM 文件
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/assistants/{id}/opener-audio/pcm
|
||||||
|
```
|
||||||
|
|
||||||
|
返回 PCM 音频文件 (application/octet-stream)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 9. 生成开场音频
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/v1/assistants/{id}/opener-audio/generate
|
||||||
|
```
|
||||||
|
|
||||||
|
**Request Body:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"text": "您好,请问有什么可以帮助您?"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"enabled": true,
|
||||||
|
"ready": true,
|
||||||
|
"encoding": "pcm_s16le",
|
||||||
|
"sampleRateHz": 16000,
|
||||||
|
"channels": 1,
|
||||||
|
"durationMs": 2500,
|
||||||
|
"textHash": "abc123...",
|
||||||
|
"ttsFingerprint": "def456..."
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -289,86 +289,7 @@ GET /api/v1/history/{call_id}/audio/{turn_index}
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 8. 搜索通话记录
|
## Schema 定义
|
||||||
|
|
||||||
```http
|
|
||||||
GET /api/v1/history/search
|
|
||||||
```
|
|
||||||
|
|
||||||
**Query Parameters:**
|
|
||||||
|
|
||||||
| 参数 | 类型 | 必填 | 说明 |
|
|
||||||
|------|------|------|------|
|
|
||||||
| q | string | 是 | 搜索关键词 |
|
|
||||||
| page | int | 否 | 页码 |
|
|
||||||
| limit | int | 否 | 每页数量 |
|
|
||||||
|
|
||||||
**Response:**
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"total": 5,
|
|
||||||
"page": 1,
|
|
||||||
"limit": 20,
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"id": "call_001",
|
|
||||||
"started_at": "2024-01-15T14:30:00Z",
|
|
||||||
"matched_content": "用户咨询产品A的售后服务"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### 9. 获取统计信息
|
|
||||||
|
|
||||||
```http
|
|
||||||
GET /api/v1/history/stats
|
|
||||||
```
|
|
||||||
|
|
||||||
**Query Parameters:**
|
|
||||||
|
|
||||||
| 参数 | 类型 | 必填 | 说明 |
|
|
||||||
|------|------|------|------|
|
|
||||||
| start_date | string | 否 | 开始日期 |
|
|
||||||
| end_date | string | 否 | 结束日期 |
|
|
||||||
| assistant_id | string | 否 | 助手ID |
|
|
||||||
|
|
||||||
**Response:**
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"total_calls": 150,
|
|
||||||
"connected_calls": 135,
|
|
||||||
"missed_calls": 15,
|
|
||||||
"failed_calls": 0,
|
|
||||||
"avg_duration_seconds": 180,
|
|
||||||
"total_cost": 7.50,
|
|
||||||
"by_status": {
|
|
||||||
"connected": 135,
|
|
||||||
"missed": 15,
|
|
||||||
"failed": 0
|
|
||||||
},
|
|
||||||
"by_source": {
|
|
||||||
"debug": 100,
|
|
||||||
"external": 50
|
|
||||||
},
|
|
||||||
"daily_trend": [
|
|
||||||
{
|
|
||||||
"date": "2024-01-15",
|
|
||||||
"calls": 20,
|
|
||||||
"connected": 18,
|
|
||||||
"avg_duration": 175
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 推荐的 Schema 定义
|
|
||||||
|
|
||||||
```python
|
```python
|
||||||
# ============ Call Record ============
|
# ============ Call Record ============
|
||||||
@@ -440,17 +361,6 @@ class TranscriptOut(TranscriptCreate):
|
|||||||
|
|
||||||
class Config:
|
class Config:
|
||||||
from_attributes = True
|
from_attributes = True
|
||||||
|
|
||||||
class HistoryStats(BaseModel):
|
|
||||||
total_calls: int
|
|
||||||
connected_calls: int
|
|
||||||
missed_calls: int
|
|
||||||
failed_calls: int
|
|
||||||
avg_duration_seconds: float
|
|
||||||
total_cost: float
|
|
||||||
by_status: dict
|
|
||||||
by_source: dict
|
|
||||||
daily_trend: List[dict]
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -9,7 +9,9 @@
|
|||||||
| 小助手 | [assistant.md](./assistant.md) | AI 助手管理 |
|
| 小助手 | [assistant.md](./assistant.md) | AI 助手管理 |
|
||||||
| LLM 模型 | [llm.md](./llm.md) | LLM 模型配置与管理 |
|
| LLM 模型 | [llm.md](./llm.md) | LLM 模型配置与管理 |
|
||||||
| ASR 模型 | [asr.md](./asr.md) | 语音识别模型配置 |
|
| ASR 模型 | [asr.md](./asr.md) | 语音识别模型配置 |
|
||||||
|
| 声音资源 | [voice-resources.md](./voice-resources.md) | TTS 语音配置 |
|
||||||
| 工具与测试 | [tools.md](./tools.md) | 工具列表与自动测试 |
|
| 工具与测试 | [tools.md](./tools.md) | 工具列表与自动测试 |
|
||||||
|
| 知识库 | [knowledge.md](./knowledge.md) | 知识库与文档管理 |
|
||||||
| 历史记录 | [history-records.md](./history-records.md) | 通话记录和转写 |
|
| 历史记录 | [history-records.md](./history-records.md) | 通话记录和转写 |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
420
api/docs/knowledge.md
Normal file
420
api/docs/knowledge.md
Normal file
@@ -0,0 +1,420 @@
|
|||||||
|
# 知识库 (Knowledge Base) API
|
||||||
|
|
||||||
|
知识库 API 用于管理知识库和文档的创建、索引和搜索。
|
||||||
|
|
||||||
|
## 基础信息
|
||||||
|
|
||||||
|
| 项目 | 值 |
|
||||||
|
|------|-----|
|
||||||
|
| Base URL | `/api/v1/knowledge` |
|
||||||
|
| 认证方式 | Bearer Token (预留) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 数据模型
|
||||||
|
|
||||||
|
### KnowledgeBase
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface KnowledgeBase {
|
||||||
|
id: string; // 知识库唯一标识 (8位UUID)
|
||||||
|
user_id: number; // 所属用户ID
|
||||||
|
name: string; // 知识库名称
|
||||||
|
description: string; // 知识库描述
|
||||||
|
embeddingModel: string; // Embedding 模型名称
|
||||||
|
chunkSize: number; // 文档分块大小
|
||||||
|
chunkOverlap: number; // 分块重叠大小
|
||||||
|
docCount: number; // 文档数量
|
||||||
|
chunkCount: number; // 切分后的文本块数量
|
||||||
|
status: string; // 状态: "active" | "inactive"
|
||||||
|
createdAt: string; // 创建时间
|
||||||
|
updatedAt: string; // 更新时间
|
||||||
|
documents: KnowledgeDocument[]; // 关联的文档列表
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### KnowledgeDocument
|
||||||
|
|
||||||
|
```typescript
|
||||||
|
interface KnowledgeDocument {
|
||||||
|
id: string; // 文档唯一标识
|
||||||
|
kb_id: string; // 所属知识库ID
|
||||||
|
name: string; // 文档名称
|
||||||
|
size: string; // 文件大小
|
||||||
|
fileType: string; // 文件类型
|
||||||
|
storageUrl: string; // 存储地址
|
||||||
|
status: string; // 状态: "pending" | "processing" | "completed" | "failed"
|
||||||
|
chunkCount: number; // 切分后的文本块数量
|
||||||
|
errorMessage: string; // 错误信息
|
||||||
|
uploadDate: string; // 上传时间
|
||||||
|
createdAt: string; // 创建时间
|
||||||
|
processedAt: string; // 处理完成时间
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API 端点
|
||||||
|
|
||||||
|
### 1. 获取知识库列表
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/knowledge/bases
|
||||||
|
```
|
||||||
|
|
||||||
|
**Query Parameters:**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
||||||
|
|------|------|------|--------|------|
|
||||||
|
| user_id | int | 否 | 1 | 用户ID |
|
||||||
|
| page | int | 否 | 1 | 页码 |
|
||||||
|
| limit | int | 否 | 50 | 每页数量 |
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"total": 2,
|
||||||
|
"page": 1,
|
||||||
|
"limit": 50,
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"id": "kb_001",
|
||||||
|
"user_id": 1,
|
||||||
|
"name": "产品知识库",
|
||||||
|
"description": "产品文档和FAQ",
|
||||||
|
"embeddingModel": "text-embedding-3-small",
|
||||||
|
"chunkSize": 500,
|
||||||
|
"chunkOverlap": 50,
|
||||||
|
"docCount": 10,
|
||||||
|
"chunkCount": 150,
|
||||||
|
"status": "active",
|
||||||
|
"createdAt": "2024-01-15T10:30:00",
|
||||||
|
"updatedAt": "2024-01-15T10:30:00",
|
||||||
|
"documents": [...]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. 获取单个知识库详情
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/knowledge/bases/{kb_id}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "kb_001",
|
||||||
|
"user_id": 1,
|
||||||
|
"name": "产品知识库",
|
||||||
|
"description": "产品文档和FAQ",
|
||||||
|
"embeddingModel": "text-embedding-3-small",
|
||||||
|
"chunkSize": 500,
|
||||||
|
"chunkOverlap": 50,
|
||||||
|
"docCount": 10,
|
||||||
|
"chunkCount": 150,
|
||||||
|
"status": "active",
|
||||||
|
"createdAt": "2024-01-15T10:30:00",
|
||||||
|
"updatedAt": "2024-01-15T10:30:00",
|
||||||
|
"documents": [
|
||||||
|
{
|
||||||
|
"id": "doc_001",
|
||||||
|
"kb_id": "kb_001",
|
||||||
|
"name": "产品手册.pdf",
|
||||||
|
"size": "1.2 MB",
|
||||||
|
"fileType": "application/pdf",
|
||||||
|
"storageUrl": "",
|
||||||
|
"status": "completed",
|
||||||
|
"chunkCount": 45,
|
||||||
|
"errorMessage": null,
|
||||||
|
"uploadDate": "2024-01-15T10:30:00",
|
||||||
|
"createdAt": "2024-01-15T10:30:00",
|
||||||
|
"processedAt": "2024-01-15T10:30:05"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. 创建知识库
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/v1/knowledge/bases
|
||||||
|
```
|
||||||
|
|
||||||
|
**Request Body:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "产品知识库",
|
||||||
|
"description": "产品文档和FAQ",
|
||||||
|
"embeddingModel": "text-embedding-3-small",
|
||||||
|
"chunkSize": 500,
|
||||||
|
"chunkOverlap": 50
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Fields 说明:**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| name | string | 是 | 知识库名称 |
|
||||||
|
| description | string | 否 | 知识库描述 |
|
||||||
|
| embeddingModel | string | 否 | Embedding 模型名称,默认 "text-embedding-3-small" |
|
||||||
|
| chunkSize | int | 否 | 文档分块大小,默认 500 |
|
||||||
|
| chunkOverlap | int | 否 | 分块重叠大小,默认 50 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. 更新知识库
|
||||||
|
|
||||||
|
```http
|
||||||
|
PUT /api/v1/knowledge/bases/{kb_id}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Request Body:** (部分更新)
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "更新后的知识库名称",
|
||||||
|
"description": "新的描述",
|
||||||
|
"chunkSize": 800
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**注意:** 如果知识库中已有索引的文档,则不能修改 embeddingModel。如需修改,请先删除所有文档。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. 删除知识库
|
||||||
|
|
||||||
|
```http
|
||||||
|
DELETE /api/v1/knowledge/bases/{kb_id}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"message": "Deleted successfully"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**注意:** 删除知识库会同时删除向量数据库中的相关数据。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 6. 上传文档
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/v1/knowledge/bases/{kb_id}/documents
|
||||||
|
```
|
||||||
|
|
||||||
|
支持两种上传方式:
|
||||||
|
|
||||||
|
**方式一:文件上传 (multipart/form-data)**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| file | file | 是 | 要上传的文档文件 |
|
||||||
|
|
||||||
|
支持的文件类型:`.txt`, `.md`, `.csv`, `.json`, `.pdf`, `.docx`
|
||||||
|
|
||||||
|
**方式二:仅创建文档记录 (application/json)**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "document.pdf",
|
||||||
|
"size": "1.2 MB",
|
||||||
|
"fileType": "application/pdf",
|
||||||
|
"storageUrl": "https://storage.example.com/doc.pdf"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response (文件上传):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "doc_001",
|
||||||
|
"name": "产品手册.pdf",
|
||||||
|
"size": "1.2 MB",
|
||||||
|
"fileType": "application/pdf",
|
||||||
|
"storageUrl": "",
|
||||||
|
"status": "completed",
|
||||||
|
"chunkCount": 45,
|
||||||
|
"message": "Document uploaded and indexed"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 7. 索引文档内容
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/v1/knowledge/bases/{kb_id}/documents/{doc_id}/index
|
||||||
|
```
|
||||||
|
|
||||||
|
直接向向量数据库索引文本内容,无需上传文件。
|
||||||
|
|
||||||
|
**Request Body:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"content": "要索引的文本内容..."
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"message": "Document indexed",
|
||||||
|
"chunkCount": 10
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 8. 删除文档
|
||||||
|
|
||||||
|
```http
|
||||||
|
DELETE /api/v1/knowledge/bases/{kb_id}/documents/{doc_id}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"message": "Deleted successfully"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 9. 搜索知识库
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/v1/knowledge/search
|
||||||
|
```
|
||||||
|
|
||||||
|
**Request Body:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"kb_id": "kb_001",
|
||||||
|
"query": "产品退货政策",
|
||||||
|
"nResults": 5
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Fields 说明:**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| kb_id | string | 是 | 知识库ID |
|
||||||
|
| query | string | 是 | 搜索查询文本 |
|
||||||
|
| nResults | int | 否 | 返回结果数量,默认 5 |
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"results": [
|
||||||
|
{
|
||||||
|
"id": "doc_001",
|
||||||
|
"text": "我们的退货政策是...",
|
||||||
|
"score": 0.85,
|
||||||
|
"metadata": {
|
||||||
|
"document_name": "退货政策.pdf",
|
||||||
|
"chunk_index": 3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 10. 获取知识库统计
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/knowledge/bases/{kb_id}/stats
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"kb_id": "kb_001",
|
||||||
|
"docCount": 10,
|
||||||
|
"chunkCount": 150
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 支持的文件类型
|
||||||
|
|
||||||
|
| 文件类型 | 扩展名 | 说明 |
|
||||||
|
|----------|--------|------|
|
||||||
|
| 纯文本 | .txt | 纯文本文件 |
|
||||||
|
| Markdown | .md | Markdown 格式文档 |
|
||||||
|
| CSV | .csv | CSV 表格数据 |
|
||||||
|
| JSON | .json | JSON 格式数据 |
|
||||||
|
| PDF | .pdf | PDF 文档 (需要 pypdf) |
|
||||||
|
| Word | .docx | Word 文档 (需要 python-docx) |
|
||||||
|
|
||||||
|
**注意:** 不支持旧的 .doc 格式,请转换为 .docx 或其他格式。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schema 定义
|
||||||
|
|
||||||
|
```python
|
||||||
|
from pydantic import BaseModel
|
||||||
|
from typing import Optional, List
|
||||||
|
|
||||||
|
class KnowledgeBaseCreate(BaseModel):
|
||||||
|
name: str
|
||||||
|
description: Optional[str] = None
|
||||||
|
embeddingModel: Optional[str] = "text-embedding-3-small"
|
||||||
|
chunkSize: Optional[int] = 500
|
||||||
|
chunkOverlap: Optional[int] = 50
|
||||||
|
|
||||||
|
class KnowledgeBaseUpdate(BaseModel):
|
||||||
|
name: Optional[str] = None
|
||||||
|
description: Optional[str] = None
|
||||||
|
embeddingModel: Optional[str] = None
|
||||||
|
chunkSize: Optional[int] = None
|
||||||
|
chunkOverlap: Optional[int] = None
|
||||||
|
|
||||||
|
class KnowledgeSearchQuery(BaseModel):
|
||||||
|
kb_id: str
|
||||||
|
query: str
|
||||||
|
nResults: Optional[int] = 5
|
||||||
|
|
||||||
|
class DocumentIndexRequest(BaseModel):
|
||||||
|
content: str
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 单元测试
|
||||||
|
|
||||||
|
项目包含完整的单元测试,位于 `api/tests/test_knowledge.py`。
|
||||||
|
|
||||||
|
### 运行测试
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 运行知识库相关测试
|
||||||
|
pytest api/tests/test_knowledge.py -v
|
||||||
|
|
||||||
|
# 运行所有测试
|
||||||
|
pytest api/tests/ -v
|
||||||
|
```
|
||||||
@@ -258,6 +258,68 @@ POST /api/v1/llm/{id}/chat
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### 8. 预览模型输出
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/v1/llm/{id}/preview
|
||||||
|
```
|
||||||
|
|
||||||
|
预览模型输出,支持 text(chat) 与 embedding 两类模型。
|
||||||
|
|
||||||
|
**Request Body:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"message": "请介绍一下你自己",
|
||||||
|
"system_prompt": "你是一个专业的AI助手",
|
||||||
|
"max_tokens": 512,
|
||||||
|
"temperature": 0.7
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response (text model):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"reply": "您好!我是一个...",
|
||||||
|
"usage": {
|
||||||
|
"prompt_tokens": 20,
|
||||||
|
"completion_tokens": 50,
|
||||||
|
"total_tokens": 70
|
||||||
|
},
|
||||||
|
"latency_ms": 1500,
|
||||||
|
"error": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Response (embedding model):**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"success": true,
|
||||||
|
"reply": "Embedding generated successfully. dims=1536. head=[0.012345, -0.023456, ...]",
|
||||||
|
"usage": {
|
||||||
|
"prompt_tokens": 10,
|
||||||
|
"total_tokens": 10
|
||||||
|
},
|
||||||
|
"latency_ms": 800,
|
||||||
|
"error": null
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Fields 说明:**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| message | string | 是 | 用户消息/嵌入文本 |
|
||||||
|
| system_prompt | string | 否 | 系统提示词 (仅 text 模型) |
|
||||||
|
| max_tokens | int | 否 | 最大生成 token 数 (默认 512) |
|
||||||
|
| temperature | float | 否 | 温度参数 |
|
||||||
|
| api_key | string | 否 | 覆盖模型配置的 API Key |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Schema 定义
|
## Schema 定义
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
|||||||
@@ -15,14 +15,23 @@
|
|||||||
|
|
||||||
系统内置以下工具:
|
系统内置以下工具:
|
||||||
|
|
||||||
| 工具ID | 名称 | 说明 |
|
| 工具ID | 名称 | 类别 | 说明 |
|
||||||
|--------|------|------|
|
|--------|------|------|------|
|
||||||
| search | 网络搜索 | 搜索互联网获取最新信息 |
|
| calculator | 计算器 | query | 执行数学计算 |
|
||||||
| calculator | 计算器 | 执行数学计算 |
|
| code_interpreter | 代码执行 | query | 安全地执行Python代码 |
|
||||||
| weather | 天气查询 | 查询指定城市的天气 |
|
| current_time | 当前时间 | query | 获取当前本地时间 |
|
||||||
| translate | 翻译 | 翻译文本到指定语言 |
|
| turn_on_camera | 打开摄像头 | system | 执行打开摄像头命令 |
|
||||||
| knowledge | 知识库查询 | 从知识库中检索相关信息 |
|
| turn_off_camera | 关闭摄像头 | system | 执行关闭摄像头命令 |
|
||||||
| code_interpreter | 代码执行 | 安全地执行Python代码 |
|
| increase_volume | 调高音量 | system | 提升设备音量 |
|
||||||
|
| decrease_volume | 调低音量 | system | 降低设备音量 |
|
||||||
|
| voice_message_prompt | 语音消息提示 | system | 播报一条语音提示消息 |
|
||||||
|
| text_msg_prompt | 文本消息提示 | system | 显示一条文本弹窗提示 |
|
||||||
|
| voice_choice_prompt | 语音选项提示 | system | 播报问题并展示可选项,等待用户选择 |
|
||||||
|
| text_choice_prompt | 文本选项提示 | system | 显示文本选项弹窗并等待用户选择 |
|
||||||
|
|
||||||
|
**类别说明:**
|
||||||
|
- `query`: 查询类工具,需要配置 HTTP URL
|
||||||
|
- `system`: 系统类工具,直接在客户端执行
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -169,6 +178,132 @@ GET /api/v1/tools/health
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### 4. 获取工具资源列表
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/tools/resources
|
||||||
|
```
|
||||||
|
|
||||||
|
**Query Parameters:**
|
||||||
|
|
||||||
|
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|
||||||
|
|------|------|------|--------|------|
|
||||||
|
| category | string | 否 | - | 过滤类别: "query" \| "system" |
|
||||||
|
| enabled | boolean | 否 | - | 过滤启用状态 |
|
||||||
|
| include_system | boolean | 否 | true | 是否包含系统工具 |
|
||||||
|
| page | int | 否 | 1 | 页码 |
|
||||||
|
| limit | int | 否 | 100 | 每页数量 |
|
||||||
|
|
||||||
|
**Response:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"total": 15,
|
||||||
|
"page": 1,
|
||||||
|
"limit": 100,
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"id": "calculator",
|
||||||
|
"user_id": 1,
|
||||||
|
"name": "计算器",
|
||||||
|
"description": "执行数学计算",
|
||||||
|
"category": "query",
|
||||||
|
"icon": "Terminal",
|
||||||
|
"http_method": "GET",
|
||||||
|
"http_url": null,
|
||||||
|
"http_timeout_ms": 10000,
|
||||||
|
"parameter_schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"expression": {"type": "string", "description": "数学表达式"}
|
||||||
|
},
|
||||||
|
"required": ["expression"]
|
||||||
|
},
|
||||||
|
"parameter_defaults": {},
|
||||||
|
"wait_for_response": false,
|
||||||
|
"enabled": true,
|
||||||
|
"is_system": true,
|
||||||
|
"created_at": "2024-01-15T10:30:00Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 5. 获取工具资源详情
|
||||||
|
|
||||||
|
```http
|
||||||
|
GET /api/v1/tools/resources/{id}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 6. 创建工具资源
|
||||||
|
|
||||||
|
```http
|
||||||
|
POST /api/v1/tools/resources
|
||||||
|
```
|
||||||
|
|
||||||
|
**Request Body:**
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "订单查询",
|
||||||
|
"description": "查询用户订单信息",
|
||||||
|
"category": "query",
|
||||||
|
"icon": "Search",
|
||||||
|
"http_method": "POST",
|
||||||
|
"http_url": "https://api.example.com/orders",
|
||||||
|
"http_headers": {"Authorization": "Bearer {api_key}"},
|
||||||
|
"http_timeout_ms": 10000,
|
||||||
|
"parameter_schema": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"order_id": {"type": "string", "description": "订单ID"}
|
||||||
|
},
|
||||||
|
"required": ["order_id"]
|
||||||
|
},
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**Fields 说明:**
|
||||||
|
|
||||||
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|
|------|------|------|------|
|
||||||
|
| id | string | 否 | 工具ID,默认自动生成 |
|
||||||
|
| name | string | 是 | 工具名称 |
|
||||||
|
| description | string | 否 | 工具描述 |
|
||||||
|
| category | string | 是 | 类别: "query" \| "system" |
|
||||||
|
| icon | string | 否 | 图标名称 |
|
||||||
|
| http_method | string | 否 | HTTP 方法,默认 GET |
|
||||||
|
| http_url | string | 否* | HTTP 请求地址 (query 类必填) |
|
||||||
|
| http_headers | object | 否 | HTTP 请求头 |
|
||||||
|
| http_timeout_ms | int | 否 | 超时时间(毫秒),默认 10000 |
|
||||||
|
| parameter_schema | object | 否 | 参数 JSON Schema |
|
||||||
|
| parameter_defaults | object | 否 | 默认参数值 |
|
||||||
|
| wait_for_response | boolean | 否 | 是否等待响应 (仅 system 类) |
|
||||||
|
| enabled | boolean | 否 | 是否启用,默认 true |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 7. 更新工具资源
|
||||||
|
|
||||||
|
```http
|
||||||
|
PUT /api/v1/tools/resources/{id}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 8. 删除工具资源
|
||||||
|
|
||||||
|
```http
|
||||||
|
DELETE /api/v1/tools/resources/{id}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 自动测试 (Autotest)
|
## 自动测试 (Autotest)
|
||||||
|
|
||||||
### 4. 运行完整自动测试
|
### 4. 运行完整自动测试
|
||||||
|
|||||||
@@ -182,12 +182,14 @@ POST /api/v1/voices
|
|||||||
| 字段 | 类型 | 必填 | 说明 |
|
| 字段 | 类型 | 必填 | 说明 |
|
||||||
|------|------|------|------|
|
|------|------|------|------|
|
||||||
| name | string | 是 | 声音名称 |
|
| name | string | 是 | 声音名称 |
|
||||||
| vendor | string | 是 | 供应商 |
|
| vendor | string | 是 | 供应商: "Ali" \| "Volcano" \| "Minimax" \| "OpenAI Compatible" \| "DashScope" |
|
||||||
| gender | string | 是 | 性别: "Male" \| "Female" |
|
| gender | string | 是 | 性别: "Male" \| "Female" |
|
||||||
| language | string | 是 | 语言: "zh" \| "en" |
|
| language | string | 是 | 语言: "zh" \| "en" |
|
||||||
| description | string | 否 | 描述信息 |
|
| description | string | 否 | 描述信息 |
|
||||||
| model | string | 是 | 厂商语音模型标识 |
|
| model | string | 否 | 厂商语音模型标识 (可选,部分供应商有默认值) |
|
||||||
| voice_key | string | 是 | 厂商voice_key |
|
| voice_key | string | 否 | 厂商 voice_key (可选,部分供应商有默认值) |
|
||||||
|
| api_key | string | 否 | 供应商 API Key (可选,也可通过环境变量配置) |
|
||||||
|
| base_url | string | 否 | API Base URL (可选,部分供应商有默认值) |
|
||||||
| speed | number | 否 | 默认语速 (0.5-2.0),默认 1.0 |
|
| speed | number | 否 | 默认语速 (0.5-2.0),默认 1.0 |
|
||||||
| gain | number | 否 | 音量增益 (-10~10 dB),默认 0 |
|
| gain | number | 否 | 音量增益 (-10~10 dB),默认 0 |
|
||||||
| pitch | number | 否 | 音调调整,默认 0 |
|
| pitch | number | 否 | 音调调整,默认 0 |
|
||||||
@@ -244,11 +246,14 @@ POST /api/v1/voices/{id}/preview
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"success": true,
|
"success": true,
|
||||||
"audio_url": "https://storage.example.com/preview/voice_001_preview.mp3",
|
"audio_url": "data:audio/wav;base64,UklGRi...",
|
||||||
"duration_ms": 2500
|
"duration_ms": 2500,
|
||||||
|
"error": null
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**注意:** `audio_url` 返回 Base64 编码的音频数据 (data URI 格式),可直接在浏览器中播放或解码保存为音频文件。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### 7. 获取供应商声音列表
|
### 7. 获取供应商声音列表
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ AI Video Assistant 提供两种类型的 API:
|
|||||||
### 基础地址
|
### 基础地址
|
||||||
|
|
||||||
```
|
```
|
||||||
http://localhost:8080/api/v1
|
http://localhost:8000/api/v1
|
||||||
```
|
```
|
||||||
|
|
||||||
### 认证
|
### 认证
|
||||||
@@ -25,7 +25,7 @@ REST API 使用 Bearer Token 认证:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -H "Authorization: Bearer YOUR_API_KEY" \
|
curl -H "Authorization: Bearer YOUR_API_KEY" \
|
||||||
http://localhost:8080/api/v1/assistants
|
http://localhost:8000/api/v1/assistants
|
||||||
```
|
```
|
||||||
|
|
||||||
### 通用响应格式
|
### 通用响应格式
|
||||||
@@ -74,8 +74,11 @@ curl -H "Authorization: Bearer YOUR_API_KEY" \
|
|||||||
| GET | /assistants | 获取助手列表 |
|
| GET | /assistants | 获取助手列表 |
|
||||||
| POST | /assistants | 创建助手 |
|
| POST | /assistants | 创建助手 |
|
||||||
| GET | /assistants/{id} | 获取助手详情 |
|
| GET | /assistants/{id} | 获取助手详情 |
|
||||||
| PATCH | /assistants/{id} | 更新助手 |
|
| PUT | /assistants/{id} | 更新助手 |
|
||||||
| DELETE | /assistants/{id} | 删除助手 |
|
| DELETE | /assistants/{id} | 删除助手 |
|
||||||
|
| GET | /assistants/{id}/config | 获取引擎配置 |
|
||||||
|
| GET | /assistants/{id}/opener-audio | 获取开场音频状态 |
|
||||||
|
| POST | /assistants/{id}/opener-audio/generate | 生成开场音频 |
|
||||||
|
|
||||||
#### 模型管理
|
#### 模型管理
|
||||||
|
|
||||||
@@ -83,19 +86,48 @@ curl -H "Authorization: Bearer YOUR_API_KEY" \
|
|||||||
|------|------|------|
|
|------|------|------|
|
||||||
| GET | /llm | 获取 LLM 模型列表 |
|
| GET | /llm | 获取 LLM 模型列表 |
|
||||||
| POST | /llm | 添加 LLM 模型 |
|
| POST | /llm | 添加 LLM 模型 |
|
||||||
|
| PUT | /llm/{id} | 更新 LLM 模型 |
|
||||||
|
| DELETE | /llm/{id} | 删除 LLM 模型 |
|
||||||
|
| POST | /llm/{id}/test | 测试 LLM 连接 |
|
||||||
|
| POST | /llm/{id}/preview | 预览模型输出 |
|
||||||
| GET | /asr | 获取 ASR 模型列表 |
|
| GET | /asr | 获取 ASR 模型列表 |
|
||||||
| POST | /asr | 添加 ASR 模型 |
|
| POST | /asr | 添加 ASR 模型 |
|
||||||
|
| PUT | /asr/{id} | 更新 ASR 模型 |
|
||||||
|
| DELETE | /asr/{id} | 删除 ASR 模型 |
|
||||||
|
| POST | /asr/{id}/test | 测试 ASR 连接 |
|
||||||
|
| POST | /asr/{id}/preview | 上传音频预览识别 |
|
||||||
| GET | /voices | 获取语音列表 |
|
| GET | /voices | 获取语音列表 |
|
||||||
| POST | /voices | 添加语音配置 |
|
| POST | /voices | 添加语音配置 |
|
||||||
|
| PUT | /voices/{id} | 更新语音配置 |
|
||||||
|
| DELETE | /voices/{id} | 删除语音配置 |
|
||||||
|
| POST | /voices/{id}/preview | 预览声音 |
|
||||||
|
|
||||||
#### 知识库管理
|
#### 知识库管理
|
||||||
|
|
||||||
| 方法 | 路径 | 说明 |
|
| 方法 | 路径 | 说明 |
|
||||||
|------|------|------|
|
|------|------|------|
|
||||||
| GET | /knowledge-bases | 获取知识库列表 |
|
| GET | /knowledge/bases | 获取知识库列表 |
|
||||||
| POST | /knowledge-bases | 创建知识库 |
|
| POST | /knowledge/bases | 创建知识库 |
|
||||||
| POST | /knowledge-bases/{id}/documents | 上传文档 |
|
| PUT | /knowledge/bases/{id} | 更新知识库 |
|
||||||
| DELETE | /knowledge-bases/{id}/documents/{doc_id} | 删除文档 |
|
| DELETE | /knowledge/bases/{id} | 删除知识库 |
|
||||||
|
| POST | /knowledge/bases/{id}/documents | 上传文档 |
|
||||||
|
| POST | /knowledge/bases/{id}/documents/{doc_id}/index | 索引文档内容 |
|
||||||
|
| DELETE | /knowledge/bases/{id}/documents/{doc_id} | 删除文档 |
|
||||||
|
| POST | /knowledge/search | 搜索知识库 |
|
||||||
|
| GET | /knowledge/bases/{id}/stats | 获取统计信息 |
|
||||||
|
|
||||||
|
#### 工具管理
|
||||||
|
|
||||||
|
| 方法 | 路径 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| GET | /tools/list | 获取内置工具列表 |
|
||||||
|
| GET | /tools/resources | 获取工具资源列表 |
|
||||||
|
| POST | /tools/resources | 创建工具资源 |
|
||||||
|
| PUT | /tools/resources/{id} | 更新工具资源 |
|
||||||
|
| DELETE | /tools/resources/{id} | 删除工具资源 |
|
||||||
|
| GET | /tools/health | 健康检查 |
|
||||||
|
| POST | /tools/autotest | 运行自动测试 |
|
||||||
|
| POST | /tools/test-message | 发送测试消息 |
|
||||||
|
|
||||||
#### 历史记录
|
#### 历史记录
|
||||||
|
|
||||||
@@ -103,7 +135,11 @@ curl -H "Authorization: Bearer YOUR_API_KEY" \
|
|||||||
|------|------|------|
|
|------|------|------|
|
||||||
| GET | /history | 获取对话历史 |
|
| GET | /history | 获取对话历史 |
|
||||||
| GET | /history/{id} | 获取对话详情 |
|
| GET | /history/{id} | 获取对话详情 |
|
||||||
| GET | /history/stats | 获取统计数据 |
|
| POST | /history | 创建通话记录 |
|
||||||
|
| PUT | /history/{id} | 更新通话记录 |
|
||||||
|
| DELETE | /history/{id} | 删除通话记录 |
|
||||||
|
| POST | /history/{id}/transcripts | 添加转写片段 |
|
||||||
|
| GET | /history/{id}/audio/{turn_index} | 获取音频文件 |
|
||||||
|
|
||||||
## WebSocket API
|
## WebSocket API
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user