kanakmohanj/astram-backend

GitHub: kanakmohanj/astram-backend

ASTRAM 是一个基于 agentic AI 的交通事件响应编排后端,结合 XGBoost 预测、RAG 持续学习与 Gemini 生成式 AI,为交通管理人员自动生成数据驱动的战术行动计划。

Stars: 0 | Forks: 0

# 🚦 ASTRAM:AI 驱动的交通编排引擎 **ASTRAM**(Automated System for Traffic Response and Management)是一个企业级的 agentic AI 后端,旨在预测、管理和编排对实时交通事故的响应。 ASTRAM 专为 Flipkart Hackathon 打造,超越了基础的 CRUD 应用程序,它将确定性的 Machine Learning 预测与 Generative AI 和持续学习 (RAG) 相结合。它为现场交通执法人员动态起草高度结合情境的战术计划,创建了一个从过往成功操作中不断学习的闭环系统。 ## 📖 执行摘要与核心 Pipeline 该后端基于 **FastAPI** 构建,以确保高并发异步处理。核心编排由 **LangGraph** 驱动,它通过多 agent pipeline 路由事故: 1. **⚡ 实时摄取:** 安全的 REST endpoint 和 WebSockets,能够摄取来自 IoT 摄像头或人工报告的高频事故数据。 2. **📈 预测性 ML 引擎:** 直接加载到 RAM 中的 XGBoost 回归器会评估 13 个时空特征(例如,高峰时段、周末、优先级得分),以即时预测事故清理持续时间。 3. **⚙️ 基于规则的资源分配:** 确定性算法根据 ML 影响得分计算精确的物理资源需求(警察、拖车、路障)。 4. **🧠 持续学习记忆 (RAG):** 利用本地 FAISS Vector Database 存储获得 4/5 或 5/5 成功率的历史事故。它使用 `all-mpnet-base-v2` embeddings 执行语义相似性搜索,赋予 AI 对过往操作的“记忆”。 5. **🤖 LLM 战术综合:** Google Gemini 1.5 Pro 摄取 ML 预测、资源逻辑和历史 RAG 上下文,为调度员起草自然语言的可执行简报。 ## 🛠️ 技术栈 - **框架:** FastAPI, Uvicorn - **AI 编排:** LangGraph, LangChain - **Generative AI:** Google Gemini 1.5 Pro - **Machine Learning:** XGBoost, Pandas - **Vector Database:** FAISS (Facebook AI Similarity Search) - **Embeddings:** HuggingFace (`all-mpnet-base-v2`) ## 🏗️ 工程挑战与架构成就 在开发过程中,我们将系统设计为对现实世界的部署挑战具有高度弹性: - **挑战 1:HuggingFace API 限流与超时** - _问题:_ RAG pipeline 最初试图在每次请求时 ping HuggingFace API 以验证 embedding 模型版本,导致超过 15 秒的超时。 - _解决方案:_ 通过将 438MB 的 `all-mpnet-base-v2` 模型直接缓存到服务器环境中并强制设置 `HF_HUB_OFFLINE="1"` 变量,我们迁移到了 **100% 离线本地 Embeddings**。 - _结果:_ 零延迟文本 embedding 操作。系统不再依赖外部 API 的正常运行时间。 - **挑战 2:企业网络对云数据库的封锁** - _问题:_ 严格的机构防火墙主动阻止了到云端 vector database 的出站连接,导致 LangGraph pipeline 完全崩溃。 - _解决方案:_ 我们实施了 **100% 本地 Vector Database (FAISS)**,并将连接包装在优雅降级块中。如果发生网络断开,AI 会捕获错误,绕过 RAG 步骤,并成功生成基线战术计划而不会崩溃。 - _结果:_ 即使在高度受限或不稳定的网络环境中,也能保证核心 AI 编排器 100% 的正常运行时间。 - **挑战 3:不可预测的 LLM JSON 输出** - _问题:_ 生成式模型偶尔会返回非结构化数据,导致前端在重新渲染期间崩溃。 - _解决方案:_ 在 FastAPI 中标准化 Pydantic schema,以便在数据离开后端之前强制执行严格的输出验证。 ## 🚀 本地设置与安装 按照以下步骤在本地运行 ASTRAM 后端。 ### 前置条件 - Python 3.10 或更高版本 - Git ### 步骤 1:克隆仓库 ``` git clone [https://github.com/YOUR_USERNAME/astram-backend.git](https://github.com/YOUR_USERNAME/astram-backend.git) cd astram-backend ``` ### 步骤 2:创建虚拟环境 # Windows python -m venv .venv .venv\Scripts\activate # Mac/Linux python3 -m venv .venv source .venv/bin/activate ### 步骤 3:安装依赖项 pip install fastapi uvicorn xgboost pandas langchain langgraph google-generativeai faiss-cpu langchain-community langchain-huggingface sentence-transformers ### 步骤 4:配置环境变量 在项目的根目录下创建一个名为 .env 的文件,并添加以下内容: # 从此处获取:[https://aistudio.google.com/app/apikey](https://aistudio.google.com/app/apikey) GEMINI_API_KEY="your-gemini-api-key-here" # 当前环境状态 ENVIRONMENT="development" # 关键:强制 HuggingFace 使用本地缓存。防止超时错误。 HF_HUB_OFFLINE="1" ### 步骤 5:运行服务器 uvicorn app.main:app --reload 后端将启动,把 ML 模型加载到 RAM 中,并在 http://127.0.0.1:8000 暴露 API。 ### 📡 API Endpoint 概述 在以下地址查看交互式 API 文档:👉 http://127.0.0.1:8000/docs POST /api/v1/events/ingest - 从外部设备或 UI 摄取新的交通事故。 POST /api/v1/events/{event_id}/orchestrate - 触发 LangGraph AI pipeline。 POST /api/v1/events/feedback - 提交 1-5 星评分以训练 RAG 记忆。 WS /ws/dashboard - 用于实时前端更新的实时 WebSocket 数据流。 ### 🔮 未来路线图 交互式地理空间指挥中心:将 Leaflet.js 集成到 React 仪表板中,以根据 WebSocket 坐标在地图上标记实时事故。 全渠道摄取:扩展 /ingest webhook 以接收来自 Google Maps/Waze 交通 API 的自动警报。 自动化云同步:实施 cron 作业,将本地 FAISS 数据库与集中式云端数据仓库同步,以实现跨城市学习。 专为 Flipkart Hackathon 打造 🚀
标签:AI智能体, Apex, AV绕过, FastAPI, RAG, 事件编排, 后端开发, 智能交通, 机器学习, 逆向工具