import asyncio from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from uvicorn import Config, Server from config.yolo import YOLOSingleton from routers.Bot import botRouter from routers.Chat import chatRouter from routers.Datasource import reportDataRouter from routers.Iot import iot_router from routers.Knowledge import knowledgeRouter from routers.Public import publicRouter from routers.RabbitMQ import rqRouter from routers.Report import reportRouter from routers.Sentinel import sentinel_router from routers.Service import serviceRouter from routers.System import systemRouter from routers.Vision import visionRouter from routers.WS import iot_ws_router async def ai_lab(): app = FastAPI(title="BBIT_AI") origins = [ "http://localhost:8091", # Vite dev 默认端口 "https://ai.ronsunny.cn:8090", "*", # ⚠️ 生产环境不要用 ] app.add_middleware( CORSMiddleware, allow_origins=origins, allow_credentials=True, allow_methods=["*"], # 必须包含 OPTIONS、GET 等 allow_headers=["*"], ) routers = [ chatRouter, reportRouter, knowledgeRouter, reportDataRouter, serviceRouter, botRouter, rqRouter, ] for r in routers: app.include_router(r, prefix="/llm", tags=["llm"]) app.include_router(visionRouter, prefix="/cv", tags=["cv"]) app.include_router(systemRouter, prefix="/system", tags=["system"]) app.include_router(iot_router, prefix="/iot", tags=["iot"]) app.include_router(sentinel_router, prefix="/iot/sentinel", tags=["iot_sentinel"]) app.include_router(iot_ws_router, prefix="/iot/ws", tags=["iot_ws"]) app.include_router(publicRouter, prefix="/api/public", tags=["api"]) config = Config(app=app, host="0.0.0.0", port=13011, log_level="debug") server = Server(config) await server.serve() async def main(): # 初始化模型 YOLOSingleton.init_model() # 主干AI实验室FastAPI服务 task_api = asyncio.create_task(ai_lab()) # MCP服务-ailab # endpoint_url_ai_lab = "wss://ai.ronsunny.cn:8090/aimcp/mcp_endpoint/mcp/?token=TsSP9lBq6Oa1WMkachHoS2TtNt4GKV/Gli24pk5Rjpk%3D" # endpoint_url_ai_lab = "ws://ce_bot_mcp:8004/mcp_endpoint/mcp/?token=TsSP9lBq6Oa1WMkachHoS2TtNt4GKV/Gli24pk5Rjpk%3D" # task_mcp1 = asyncio.create_task(init_mcp_server(endpoint_url_ai_lab)) # MCP服务-ql # endpoint_url_ql = "wss://ai.ronsunny.cn:8090/aimcp/mcp_endpoint/mcp/?token=8ZmCzp7FzsbxwHOg2%2FvBQkxrC3QWJiI%2B4iTfouExinjcT8ZgLwQfFUtgcMInI7St" # task_mcp2 = asyncio.create_task(init_mcp_server(endpoint_url_ql)) # RabbitMQ服务 # task_mq = asyncio.create_task(mq_pull_analysis_async()) # await asyncio.gather(task_api, task_mcp1, task_mcp2, task_mq) await asyncio.gather(task_api) if __name__ == "__main__": asyncio.run(main())