import asyncio from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from uvicorn import Config, Server from config.yolo import YOLOSingleton from mcp_local.mcp_pipe import init_mcp_server from routers.Bot import botRouter from routers.Chat import chatRouter from routers.Datasource import reportDataRouter from routers.Knowledge import knowledgeRouter from routers.Public import publicRouter from routers.RabbitMQ import rqRouter from routers.Report import reportRouter from routers.Service import serviceRouter from routers.Vision import visionRouter 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(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, task_mcp2) if __name__ == "__main__": asyncio.run(main())