🤖 带有向量存储、记忆、MCP工具和语音模式的FastAPI Langgraph聊天机器人
 
 
一个基于FastAPI和LangGraph构建的可扩展AI聊天机器人平台,具备多智能体协同、多租户向量存储、跨对话记忆以及通过集成LiveKit实现的语音通话功能。
演示
https://github.com/用户附件/资源/25adf403-6c66-4894-9f0e-27367787273c
🌟 主要特点
🔒 安全认证与多租户支持
- OAuth2 密码模式(或密码授权流程)使用JWT令牌的行业标准认证,实现安全的API访问
- 用户注册系统完成注册流程,包括用户名、密码和租户ID
- 多租户架构不同租户之间的数据隔离,以增强安全性和隐私保护
- 基于角色的访问控制针对不同用户类型的细粒度权限设置
🧠 利用LangGraph实现高级AI编排
- 多智能体系统专业人员协同合作,共同解决复杂任务
- 监督代理(或监管代理)协调工作流程并将任务分配给专门的代理人员 - 研究代理从网络和知识库中检索信息 - 抓取代理从网页中提取并总结内容
- 复杂的工作流程处理多步骤推理和任务分解
- 状态管理在多次对话回合中保持上下文连贯
📊 与Qdrant的强大向量存储
- 多租户向量存储高效存储和检索对话历史,并实现租户隔离
- 语义搜索利用语义相似性查找相关的过往对话
- 有效载荷过滤通过tenant_id高效过滤,以确保数据安全和提升性能
- 元数据存储存储与向量嵌入相关的额外上下文信息,并检索这些信息
💾 使用Mem0实现持久内存
- 跨聊天记忆记住不同对话中的重要信息
- 长期背景/长期语境在长时间交互中保持上下文连贯性
- 选择性记忆智能地决定记住哪些信息
- 记忆检索根据对话上下文检索相关记忆
🔍 MCP工具集成
- 火爬行者(或译为“火行者”,根据上下文具体含义可调整)高级网页抓取与内容提取
- 从网站中提取结构化数据 - 总结长篇内容 - 处理表格和列表
- Tavily(此词可能为特定品牌、项目或概念的名称,无直接对应中文翻译,若需根据语境灵活处理,可译为“塔维利”或保持原样)智能网页搜索功能
- 网络上的语义搜索 - 实时信息检索 - 来源归属与引用
🎤 通过LiveKit的语音助手
- 实时语音通信使用LiveKit的WebRTC平台实现自然语音交互
- 高质量语音识别使用Deepgram的先进语音转文本(STT)技术实现精准转录
- 自然文本转语音使用Cartesia TTS实现逼真的语音响应
- 语音活动检测使用Silero VAD实现智能轮流发言
- 多语言支持多语言语音交互
🔎 LangSmith 集成
- 全面追踪捕获所有LangChain和LangGraph执行过程中的详细轨迹
- 可视化调试可视化多智能体工作流程和消息传递
- 性能监控跟踪不同组件的延迟、令牌使用情况和成本
- 收集反馈收集并分析用户对模型响应的反馈
- 实验追踪比较不同的提示、模型和代理配置
🎨 现代React用户界面
- 简洁的Material-UI设计直观的界面,采用现代设计原则
- 响应式布局在桌面和移动设备间实现无缝体验
- 实时聊天界面带有用户/助手头像的动态消息气泡
- Markdown 支持消息中的富文本格式化
- 语音模式集成文本与语音交互之间的无缝切换
后端架构
- FastAPI 框架高性能异步API框架,支持自动生成OpenAPI文档
- SQLAlchemy ORM(对象关系映射)使用 SQLite 进行异步数据库操作(可配置为 PostgreSQL/MySQL)
- Pydantic 模型类型安全的数据验证和序列化
- JWT 认证使用OAuth2密码模式实现基于令牌的安全认证
👨💻 使用指南
入门指南
- 注册一个账户:
- 导航至注册页面,网址为 /register - 创建一个账户,使用一个唯一的用户名、安全的密码以及您分配的租户ID - 每个租户ID都会为您的数据创建一个隔离的环境
- 登录到平台:
- 使用您的凭据登录到主页 - 您的JWT令牌将被安全存储,以便后续进行API调用
使用聊天界面
- 创造对话:
- 点击侧边栏中的“+”按钮开始新对话 - 为你的对话起一个有意义的标题,以便轻松参考 - 每条对话都与您的租户ID一起存储,以实现数据隔离
- 与人工智能互动:
- 在输入框中输入您的信息,然后按回车键或点击发送按钮 - 人工智能的回复将以实时流式传输的方式呈现,逐个标记进行更新 - 消息显示时带有清晰的用户/助手头像,便于区分 - 该系统支持用户和助手消息中的Markdown格式化
- 管理对话:
- 从侧边栏导航中访问之前的对话 - 浏览你的聊天记录
使用语音助手
- 启动语音模式:
- 点击聊天界面中的麦克风图标以激活语音模式 - 如果尚未授予,则系统将请求麦克风权限 - 在开始说话前,请等待“语音助手准备就绪”的提示信息
- 语音交互:
- 当看到“正在听……”指示器时,自然地说话 - 助手将处理您的语音并以语音形式作出回应 - 视觉反馈显示了您的语音和助手的回复的转录内容 - 语音助手支持对话中的自然轮流发言
- 高级语音功能:
- 该系统会自动检测您何时已停止说话 - 语音活动检测滤除背景噪声 - 多语言支持功能允许使用不同语言进行交互 - 可以根据不同环境调整语音质量设置
- 结束语音通话:
- 点击断开按钮以结束语音会话 - 您的对话历史会被保存下来,以备将来参考
使用外部工具
AI助手可以利用强大的外部工具来提升您的体验:
- 网页搜索提出需要从网上获取最新信息的问题
- 网络数据抓取(或网页抓取)从特定网站请求摘要或信息
💻 安装
先决条件
- Python 3.13+
- Node.js 16及以上版本
- npm 8及以上版本
- Qdrant(可通过Docker运行)
后端设置
- 克隆仓库
git clone
cd ruban_fastapi-langgraph-chatbot- 创建并激活虚拟环境
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- 安装Python依赖项
pip install -r requirements.txt- 设置环境变量
创建一个 .env 在根目录下的文件中包含以下变量:
# FastAPI settings
SECRET_KEY=your_secret_key_here
ACCESS_TOKEN_EXPIRE_MINUTES=30
# Database settings
SQLALCHEMY_DATABASE_URI=sqlite:///./app.db
# OpenAI settings
OPENAI_API_KEY=your_openai_api_key_here
# Qdrant settings
QDRANT_HOST=localhost
QDRANT_PORT=6333
# LiveKit settings
LIVEKIT_URL=your_livekit_url_here
LIVEKIT_API_KEY=your_livekit_api_key_here
LIVEKIT_API_SECRET=your_livekit_api_secret_here
# LangSmith (optional, for tracing)
LANGCHAIN_TRACING_V2=true
LANGSMITH_API_KEY=your_langsmith_api_key_here
LANGSMITH_PROJECT=your_project_name前端设置
- 导航到前端目录
cd frontend- 安装 Node.js 依赖项
npm install🚀 运行应用程序
启动后端服务
- 启动MCP服务器(在不同的终端中)
# Terminal 1: Start the search server
python -m app.mcp_server.search_server
# Terminal 2: Start the web scraping server
python -m app.mcp_server.web_scrapping_server- 启动主FastAPI服务器
python app.py- 启动LiveKit语音助手
python app/agent/livekit_agent.py dev启动前端
cd frontend
npm start访问应用程序
- 后端API文档:http://localhost:8000/docs
- 前端界面:http://localhost:3000
如果您还没有账号,请先注册,然后登录以访问聊天界面。
