Happy Partner是一个专为儿童设计的教育AI系统,结合了多种AI代理来提供安全、有趣和个性化的学习体验。
本系统采用模块化设计,主要包括以下组件:
- Meta Agent: 负责请求路由和分发
- Safety Agent: 内容安全检查,确保儿童接触的内容安全
- Edu Agent: 教育问答,提供学科知识解答
- Memory Agent: 对话记忆和上下文管理
- Emotion Agent: 情感陪伴,提供情绪支持
- Audio Service: 音频处理服务,包括语音识别、语音合成、音频预处理和声纹验证
- API服务: FastAPI构建的RESTful API接口
- 数据库服务: SQLAlchemy构建的数据持久化层
系统采用用户和代理类型级对话存储机制,确保对话历史的完整性和可追溯性:
- 同一用户与同一代理类型的所有对话都存储在同一个数据库记录中
- 每次用户输入和AI响应都会追加到该记录中
- 通过user_id和agent_type关联同一用户与同一代理类型的对话
- 使用JSON格式存储完整的对话历史
- 每条对话包含用户输入、AI响应和时间戳
- 支持按时间顺序查询和检索对话历史
GET /users/{user_id}/conversations- 获取用户对话历史GET /users/{user_id}/conversations/recent- 获取用户最近的对话记录GET /users/{user_id}/conversations/{agent_type}- 根据用户ID和代理类型获取对话记录GET /sessions/{session_id}/conversations- 获取会话中的所有对话
由于系统设计要求每次对话都创建新记录,长期运行会产生大量数据。为优化数据库性能和资源使用,建议采取以下措施:
- 将超过一定时间的历史数据移动到归档表中
- 保持主表数据量在合理范围内
- 定期删除不再需要的记录
- 根据业务需求设定数据保留期限
- 按时间维度对对话表进行分区
- 提高查询性能,便于数据管理
- 对历史数据采用压缩算法存储
- 减少磁盘空间占用
- 确保常用查询字段有适当索引
- 定期分析和优化索引使用情况
系统已实现以下数据库优化功能:
- archive_old_conversations方法可将指定天数之前的对话记录归档并压缩存储
- 归档的数据会被移动到专门的归档表中,并在主表中删除
- 数据在归档过程中会使用zlib算法进行压缩以节省存储空间
- 归档表使用二进制字段存储压缩后的数据
- delete_old_conversations方法可删除指定天数之前的对话记录
- 默认删除365天之前的记录,可以通过参数自定义
这些功能可以帮助管理系统长期运行产生的大量数据,保持数据库性能。
- 克隆项目代码
- 安装依赖:
poetry install - 配置环境变量,把.env.example改成.env,并添加大模型的api key和url
- 初始化数据库:
python db/init_db.py - 安装ffmpeg:
choco install ffmpeg - 启动服务:
python main.py
运行所有测试: python -m pytest
运行特定测试: python -m pytest tests/test_xxx.py
前端MVP完整功能实现(2025-08-27)
- ✅ 完整技术栈搭建 - Vite 5 + React 18 + TypeScript 5 + Ant Design 5
- ✅ API服务层完整实现 - Axios配置、拦截器、完整TypeScript类型系统
- ✅ 智能聊天功能 - 前后端完整打通,支持多代理智能路由
- ✅ 用户认证系统 - 登录功能、JWT令牌管理、自动错误处理
- ✅ 实时聊天界面 - 消息发送/接收、简化代理显示、实时状态反馈
- ✅ 开发环境配置 - 环境变量管理、热重载、代理配置
- 🎯 核心体验完整 - 用户可完整体验登录→聊天→AI响应的全流程
前端MVP界面完整实现(2025-08-26)
- ✅ Vite + React + TypeScript项目 - 现代化前端架构搭建完成
- ✅ React Router路由配置 - 多页面导航支持,包含聊天页和登录页
- ✅ Ant Design UI组件库 - 完整集成,提供一致的设计语言
- ✅ 基础布局组件 - Header、Sidebar、Content的响应式布局
- ✅ 聊天界面框架 - 消息列表和输入框基础组件
- ✅ 登录页面 - 完整的用户认证表单界面
- ✅ 开发服务器 - 运行在 http://localhost:3001,支持热重载
声纹验证系统完整实现(2025-08-24)
- ✅ 声纹特征数据库持久化存储,支持事务完整性
- ✅ 内存缓存优化,提高验证性能
- ✅ 完整的测试覆盖,包含真实数据库操作测试
- ✅ 音频预处理功能完整实现并测试验证
前端MVP功能完整
- 项目基础架构:Vite 5 + React 18 + TypeScript 5现代化技术栈
- 路由系统:React Router v7完整路由配置,支持嵌套路由
- UI组件库:Ant Design v5完整集成,提供丰富的预制组件
- API服务层:Axios配置、拦截器、完整TypeScript类型定义
- 智能聊天:前后端打通,支持多代理智能路由,实时消息处理
- 用户认证:登录界面、JWT令牌管理、自动错误处理和重定向
- 界面优化:简化代理显示、实时状态反馈、加载状态管理
- 开发环境:环境变量配置、热重载服务器、API代理配置
多代理架构完整
- Meta Agent:智能请求路由和分发
- Safety Agent:内容安全审查和过滤
- Edu Agent:教育问答和知识解答
- Emotion Agent:情感陪伴和心理支持
- Memory Agent:对话记忆管理
音频服务完整
- STT服务:语音转文本,支持音频预处理
- TTS服务:文本转语音,可调节语速音量
- 音频预处理:完整的预处理流水线(services/processing.py)
- ✅ 音频归一化:基于目标RMS值的音量标准化,支持自定义目标值
- ✅ 智能静音移除:可调阈值静音检测,支持最小静音持续时间配置
- ✅ 高质量重采样:使用scipy.signal.resample算法,支持任意采样率转换
- ✅ 完整预处理流程:静音移除 → 归一化 → 重采样
- 声纹验证:完整的生物特征认证系统(services/verification.py)
- ✅ 多维度特征提取:MFCC系数、频谱质心、过零率、频段能量分布
- ✅ 数据库持久化存储:SQLite + SQLAlchemy ORM存储声纹特征
- ✅ 内存缓存优化:LRU缓存策略加速验证性能
- ✅ 事务安全:数据库操作完整性保障,包含提交验证机制
- ✅ 完整验证日志:记录所有验证尝试和结果
API接口丰富
- 完整的RESTful API设计
- 用户认证和会话管理
- 对话历史查询和检索
- 安全日志记录和审计
数据库优化
- 对话归档和压缩功能(zlib压缩)
- 数据清理和定期维护机制
- 用户和代理类型级存储设计
测试覆盖全面
- 143个测试用例覆盖主要功能
- 单元测试完整性:
- ✅ 声纹验证测试覆盖率100%,包含真实数据库操作测试
- ✅ 音频预处理测试完整覆盖所有功能模块
- ✅ 数据库事务和完整性验证测试
- ✅ 异步测试支持(pytest-asyncio)
- 测试质量保障:
- ✅ 所有测试用例通过,无失败测试
- ✅ 包含边界条件测试和异常情况处理
- ✅ 数据库操作的真实环境测试
测试和文档
- 增加集成测试和端到端测试覆盖率
- 自动生成API文档(Swagger/OpenAPI)✅ 已完成
- 完善部署和运维文档
- 添加性能测试和负载测试
代理功能增强
- Memory Agent智能上下文管理
- 个性化学习推荐功能
- 多语言支持(国际化)
- 实时通信支持(WebSocket)
音频服务改进
- 声纹特征持久化存储(已实现数据库存储和内存缓存)
- 支持更多音频格式输入输出
- 离线语音识别选项
- 音频质量评估功能
安全和运维
- 细粒度权限控制系统
- API速率限制和防滥用
- Docker容器化部署
- 监控告警和日志分析
用户体验
- Web前端管理界面 ✅ MVP基础界面已完成
- 移动端应用程序
- 文件上传下载管理
- 实时通知和消息推送
- 高优先级:完善测试覆盖率,添加API文档,Web前端界面MVP已完成
- 中优先级:开发容器化部署,增强Memory Agent功能,支持更多音频格式
- 低优先级:多语言支持,移动端应用,高级监控功能
参考 开发计划.md 文件了解完整开发计划。
系统提供丰富的RESTful API接口,支持以下功能:
POST /chat- 主要聊天接口POST /safety/check- 内容安全检查接口POST /edu/ask- 教育问答接口POST /emotion/support- 情感支持接口POST /memory/manage- 记忆管理接口
GET /users/{user_id}/conversations- 获取用户所有对话历史GET /users/{user_id}/conversations/recent- 获取用户最近的对话记录(可指定数量)GET /users/{user_id}/conversations/{agent_type}- 按代理类型获取对话记录GET /sessions/{session_id}/conversations- 获取会话中的所有对话GET /users/{user_id}/security-logs- 获取用户安全日志记录
POST /users/{user_id}/sessions- 创建新会话GET /users/{user_id}/sessions- 获取用户的所有活跃会话GET /sessions/{session_id}- 获取特定会话详情PUT /sessions/{session_id}/title- 更新会话标题POST /sessions/{session_id}/activate- 激活会话POST /sessions/{session_id}/deactivate- 停用会话DELETE /sessions/{session_id}- 删除会话(标记为非活跃)
-
POST /audio/transcribe- 语音转文本接口- 支持音频预处理选项(自动归一化、静音移除、重采样)
- 支持多种音频格式输入
-
POST /audio/synthesize- 文本转语音接口- 支持语速、音量调节
- 多种语音风格选择
-
POST /audio/process- 音频预处理接口- ✅ 归一化:目标RMS值调节(默认0.1)
- ✅ 静音移除:可调阈值检测(默认0.01)
- ✅ 重采样:支持任意目标采样率(默认16000Hz)
- 完整预处理流水线:静音移除 → 归一化 → 重采样
-
POST /voice/register- 用户声纹注册接口- ✅ 多维度声纹特征提取(MFCC、频谱特征、能量分布)
- ✅ 数据库持久化存储 + 内存缓存
- ✅ 事务安全性和提交验证
-
POST /voice/verify- 用户声纹验证接口- ✅ 余弦相似度计算,返回相似度分数(0-1)
- ✅ 可调验证阈值(默认0.8)
- ✅ 完整的验证日志记录
- ✅ 内存缓存加速验证过程
-
POST /auth/register- 用户注册接口- JWT令牌认证系统
- 密码加密存储(BCrypt)
-
POST /auth/login- 用户登录接口- JWT令牌颁发
- 安全的身份验证流程
-
GET /auth/me- 获取当前用户信息- 需要有效的JWT令牌
- 返回用户基本信息和安全状态
系统现已实现完整的API文档自动化,通过FastAPI的OpenAPI集成自动生成Swagger UI文档。
- 启动应用程序:
python main.py - 打开浏览器访问:
http://localhost:8000/docs - 即可查看完整的交互式API文档
✅ 完整的API端点文档 - 24个API路径全部文档化
✅ 详细的请求/响应模型 - 29个Pydantic Schema自动生成
✅ 交互式测试功能 - 可直接在浏览器中测试API
✅ 参数验证文档 - 所有参数的类型、默认值、描述信息
✅ 响应示例 - 每个端点的成功和错误响应示例
- 认证相关:
UserCreate,UserLogin,Token,UserResponse - 聊天相关:
ChatRequest,SafetyCheckRequest,SafetyCheckResponse,EduQuestionRequest,EduQuestionResponse,EmotionSupportRequest,EmotionSupportResponse - 音频处理:
AudioTranscribeRequest,AudioTranscribeResponse,AudioSynthesizeRequest,AudioSynthesizeResponse,AudioProcessRequest,AudioProcessResponse - 声纹验证:
VoiceRegisterRequest,VoiceRegisterResponse,VoiceVerifyRequest,VoiceVerifyResponse - 记忆管理:
MemoryActionRequest,MemoryActionResponse,ConversationHistoryResponse,SecurityLogResponse - 对话历史:
ConversationItem,ConversationListResponse,SecurityLogItem,SecurityLogListResponse
在Swagger UI中,您可以:
- 查看API详情:点击每个端点展开查看详细文档
- 测试API调用:使用"Try it out"按钮直接测试接口
- 查看Schema定义:点击"Schema"查看请求/响应模型结构
- 查看参数说明:所有参数都有详细描述和示例值
对于开发者集成,API文档提供:
- OpenAPI规范文件:访问
/openapi.json获取机器可读的API定义 - 代码生成支持:可使用OpenAPI Generator等工具生成客户端代码
- 类型安全:所有请求和响应都有严格的类型验证
React + TypeScript + Vite + Ant Design
# 核心技术栈
React 18 + TypeScript 5 + Vite 5 + Ant Design 5
# 状态管理
Redux Toolkit + React Query
# 开发工具
ESLint + Prettier + Jest + Testing Libraryfrontend/
├── src/
│ ├── components/ # 通用组件
│ │ └── Layout.tsx # 基础布局组件 (Header/Sidebar/Content)
│ ├── pages/ # 页面组件
│ │ ├── ChatPage.tsx # 聊天页面组件
│ │ └── LoginPage.tsx # 登录页面组件
│ ├── services/ # API服务 (待实现)
│ ├── store/ # 状态管理 (待实现)
│ ├── hooks/ # 自定义Hooks (待实现)
│ ├── types/ # TypeScript类型 (待实现)
│ ├── utils/ # 工具函数 (待实现)
│ ├── App.tsx # 主应用组件 (路由配置)
│ ├── App.css # 全局样式文件
│ └── main.tsx # 应用入口文件
├── public/ # 静态资源
├── package.json # 项目配置和依赖
├── vite.config.ts # Vite构建配置
└── tsconfig.json # TypeScript配置
- ✅ 基础聊天框架 - 消息列表和输入组件已完成
- ✅ 智能聊天功能 - 前后端完整集成,支持多代理路由
- ✅ 实时消息处理 - 发送/接收/状态反馈完整实现
- ✅ 简化代理显示 - 按用户需求优化的界面展示
- 实时消息推送(WebSocket)
- 语音和文本输入切换
- 消息历史管理
- 音频录制和波形可视化
- 实时语音转文字反馈
- 文本转语音播放控制
- 声纹注册和验证界面
- ✅ 登录界面 - 基础登录表单已完成
- ✅ 用户认证 - JWT令牌管理、自动重定向完整实现
- ✅ API集成 - 登录功能与后端完整集成
- 注册界面
- 用户个人信息设置
- 会话历史查看和搜索
- ✅ 基础响应式布局 - 布局组件已完成
- 移动端友好界面优化
- PWA渐进式Web应用
- 离线功能支持
- 触摸交互优化
# 进入前端目录
cd frontend
# 安装依赖
npm install
# 开发模式 (端口3001)
npm run dev
# 生产构建
npm run build
# 代码检查
npm run lint
# 运行测试
npm run test- 开发服务器: http://localhost:3001
- 聊天页面: http://localhost:3001/ 或 http://localhost:3001/chat
- 登录页面: http://localhost:3001/login
- 后端API: http://localhost:8000 (通过Vite代理配置)
已实现的功能:
- ✅ 现代化技术栈: Vite 5 + React 18 + TypeScript 5
- ✅ 路由系统: React Router v7嵌套路由配置
- ✅ UI框架: Ant Design v5完整集成,中文语言包
- ✅ API服务层: Axios配置、拦截器、完整TypeScript类型系统
- ✅ 智能聊天: 前后端完整集成,多代理智能路由
- ✅ 用户认证: 登录、JWT令牌管理、自动错误处理
- ✅ 布局组件: 响应式Layout组件(Header/Sidebar/Content)
- ✅ 页面组件: ChatPage(智能聊天) + LoginPage(用户认证)
- ✅ 环境配置: 环境变量管理、热重载、API代理
技术优势:
- 🚀 快速启动: Vite提供极快的冷启动和热更新
- 🔒 类型安全: TypeScript完整类型支持
- 🎨 设计一致: Ant Design提供专业的设计语言
- 📱 响应式: 基础响应式布局支持
- 🔌 易于扩展: 模块化组件架构
系统已实现完整的API服务层,提供类型安全的前后端通信:
// 完整的认证API服务 (src/services/authApi.ts)
export class AuthApiService {
static async login(credentials: LoginRequest): Promise<Token> {
// JWT令牌自动存储和管理
}
static async getCurrentUser(): Promise<UserResponse> {
// 自动JWT令牌验证
}
}
// 完整的聊天API服务 (src/services/chatApi.ts)
export class ChatApiService {
static async intelligentChat(message: string, userId?: number): Promise<any> {
// 智能代理路由,支持多代理类型
}
static async checkSafety(content: string): Promise<SafetyCheckResponse> {
// 内容安全检查
}
}
// 类型安全的API配置 (src/services/api.ts)
const api = axios.create({
baseURL: import.meta.env.VITE_API_BASE_URL,
// 自动JWT令牌注入、错误处理、重定向
});完整功能特性:
- ✅ 类型安全: 完整TypeScript类型定义
- ✅ 自动认证: JWT令牌自动管理和注入
- ✅ 错误处理: 统一错误处理和用户友好提示
- ✅ 智能路由: 支持多代理智能响应路由
API文档会自动保持更新:
- 添加新的API端点时自动包含在文档中
- 修改Schema时会自动更新文档
- 无需手动维护文档文件
文档基于Pydantic模型自动生成,确保与代码实现始终保持一致。
★ Insight ─────────────────────────────────────
- 架构优势:模块化设计良好,各代理职责清晰,易于扩展
- 技术选型:FastAPI + SQLAlchemy组合适合API开发,测试覆盖全面
- 安全考虑:内容过滤和声纹验证体现了儿童应用的特殊需求
─────────────────────────────────────────────────
★ Insight ─────────────────────────────────────
- 现代化技术栈:React 18 + TypeScript + Vite提供最佳开发体验
- 类型安全:完整TypeScript支持,与后端Pydantic模型完美匹配
- 组件化设计:高度可复用的组件架构,便于维护和扩展
- 状态管理:Redux Toolkit + React Query确保状态管理的一致性和性能
- 响应式设计:移动端优先,支持PWA特性,提供原生应用般的体验
─────────────────────────────────────────────────
本项目采用 MIT 许可证,仅供学习和参考使用。
欢迎提交Issue和Pull Request来帮助改进这个项目。在贡献代码前请确保:
- 代码符合PEP8规范
- 添加相应的测试用例
- 更新相关文档
- 通过所有现有测试