AI聊天系统

一个基于React、FastAPI和LangChain ReAct代理的全栈AI聊天系统,具有实时流式响应、网络搜索功能、Google Trends集成和安全认证。

  • by bersu77
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 bersu77/google-news-trends-mcp

使用说明

AI聊天系统

使用React、FastAPI和LangChain React代理构建的生产级全栈AI聊天系统。具有实时流媒体响应、网络搜索功能、谷歌趋势集成和安全身份验证。

建筑

  • 前端:使用Tailwind CSS的React+TypeScript
  • 后端:Python快速API
  • AI 代理:LangChain与OpenAI重新合作
  • 工具:Tavily搜索+谷歌趋势MCP
  • 数据库/身份验证:具有行级安全性的数据库
  • 流媒体:服务器发送事件(SSE)
  • 基础设施:Docker编写

特性

  • 🔐 安全的Supabase电子邮件/密码身份验证
  • 💬 实时流式聊天响应
  • 🔍 通过Tavily进行网络搜索集成
  • 📊 通过MCP进行谷歌趋势分析
  • 🧠 带有工具编排的LangChain ReAct代理
  • 💾 持续的聊天记录和对话
  • 🔒 用户数据隔离的行级安全
  • 🐳 Docker容器化部署
  • 📱 响应式现代用户界面

快速开始

先决条件

  • Docker和Docker Compose
  • Node.js 18+(用于本地开发)
  • Python 3.11+(用于本地开发)

1.克隆和设置

git clone <repository-url>
cd google-news-trends-mcp

2.环境配置

复制环境示例文件并配置凭据:

# Root environment
cp .env.example .env

# Backend environment
cp backend/.env.example backend/.env

# Frontend environment
cp frontend/.env.example frontend/.env

编辑 .env 包含您实际凭据的文件:

3.数据库设置

应用Supabase架构:

# Apply the schema to your Supabase project
psql -h YOUR_DB_HOST -U postgres -d postgres -f supabase_schema.sql

或者使用Supabase SQL编辑器运行以下内容 supabase_schema.sql.

4.从Docker开始

docker-compose up --build

这些服务将在以下地点提供:

  • 前端:http://localhost:3000
  • 后端API:http://localhost:8000
  • 谷歌趋势MCP:http://localhost:8001
  • API文件:http://localhost:8000/docs

发展

本地后端开发

cd backend
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate
pip install -r requirements.txt
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

本地前端开发

cd frontend
npm install
npm start

本地谷歌趋势MCP

cd google-news-trends-mcp
pip install -e .
uvicorn main:app --reload --host 0.0.0.0 --port 8000

API 文档

身份验证端点

  • POST /api/auth/login -使用电子邮件/密码登录
  • POST /api/auth/refresh -刷新访问令牌
  • GET /api/auth/me -获取当前用户信息

聊天端点

  • POST /api/chat/stream -发送消息和流响应(SSE)
  • GET /api/chat/conversations -获取用户对话
  • GET /api/chat/conversations/{id}/messages -获取对话消息

健康终点

  • GET /api/health -基本健康检查
  • GET /api/health/dependencies -检查服务依赖关系

安全特性

  • JWT身份验证:对JWT令牌进行验证
  • 行级安全性:用户只能访问自己的数据
  • CORS保护:已为前端域配置
  • 输入验证:所有输入的Pydantic模式
  • 错误处理:没有暴露给客户端的堆栈跟踪
  • API密钥保护:没有记录或暴露钥匙

代理能力

LangChain ReAct代理可以:

  1. 搜索网络:使用Tavily查找当前信息
  2. 分析趋势:通过MCP访问谷歌趋势数据
  3. 原因和计划:对复杂查询使用ReAct方法
  4. 工具编排:链接多个工具以获得全面答案
  5. 优雅的退路:优雅地处理工具故障

Docker服务

  • 后端:FastAPI应用程序(端口8000)
  • 前端:React开发服务器(端口3000)
  • 谷歌趋势mcp:谷歌趋势MCP服务器(端口8001)
  • Postgres:PostgreSQL数据库(端口5432)
  • 瑞迪斯:Redis缓存(端口6379)

环境变量

后端(.env)

# Supabase
SUPABASE_URL=your-supabase-url
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
SUPABASE_JWT_SECRET=your-jwt-secret

# AI Services
OPENAI_API_KEY=your-openai-key
TAVILY_API_KEY=your-tavily-key

# MCP
GOOGLE_TRENDS_MCP_URL=http://google-trends-mcp:8000/mcp
GOOGLE_TRENDS_MCP_JWT_SECRET=your-mcp-secret

# App
SECRET_KEY=your-app-secret
ALGORITHM=HS256

前端(.env)

REACT_APP_API_URL=http://localhost:8000

生产部署

  1. 更新环境:设置 ENVIRONMENT=production 和 DEBUG=false
  2. 配置URL:将前端API URL更新到生产域
  3. SSL/TLS:配置SSL证书
  4. 数据库:使用生产Supabase实例
  5. 监控:建立健康检查和监测

故障排除

常见问题

  1. Docker构建失败:检查Docker日志并确保所有依赖项都已安装
  2. 数据库连接:验证Supabase凭据和网络访问权限
  3. MCP连接:确保谷歌趋势MCP服务正在运行且可访问
  4. 认证:检查JWT机密在各服务之间是否一致

健康检查

# Check all services
curl http://localhost:8000/api/health/dependencies

# Check individual services
curl http://localhost:8000/api/health
curl http://localhost:8001/healthz

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

该项目根据MIT许可证获得许可。

支持

对于问题和疑问:

  • 检查故障排除部分
  • 查看Docker日志: docker-compose logs
  • 查看API文档,网址: /docs 端点