Files
dsProject/dsLightRag/Start.py
2025-09-06 10:14:59 +08:00

116 lines
4.7 KiB
Python

import asyncio
import logging # 添加此导入
from contextlib import asynccontextmanager
import uvicorn
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware # 添加此导入
from starlette.staticfiles import StaticFiles
from Routes.Ggb import router as ggb_router
from Routes.JiMengRoute import router as jimeng_router
from Routes.Knowledge import router as knowledge_router
from Routes.Llm import router as llm_router
from Routes.MjRoute import router as mj_router
from Routes.Oss import router as oss_router
from Routes.QA import router as qa_router
from Routes.QWenImageRoute import router as qwen_image_router
from Routes.Rag import router as rag_router
from Routes.SunoRoute import router as suno_router
from Routes.TeachingModel.api.DmController import router as dm_router
from Routes.TeachingModel.api.DocumentController import router as document_router
from Routes.TeachingModel.api.LoginController import router as login_router
from Routes.TeachingModel.api.TeachingModelController import router as teaching_model_router
from Routes.TeachingModel.api.ThemeController import router as theme_router
from Routes.TeachingModel.api.UserController import router as user_router
from Routes.TeachingModel.tasks.BackgroundTasks import train_document_task
from Routes.XueBanRoute import router as xueban_router
from Routes.ZuoWen import router as zuowen_router
from Routes.RecognizeEduQuestion import router as ocr_router
from Routes.VideoRetalkRoute import router as videoRetalk_router
from Routes.ttsRoute import router as tts_router
from Routes.CopyFaceRoute import router as copyFace_router
from Routes.WenShengTu import router as wenshengtu_router
from Routes.TeacherHelperRoute import router as teacherHelper_router
from Routes.XunFeiRoute_en import router as xunfei_en_router
from Routes.XunFeiRoute_cn import router as xunfei_cn_router
# 控制日志输出
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)
pass
app = FastAPI(lifespan=lifespan)
# 添加CORS中间件
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 允许所有来源,生产环境中可以限制为特定域名
allow_credentials=True,
allow_methods=["*"], # 允许所有方法
allow_headers=["*"], # 允许所有头部
)
# 挂载静态文件目录
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) # 大模型路由
app.include_router(qa_router) # 答疑路由
app.include_router(jimeng_router) # 即梦路由
app.include_router(suno_router) # Suno路由
app.include_router(xueban_router) # 学伴路由
app.include_router(mj_router) # Midjourney路由
app.include_router(qwen_image_router) # Qwen Image 路由
app.include_router(ocr_router) # 教育场景识别
app.include_router(videoRetalk_router) # 视频复读
app.include_router(tts_router) # 文本转语音
app.include_router(copyFace_router) # 抄脸
app.include_router(wenshengtu_router) # 文生图
app.include_router(teacherHelper_router) # 教师助手
app.include_router(xunfei_en_router) # 讯飞
app.include_router(xunfei_cn_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"])
# 教学答疑
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=8200)