| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- from fastapi import APIRouter, Depends, Request
- from sqlalchemy.orm import Session
- from pydantic import BaseModel
- from typing import Optional
- from database import get_db
- from models.chat import AIMessage
- from services.qwen_service import qwen_service
- import time
- router = APIRouter()
- class BuildPromptRequest(BaseModel):
- exam_type: str
- topic: str
- difficulty: str
- question_count: int
- @router.post("/exam/build_prompt")
- async def build_exam_prompt(
- request: Request,
- data: BuildPromptRequest,
- db: Session = Depends(get_db)
- ):
- """生成考试提示词 - 对齐Go版本函数名"""
- user = request.state.user
- if not user:
- return {"statusCode": 401, "msg": "未授权"}
-
- prompt = f"""请生成{data.question_count}道关于{data.topic}的{data.exam_type},难度为{data.difficulty}。"""
- return {
- "statusCode": 200,
- "msg": "success",
- "data": {"prompt": prompt}
- }
- class BuildSinglePromptRequest(BaseModel):
- question_type: str
- topic: str
- difficulty: str
- @router.post("/exam/build_single_prompt")
- async def build_single_question_prompt(
- request: Request,
- data: BuildSinglePromptRequest,
- db: Session = Depends(get_db)
- ):
- """生成单题提示词 - 对齐Go版本函数名"""
- user = request.state.user
- if not user:
- return {"statusCode": 401, "msg": "未授权"}
-
- prompt = f"""请生成1道关于{data.topic}的{data.question_type},难度为{data.difficulty}。"""
- return {
- "statusCode": 200,
- "msg": "success",
- "data": {"prompt": prompt}
- }
- class ModifyQuestionRequest(BaseModel):
- ai_conversation_id: int
- content: str
- @router.post("/re_modify_question")
- async def re_modify_question(
- request: Request,
- data: ModifyQuestionRequest,
- db: Session = Depends(get_db)
- ):
- """修改考试题目 - 实际修改ai_message表"""
- user = request.state.user
- if not user:
- return {"statusCode": 401, "msg": "未授权"}
-
- # 修改ai_message表中type='ai'的content
- result = db.query(AIMessage).filter(
- AIMessage.ai_conversation_id == data.ai_conversation_id,
- AIMessage.type == 'ai'
- ).update({"content": data.content})
-
- if result == 0:
- return {"statusCode": 404, "msg": "消息不存在"}
-
- db.commit()
- return {"statusCode": 200, "msg": "success"}
- class ReproduceSingleQuestionRequest(BaseModel):
- ai_conversation_id: int
- regenerate_reason: str
- @router.post("/re_produce_single_question")
- async def re_produce_single_question(
- request: Request,
- data: ReproduceSingleQuestionRequest,
- db: Session = Depends(get_db)
- ):
- """重新生成单题"""
- user = request.state.user
- if not user:
- return {"statusCode": 401, "msg": "未授权"}
-
- # 获取原消息
- message = db.query(AIMessage).filter(
- AIMessage.ai_conversation_id == data.ai_conversation_id,
- AIMessage.type == 'ai'
- ).first()
-
- if not message:
- return {"statusCode": 404, "msg": "消息不存在"}
-
- new_question = f"重新生成的题目(原因:{data.regenerate_reason})"
- return {
- "statusCode": 200,
- "msg": "success",
- "data": {
- "ai_conversation_id": data.ai_conversation_id,
- "new_question": new_question
- }
- }
|