基于 LiveKit 与 OpenAI Realtime API 的模块化语音 AI 平台,集成 RAG 知识库检索、JWT 认证与 MongoDB 持久化,支持实时外呼电话与领域特定对话。
项目概述#
SmartCall-Agent 是一个基于 Python (FastAPI) 构建的模块化语音 AI 平台。它集成了 LiveKit Agents 框架与 OpenAI Realtime API,能够通过 SIP Trunk 发起真实的电话外呼并进行低延迟的语音对话。
核心功能#
RAG 检索增强生成#
- 使用 Pinecone 向量数据库存储文档嵌入向量
- 通过 OpenAI
text-embedding-3-small生成嵌入 - 支持 PDF、TXT、DOCX、网页 URL 自动提取与分块(1000 字符/块,200 字符重叠)
- 命名空间隔离(
agent_{agent_id})实现多 Agent 知识隔离
外呼电话能力#
- 通过 LiveKit SIP Trunk 发起外呼
- 实时音频流处理
- 支持语音信箱检测与人工转接
语音 AI#
- 集成 OpenAI Realtime API 进行实时语音对话
- 支持 TTS/ASR(通过 OpenAI 语音模型)
- 可配置语音(voice)、语调、温度等参数
用户与权限管理#
- JWT 认证(HS256 算法)
- 密码 bcrypt 哈希
- 用户注册/登录/登出 API
数据持久化#
- MongoDB 存储 Agent、用户、通话记录、文档元数据
- Pinecone 存储向量嵌入
可观测性#
- 结构化日志
- 健康检查端点
/health - 仪表盘分析端点
/api/analytics/dashboard
架构组件#
| 组件 | 文件 | 职责 |
|---|---|---|
| FastAPI Backend | main.py | RESTful API、用户认证、Agent CRUD、文档向量化、通话发起 |
| LiveKit Agent Worker | worker.py | 独立进程,运行 KnowledgeAgent,处理实时语音流与工具调用 |
| MongoDB | - | 结构化数据存储(User, Agent, CallLog) |
| Pinecone | - | 向量数据存储(Document Chunks) |
关键 API 端点#
| 路径 | 方法 | 功能 |
|---|---|---|
/health | GET | 健康检查 |
/api/register | POST | 用户注册 |
/api/login | POST | 用户登录(返回 JWT) |
/api/agent | POST | 创建 Agent(含 RAG 文档) |
/api/agent/{agent_id} | GET/PATCH/DELETE | 获取/更新/删除 Agent |
/api/agents | GET | 列出所有 Agent |
/api/agent/{agent_id}/query | GET | 查询 Agent 知识库 |
/api/call | POST | 发起外呼电话 |
/api/calls | GET | 获取通话记录 |
/api/analytics/dashboard | GET | 仪表盘指标 |
部署要求#
- Python 3.10+
- OpenAI API Key
- Pinecone API Key
- LiveKit Cloud 账户及 SIP Trunk
- MongoDB 实例
适用场景#
- 智能客服外呼与回访
- 营销活动自动执行
- 预约提醒与通知
- 基于私有知识库的语音问答系统