75 lines
2.8 KiB
Python
75 lines
2.8 KiB
Python
import uvicorn
|
|
import asyncio
|
|
from fastapi import FastAPI
|
|
from starlette.staticfiles import StaticFiles
|
|
|
|
from Routes.TeachingModel.tasks.BackgroundTasks import train_document_task
|
|
from Util.PostgreSQLUtil import init_postgres_pool, close_postgres_pool
|
|
|
|
from Routes.Ggb import router as ggb_router
|
|
from Routes.Knowledge import router as knowledge_router
|
|
from Routes.Oss import router as oss_router
|
|
from Routes.Rag import router as rag_router
|
|
from Routes.ZuoWen import router as zuowen_router
|
|
from Routes.Llm import router as llm_router
|
|
from Routes.TeachingModel.api.LoginController import router as login_router
|
|
from Routes.TeachingModel.api.UserController import router as user_router
|
|
from Routes.TeachingModel.api.DmController import router as dm_router
|
|
from Routes.TeachingModel.api.ThemeController import router as theme_router
|
|
from Routes.TeachingModel.api.DocumentController import router as document_router
|
|
from Routes.TeachingModel.api.TeachingModelController import router as teaching_model_router
|
|
|
|
from Util.LightRagUtil import *
|
|
from contextlib import asynccontextmanager
|
|
|
|
# 控制日志输出
|
|
logger = logging.getLogger('lightrag')
|
|
logger.setLevel(logging.INFO)
|
|
handler = logging.StreamHandler()
|
|
handler.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
|
|
logger.addHandler(handler)
|
|
|
|
|
|
@asynccontextmanager
|
|
async def lifespan(_: FastAPI):
|
|
pool = await init_postgres_pool()
|
|
app.state.pool = pool
|
|
|
|
asyncio.create_task(train_document_task())
|
|
|
|
try:
|
|
yield
|
|
finally:
|
|
# 应用关闭时销毁连接池
|
|
await close_postgres_pool(pool)
|
|
app = FastAPI(lifespan=lifespan)
|
|
|
|
# 挂载静态文件目录
|
|
app.mount("/static", StaticFiles(directory="Static"), name="static")
|
|
|
|
# 加载路由
|
|
app.include_router(zuowen_router) # 作文批阅路由
|
|
app.include_router(ggb_router) # Geogebra路由
|
|
app.include_router(rag_router) # LightRAG路由
|
|
app.include_router(knowledge_router) # 知识图谱路由
|
|
app.include_router(oss_router) # 阿里云OSS路由
|
|
|
|
app.include_router(llm_router) # 大模型路由
|
|
|
|
# Teaching Model 相关路由
|
|
# 登录相关(不用登录)
|
|
app.include_router(login_router, prefix="/api/login", tags=["login"])
|
|
# 用户相关
|
|
app.include_router(user_router, prefix="/api/user", tags=["user"])
|
|
# 字典相关(Dm)
|
|
app.include_router(dm_router, prefix="/api/dm", tags=["dm"])
|
|
# 主题相关
|
|
app.include_router(theme_router, prefix="/api/theme", tags=["theme"])
|
|
# 文档相关
|
|
app.include_router(document_router, prefix="/api/document", tags=["document"])
|
|
# 问题相关(大模型应用)
|
|
app.include_router(teaching_model_router, prefix="/api/teaching/model", tags=["teacher_model"])
|
|
|
|
if __name__ == "__main__":
|
|
uvicorn.run(app, host="0.0.0.0", port=8100)
|