import asyncio from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from uvicorn import Config, Server 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 from service.Analyze import mq_pull_analysis_async async def ai_lab(): app = FastAPI(title="BBIT_AI") origins = [ "http://localhost:8090", # 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, visionRouter, rqRouter, ] for r in routers: app.include_router(r, prefix="/llm", tags=["llm"]) app.include_router(publicRouter, prefix="/api/public", tags=["api"]) config = Config(app=app, host="0.0.0.0", port=13011, log_level="info") server = Server(config) await server.serve() async def main(): # 主干AI实验室FastAPI服务 task_api = asyncio.create_task(ai_lab()) # MCP服务-ailab # endpoint_url = "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) if __name__ == "__main__": asyncio.run(main())