AI VideoAssistant Backend
Python 后端 API,配合前端 web/ 模块使用。
快速开始
1. 安装依赖
2. 初始化数据库
这会:
- 创建
data/app.db SQLite 数据库
- 初始化默认声音数据
3. 启动服务
服务运行在: http://localhost:8100
4. 测试 API
API 文档
完整 API 文档位于 docs/ 目录:
| 模块 |
端点 |
方法 |
说明 |
| Assistant |
/api/assistants |
GET |
助手列表 |
|
|
POST |
创建助手 |
|
/api/assistants/{id} |
GET |
助手详情 |
|
|
PUT |
更新助手 |
|
|
DELETE |
删除助手 |
| Voice |
/api/voices |
GET |
声音库列表 |
|
|
POST |
添加声音 |
|
/api/voices/{id} |
GET |
声音详情 |
|
|
PUT |
更新声音 |
|
|
DELETE |
删除声音 |
|
/api/voices/{id}/preview |
POST |
预览声音 |
| LLM Models |
/api/llm |
GET |
LLM 模型列表 |
|
|
POST |
添加模型 |
|
/api/llm/{id} |
GET |
模型详情 |
|
|
PUT |
更新模型 |
|
|
DELETE |
删除模型 |
|
/api/llm/{id}/test |
POST |
测试模型连接 |
| ASR Models |
/api/asr |
GET |
ASR 模型列表 |
|
|
POST |
添加模型 |
|
/api/asr/{id} |
GET |
模型详情 |
|
|
PUT |
更新模型 |
|
|
DELETE |
删除模型 |
|
/api/asr/{id}/test |
POST |
测试识别 |
| History |
/api/history |
GET |
通话历史列表 |
|
/api/history/{id} |
GET |
通话详情 |
|
|
PUT |
更新通话记录 |
|
|
DELETE |
删除记录 |
|
/api/history/{id}/transcripts |
POST |
添加转写 |
|
/api/history/search |
GET |
搜索历史 |
|
/api/history/stats |
GET |
统计数据 |
| Knowledge |
/api/knowledge/bases |
GET |
知识库列表 |
|
|
POST |
创建知识库 |
|
/api/knowledge/bases/{id} |
GET |
知识库详情 |
|
|
PUT |
更新知识库 |
|
|
DELETE |
删除知识库 |
|
/api/knowledge/bases/{kb_id}/documents |
POST |
上传文档 |
|
/api/knowledge/bases/{kb_id}/documents/{doc_id} |
DELETE |
删除文档 |
|
/api/knowledge/bases/{kb_id}/documents/{doc_id}/index |
POST |
索引文档 |
|
/api/knowledge/search |
POST |
知识搜索 |
| Workflow |
/api/workflows |
GET |
工作流列表 |
|
|
POST |
创建工作流 |
|
/api/workflows/{id} |
GET |
工作流详情 |
|
|
PUT |
更新工作流 |
|
|
DELETE |
删除工作流 |
数据模型
Assistant (小助手)
| 字段 |
类型 |
说明 |
| id |
string |
助手 ID |
| name |
string |
助手名称 |
| opener |
string |
开场白 |
| prompt |
string |
系统提示词 |
| knowledgeBaseId |
string |
关联知识库 ID |
| language |
string |
语言: zh/en |
| voice |
string |
声音 ID |
| speed |
float |
语速 (0.5-2.0) |
| hotwords |
array |
热词列表 |
| tools |
array |
启用的工具列表 |
| llmModelId |
string |
LLM 模型 ID |
| asrModelId |
string |
ASR 模型 ID |
| embeddingModelId |
string |
Embedding 模型 ID |
| rerankModelId |
string |
Rerank 模型 ID |
Voice (声音资源)
| 字段 |
类型 |
说明 |
| id |
string |
声音 ID |
| name |
string |
声音名称 |
| vendor |
string |
厂商: Ali/Volcano/Minimax |
| gender |
string |
性别: Male/Female |
| language |
string |
语言: zh/en |
| model |
string |
厂商模型标识 |
| voice_key |
string |
厂商 voice_key |
| speed |
float |
语速 |
| gain |
int |
增益 (dB) |
| pitch |
int |
音调 |
LLMModel (模型接入)
| 字段 |
类型 |
说明 |
| id |
string |
模型 ID |
| name |
string |
模型名称 |
| vendor |
string |
厂商 |
| type |
string |
类型: text/embedding/rerank |
| base_url |
string |
API 地址 |
| api_key |
string |
API 密钥 |
| model_name |
string |
模型名称 |
| temperature |
float |
温度参数 |
ASRModel (语音识别)
| 字段 |
类型 |
说明 |
| id |
string |
模型 ID |
| name |
string |
模型名称 |
| vendor |
string |
厂商 |
| language |
string |
语言: zh/en/Multi-lingual |
| base_url |
string |
API 地址 |
| api_key |
string |
API 密钥 |
| hotwords |
array |
热词列表 |
CallRecord (通话记录)
| 字段 |
类型 |
说明 |
| id |
string |
记录 ID |
| assistant_id |
string |
助手 ID |
| source |
string |
来源: debug/external |
| status |
string |
状态: connected/missed/failed |
| started_at |
string |
开始时间 |
| duration_seconds |
int |
通话时长 |
| summary |
string |
通话摘要 |
| transcripts |
array |
对话转写 |
使用 Docker 启动
目录结构
环境变量
| 变量 |
默认值 |
说明 |
PORT |
8100 |
服务端口 |
DATABASE_URL |
sqlite:///./data/app.db |
数据库连接 |
MINIO_ENDPOINT |
localhost:9000 |
MinIO 地址 |
MINIO_ACCESS_KEY |
admin |
MinIO 密钥 |
MINIO_SECRET_KEY |
password123 |
MinIO 密码 |
MINIO_BUCKET |
ai-audio |
存储桶名称 |
数据库迁移
开发环境重新创建数据库:
测试
安装测试依赖
运行所有测试
运行特定测试
测试覆盖率
测试目录结构
测试用例统计
| 模块 |
测试用例数 |
| Voice |
13 |
| Assistant |
14 |
| History |
18 |
| Knowledge |
19 |
| 总计 |
64 |
CI/CD 示例 (.github/workflows/test.yml)