使用说明
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 包含您实际凭据的文件:
- Supabase:在以下位置创建项目 网站 supabase.com
- 开放人工智能:从获取API密钥 platform.openai.com
- 塔维利:从获取API密钥 tavily.com
- 谷歌趋势MCP:配置JWT密钥
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代理可以:
- 搜索网络:使用Tavily查找当前信息
- 分析趋势:通过MCP访问谷歌趋势数据
- 原因和计划:对复杂查询使用ReAct方法
- 工具编排:链接多个工具以获得全面答案
- 优雅的退路:优雅地处理工具故障
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
生产部署
- 更新环境:设置
ENVIRONMENT=production和DEBUG=false - 配置URL:将前端API URL更新到生产域
- SSL/TLS:配置SSL证书
- 数据库:使用生产Supabase实例
- 监控:建立健康检查和监测
故障排除
常见问题
- Docker构建失败:检查Docker日志并确保所有依赖项都已安装
- 数据库连接:验证Supabase凭据和网络访问权限
- MCP连接:确保谷歌趋势MCP服务正在运行且可访问
- 认证:检查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
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
该项目根据MIT许可证获得许可。
支持
对于问题和疑问:
- 检查故障排除部分
- 查看Docker日志:
docker-compose logs - 查看API文档,网址:
/docs端点