🌦️ 天气代理API-多源数据平台
基于FastAPI的后端,用于将多个天气数据源(卫星、雷达)与由LangGraph和Azure OpenAI支持的AI会话代理集成。
🎯 项目概述
该项目提供了一个可扩展的REST API,它:
- 聚合来自卫星和雷达源的数据
- 检测天气灾害(洪水、火灾、风暴)
- 为自然语言查询提供对话式AI界面
- 无缝部署到Azure应用服务
- 专为移动应用集成而设计
📁 项目结构
demo-langprah-mcp/
├── app/ # Main application
│ ├── api/ # API endpoints
│ │ └── routes.py # Chat + mock data routes
│ ├── services/ # Business logic
│ │ ├── agent_service.py # LangGraph AI agent ⭐
│ │ └── mock_data_sources.py # Mock satellite/radar APIs
│ ├── core/ # Configuration
│ │ └── config.py # Settings management
│ └── main.py # FastAPI app
│
├── tests/ # Test suite
│ ├── conftest.py
│ └── test_api.py
│
├── docs/ # Documentation
│ ├── ARCHITECTURE.md # Project architecture
│ ├── MIGRATION-PLAN.md # Development roadmap
│ └── AZURE-DEPLOYMENT.md # Deployment guide
│
├── deployment/ # Deployment files
│ ├── azure-app-service.yaml
│ └── startup.sh
│
├── notebooks/ # Jupyter notebooks
│ └── agente-conversacional-demo.ipynb
│
├── requirements.txt # Dependencies
└── README.md # This file🚀 快速开始
先决条件
- Python 3.11+
- 点
- 虚拟环境(推荐)
1.设置环境
# Clone or navigate to project
cd demo-langprah-mcp
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt2.配置环境(第1天可选)
# Copy environment template
cp .env.example .env
# Edit .env with your settings (optional for mock APIs)
# nano .env3.运行服务器
# Start FastAPI development server
uvicorn app.main:app --reload --host 0.0.0.0 --port 80004.访问API
- Swagger用户界面: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- 健康检查: http://localhost:8000/health
📡 可用的API端点
卫星数据
GET /api/mock/satellite/precipitation-降水量测量GET /api/mock/satellite/wind-风速和风向GET /api/mock/satellite/temperature-温度读数
雷达数据
GET /api/mock/radar/precipitation-雷达降水GET /api/mock/radar/storms-风暴探测和跟踪
危险检测
GET /api/mock/flood/risk-洪水风险评估GET /api/mock/flood/historical-历史洪水事件GET /api/mock/fire/detection-主动火灾探测GET /api/mock/fire/risk-火灾风险预测
合并报告
GET /api/mock/weather/complete-综合天气预报
🧪 测试API
使用curl
# Complete weather report for Quito, Ecuador
curl "http://localhost:8000/api/mock/weather/complete?lat=-0.2298&lon=-78.5249&station_id=QUITO-R01"
# Fire detection
curl "http://localhost:8000/api/mock/fire/detection?lat=-0.2298&lon=-78.5249&radius_km=100"
# Flood risk
curl "http://localhost:8000/api/mock/flood/risk?lat=-0.2298&lon=-78.5249"使用Python
import requests
# Get complete weather data
response = requests.get(
"http://localhost:8000/api/mock/weather/complete",
params={
"lat": -0.2298,
"lon": -78.5249,
"station_id": "QUITO-R01"
}
)
data = response.json()
print(data)📅 发展路线图
- ✅ 第1天:FastAPI设置+模拟数据源
- 🔄 第2天:LangGraph会话代理
- 📝 第3天:Azure OpenAI集成
- 🧪 第4天:测试和文件
- ⚙️ 第5天:Azure部署准备
- 🚀 第6天:部署到Azure应用服务
- 🔒 第7天:API网关设置(可选)
看 docs/MIGRATION-PLAN.md 详细的路线图。
🏗️ 建筑
┌─────────────────┐
│ Mobile App │
└────────┬────────┘
│
▼
┌──────────────────────────────┐
│ Azure API Management │ (Day 7)
│ - Rate Limiting │
│ - Authentication │
└────────┬─────────────────────┘
│
▼
┌──────────────────────────────┐
│ Azure App Service │ (Day 6)
│ ┌────────────────────────┐ │
│ │ FastAPI Backend │ │
│ │ - Mock Data Sources │ │
│ │ - LangGraph Agent │ │ (Day 2)
│ │ - Azure OpenAI │ │ (Day 3)
│ └────────────────────────┘ │
└──────────────────────────────┘🔧 配置
应用程序使用 app/core/config.py 用于集中配置管理。可以通过中的环境变量覆盖设置 .env 文件。
关键设置:
AZURE_OPENAI_API_KEY-Azure OpenAI API密钥(第3天+)AZURE_OPENAI_ENDPOINT-Azure OpenAI端点URLENVIRONMENT-开发/分期/生产ALLOWED_ORIGINS-CORS允许的来源
🚀 部署
Azure应用服务(推荐)
# See detailed guide
cat docs/AZURE-DEPLOYMENT.md
# Quick deploy
az webapp up --name weather-agent-api --runtime PYTHON:3.11Docker(替代方案)
# Build image
docker build -t weather-agent-api .
# Run container
docker run -p 8000:8000 weather-agent-api看 docs/AZURE-DEPLOYMENT.md 获取完整的部署说明。
📚 文档
🧪 测试
# Run tests (coming in Day 4)
pytest tests/
# Run with coverage
pytest --cov=app tests/🤝 贡献
该项目遵循逐日开发的方法。检查 移民计划.md 查看当前进展和下一步行动。
📄 许可证
该项目用于教育和示范目的。
🔗 相关资源
______________________________________________________________________
当前状态: ✅ 第1天完成-模拟API运行\ 下一步:第2天-添加LangGraph代理\ 最后更新2026年2月4日
