'commit'
This commit is contained in:
178
dsLightRag/Routes/TeacherHelperRoute.py
Normal file
178
dsLightRag/Routes/TeacherHelperRoute.py
Normal file
@@ -0,0 +1,178 @@
|
||||
import json
|
||||
import logging
|
||||
|
||||
from fastapi import APIRouter, Request, HTTPException
|
||||
from fastapi.responses import StreamingResponse
|
||||
|
||||
from TeacherHelper.Kit.TeacherHelper import (
|
||||
generate_lesson_plan,
|
||||
generate_courseware,
|
||||
generate_homework
|
||||
)
|
||||
|
||||
# 创建路由器
|
||||
router = APIRouter(prefix="/api", tags=["教师辅助工具"])
|
||||
|
||||
# 配置日志
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@router.post("/teacher/daoXueAn")
|
||||
async def generate_dao_xue_an(request: Request):
|
||||
"""生成导学案接口"""
|
||||
try:
|
||||
# 解析请求体
|
||||
body = await request.body()
|
||||
data = json.loads(body) if body else {}
|
||||
|
||||
# 获取提示词参数,如果没有提供则使用默认值
|
||||
system_prompt = data.get("system_prompt")
|
||||
user_prompt = data.get("user_prompt")
|
||||
|
||||
# 生成导学案
|
||||
content_generator = await generate_lesson_plan(system_prompt, user_prompt)
|
||||
|
||||
# 定义SSE响应生成器
|
||||
async def generate_sse_response():
|
||||
try:
|
||||
yield "data: 开始生成导学案...\n\n"
|
||||
async for chunk in content_generator:
|
||||
yield f"data: {chunk}\n\n"
|
||||
yield "data: [DONE]\n\n"
|
||||
except Exception as e:
|
||||
logger.error(f"生成导学案时发生异常: {str(e)}")
|
||||
yield f"data: 生成导学案时发生异常: {str(e)}\n\n"
|
||||
|
||||
# 返回SSE响应
|
||||
return StreamingResponse(
|
||||
generate_sse_response(),
|
||||
media_type="text/event-stream",
|
||||
headers={"Cache-Control": "no-cache", "Connection": "keep-alive"}
|
||||
)
|
||||
|
||||
except json.JSONDecodeError:
|
||||
raise HTTPException(status_code=400, detail="无效的JSON格式")
|
||||
except Exception as e:
|
||||
logger.error(f"导学案接口异常: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=f"服务器内部错误: {str(e)}")
|
||||
|
||||
|
||||
@router.post("/teacher/jiaoAn")
|
||||
async def generate_jiao_an(request: Request):
|
||||
"""生成教案接口"""
|
||||
try:
|
||||
# 解析请求体
|
||||
body = await request.body()
|
||||
data = json.loads(body) if body else {}
|
||||
|
||||
# 获取提示词参数,如果没有提供则使用默认值
|
||||
system_prompt = data.get("system_prompt")
|
||||
user_prompt = data.get("user_prompt")
|
||||
|
||||
# 生成教案
|
||||
content_generator = await generate_lesson_plan(system_prompt, user_prompt)
|
||||
|
||||
# 定义SSE响应生成器
|
||||
async def generate_sse_response():
|
||||
try:
|
||||
yield "data: 开始生成教案...\n\n"
|
||||
async for chunk in content_generator:
|
||||
yield f"data: {chunk}\n\n"
|
||||
yield "data: [DONE]\n\n"
|
||||
except Exception as e:
|
||||
logger.error(f"生成教案时发生异常: {str(e)}")
|
||||
yield f"data: 生成教案时发生异常: {str(e)}\n\n"
|
||||
|
||||
# 返回SSE响应
|
||||
return StreamingResponse(
|
||||
generate_sse_response(),
|
||||
media_type="text/event-stream",
|
||||
headers={"Cache-Control": "no-cache", "Connection": "keep-alive"}
|
||||
)
|
||||
|
||||
except json.JSONDecodeError:
|
||||
raise HTTPException(status_code=400, detail="无效的JSON格式")
|
||||
except Exception as e:
|
||||
logger.error(f"教案接口异常: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=f"服务器内部错误: {str(e)}")
|
||||
|
||||
|
||||
@router.post("/teacher/keJian")
|
||||
async def generate_ke_jian(request: Request):
|
||||
"""生成课件接口"""
|
||||
try:
|
||||
# 解析请求体
|
||||
body = await request.body()
|
||||
data = json.loads(body) if body else {}
|
||||
|
||||
# 获取提示词参数,如果没有提供则使用默认值
|
||||
system_prompt = data.get("system_prompt")
|
||||
user_prompt = data.get("user_prompt")
|
||||
|
||||
# 生成课件
|
||||
content_generator = await generate_courseware(system_prompt, user_prompt)
|
||||
|
||||
# 定义SSE响应生成器
|
||||
async def generate_sse_response():
|
||||
try:
|
||||
yield "data: 开始生成课件...\n\n"
|
||||
async for chunk in content_generator:
|
||||
yield f"data: {chunk}\n\n"
|
||||
yield "data: [DONE]\n\n"
|
||||
except Exception as e:
|
||||
logger.error(f"生成课件时发生异常: {str(e)}")
|
||||
yield f"data: 生成课件时发生异常: {str(e)}\n\n"
|
||||
|
||||
# 返回SSE响应
|
||||
return StreamingResponse(
|
||||
generate_sse_response(),
|
||||
media_type="text/event-stream",
|
||||
headers={"Cache-Control": "no-cache", "Connection": "keep-alive"}
|
||||
)
|
||||
|
||||
except json.JSONDecodeError:
|
||||
raise HTTPException(status_code=400, detail="无效的JSON格式")
|
||||
except Exception as e:
|
||||
logger.error(f"课件接口异常: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=f"服务器内部错误: {str(e)}")
|
||||
|
||||
|
||||
@router.post("/teacher/zuoYe")
|
||||
async def generate_zuo_ye(request: Request):
|
||||
"""生成作业接口"""
|
||||
try:
|
||||
# 解析请求体
|
||||
body = await request.body()
|
||||
data = json.loads(body) if body else {}
|
||||
|
||||
# 获取提示词参数,如果没有提供则使用默认值
|
||||
system_prompt = data.get("system_prompt")
|
||||
user_prompt = data.get("user_prompt")
|
||||
material_path = data.get("material_path")
|
||||
|
||||
# 生成作业
|
||||
content_generator = await generate_homework(system_prompt, user_prompt, material_path)
|
||||
|
||||
# 定义SSE响应生成器
|
||||
async def generate_sse_response():
|
||||
try:
|
||||
yield "data: 开始生成作业...\n\n"
|
||||
async for chunk in content_generator:
|
||||
yield f"data: {chunk}\n\n"
|
||||
yield "data: [DONE]\n\n"
|
||||
except Exception as e:
|
||||
logger.error(f"生成作业时发生异常: {str(e)}")
|
||||
yield f"data: 生成作业时发生异常: {str(e)}\n\n"
|
||||
|
||||
# 返回SSE响应
|
||||
return StreamingResponse(
|
||||
generate_sse_response(),
|
||||
media_type="text/event-stream",
|
||||
headers={"Cache-Control": "no-cache", "Connection": "keep-alive"}
|
||||
)
|
||||
|
||||
except json.JSONDecodeError:
|
||||
raise HTTPException(status_code=400, detail="无效的JSON格式")
|
||||
except Exception as e:
|
||||
logger.error(f"作业接口异常: {str(e)}")
|
||||
raise HTTPException(status_code=500, detail=f"服务器内部错误: {str(e)}")
|
Reference in New Issue
Block a user