AI聊天机器人平台

一个基于FastAPI和LangGraph构建的可扩展AI聊天机器人平台,具有多代理编排、多租户向量存储、跨聊天记忆和语音通话功能。

  • by GisoreB
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 GisoreB/fastapi-langgraph-chatbot-with-vector-store-memory-mcp-tools-and-voice-mode-main

使用说明

🤖 带有向量存储、记忆、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密码模式实现基于令牌的安全认证

👨‍💻 使用指南

入门指南

  1. 注册一个账户:

    • 导航至注册页面,网址为 /register
    • 创建一个账户,使用一个唯一的用户名、安全的密码以及您分配的租户ID
    • 每个租户ID都会为您的数据创建一个隔离的环境
  2. 登录到平台:

    • 使用您的凭据登录到主页
    • 您的JWT令牌将被安全存储,以便后续进行API调用

使用聊天界面

  1. 创造对话:

    • 点击侧边栏中的“+”按钮开始新对话
    • 为你的对话起一个有意义的标题,以便轻松参考
    • 每条对话都与您的租户ID一起存储,以实现数据隔离
  2. 与人工智能互动:

    • 在输入框中输入您的信息,然后按回车键或点击发送按钮
    • 人工智能的回复将以实时流式传输的方式呈现,逐个标记进行更新
    • 消息显示时带有清晰的用户/助手头像,便于区分
    • 该系统支持用户和助手消息中的Markdown格式化
  3. 管理对话:

    • 从侧边栏导航中访问之前的对话
    • 浏览你的聊天记录

使用语音助手

  1. 启动语音模式:

    • 点击聊天界面中的麦克风图标以激活语音模式
    • 如果尚未授予,则系统将请求麦克风权限
    • 在开始说话前,请等待“语音助手准备就绪”的提示信息
  2. 语音交互:

    • 当看到“正在听……”指示器时,自然地说话
    • 助手将处理您的语音并以语音形式作出回应
    • 视觉反馈显示了您的语音和助手的回复的转录内容
    • 语音助手支持对话中的自然轮流发言
  3. 高级语音功能:

    • 该系统会自动检测您何时已停止说话
    • 语音活动检测滤除背景噪声
    • 多语言支持功能允许使用不同语言进行交互
    • 可以根据不同环境调整语音质量设置
  4. 结束语音通话:

    • 点击断开按钮以结束语音会话
    • 您的对话历史会被保存下来,以备将来参考

使用外部工具

AI助手可以利用强大的外部工具来提升您的体验:

  1. 网页搜索提出需要从网上获取最新信息的问题
  2. **网络数据抓取(或网页抓取)**从特定网站请求摘要或信息

💻 安装

先决条件

  • Python 3.13+
  • Node.js 16及以上版本
  • npm 8及以上版本
  • Qdrant(可通过Docker运行)

后端设置

  1. 克隆仓库
git clone <repository-url>
cd ruban_fastapi-langgraph-chatbot
  1. 创建并激活虚拟环境
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装Python依赖项
pip install -r requirements.txt
  1. 设置环境变量

创建一个 .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

前端设置

  1. 导航到前端目录
cd frontend
  1. 安装 Node.js 依赖项
npm install

🚀 运行应用程序

启动后端服务

  1. 启动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
  1. 启动主FastAPI服务器
python app.py
  1. 启动LiveKit语音助手
python app/agent/livekit_agent.py dev

启动前端

cd frontend
npm start

访问应用程序

  • 后端API文档:http://localhost:8000/docs
  • 前端界面:http://localhost:3000

如果您还没有账号,请先注册,然后登录以访问聊天界面。