main.py 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. from contextlib import asynccontextmanager
  2. from apscheduler.schedulers.background import BackgroundScheduler
  3. from fastapi import FastAPI
  4. from fastapi.middleware.cors import CORSMiddleware
  5. from starlette.staticfiles import StaticFiles
  6. from app.api.auth import router as auth_router
  7. from app.api.canvas import canvas_router
  8. from app.api.chat import router as chat_router
  9. from app.api.agent import router as agent_router
  10. from app.api.dialog import dialog_router
  11. from app.api.excel import router as excel_router
  12. from app.api.files import router as files_router
  13. from app.api.knowledge import knowledge_router
  14. from app.api.label import label_router
  15. from app.api.llm import llm_router
  16. from app.api.organization import dept_router
  17. from app.api.v2.chat import chat1_router
  18. from app.api.v2.public_api import public_api
  19. from app.api.report import router as report_router
  20. from app.api.resource import menu_router
  21. # from app.api.sync_data import sync_router
  22. from app.api.user import user_router
  23. from app.api.group import group_router
  24. from app.api.role import role_router
  25. from app.models.base_model import init_db
  26. # from app.models.base_model import init_db
  27. from app.task.fetch_agent import sync_agents, initialize_agents, sync_agents_v2, sync_knowledge, \
  28. sync_resources_from_json
  29. from app.init_config.init_run_data import sync_default_data
  30. init_db()
  31. # 使用 Lifespan 事件处理程序
  32. @asynccontextmanager
  33. async def lifespan(app: FastAPI):
  34. # 初始化代理
  35. # initialize_agents()
  36. # # 在应用启动时同步代理
  37. # sync_agents()
  38. # await sync_default_data()
  39. #
  40. # sync_agents_v2()
  41. # sync_knowledge()
  42. # sync_resources_from_json()
  43. yield
  44. # 在应用关闭时执行清理操作(如果需要)
  45. pass
  46. app = FastAPI(
  47. title="basic_rag_gateway",
  48. version="0.1",
  49. description="",
  50. lifespan=lifespan
  51. )
  52. # 设置 CORS 中间件
  53. # app.add_middleware(
  54. # CORSMiddleware,
  55. # allow_origins=["http://192.168.20.119:9303", "http://192.168.20.119:9301", "http://smartai.com:8293","http://localhost:9303", "http://127.0.0.1:9303","http://localhost:5173","http://192.168.20.158:5173"],
  56. # allow_credentials=True,
  57. # allow_methods=["*"], # 允许所有方法
  58. # allow_headers=["*"], # 允许所有头部
  59. # )
  60. # 创建调度器
  61. scheduler = BackgroundScheduler()
  62. scheduler.add_job(sync_agents_v2, 'interval', minutes=60, id="sync_resource_data")
  63. scheduler.start()
  64. app.include_router(auth_router, prefix='/api/auth', tags=["auth"])
  65. app.include_router(chat_router, prefix='/api/chat', tags=["chat"])
  66. app.include_router(agent_router, prefix='/api/agent', tags=["agent"])
  67. app.include_router(excel_router, prefix='/api/document', tags=["document"])
  68. app.include_router(files_router, prefix='/api/files', tags=["files"])
  69. app.include_router(report_router, prefix='/api/report', tags=["report"])
  70. app.include_router(user_router, prefix='/api/user', tags=["user"])
  71. app.include_router(group_router, prefix='/api/group', tags=["group"])
  72. app.include_router(role_router, prefix='/api/role', tags=["role"])
  73. app.include_router(dept_router, prefix='/api/dept', tags=["dept"])
  74. app.include_router(menu_router, prefix='/api/menu', tags=["menu"])
  75. app.include_router(knowledge_router, prefix='/api/knowledge', tags=["knowledge"])
  76. app.include_router(llm_router, prefix='/api/llm', tags=["llm"])
  77. app.include_router(dialog_router, prefix='/api/dialog', tags=["dialog"])
  78. app.include_router(canvas_router, prefix='/api/canvas', tags=["canvas"])
  79. app.include_router(label_router, prefix='/api/label', tags=["label"])
  80. app.include_router(public_api, prefix='/v1/api', tags=["public_api"])
  81. app.include_router(chat1_router, prefix='/v1/chat', tags=["chat1"])
  82. app.mount("/static", StaticFiles(directory="app/images"), name="static")
  83. if __name__ == "__main__":
  84. import uvicorn
  85. uvicorn.run(app, host="0.0.0.0", port=9201)