feat: редизайн страницы создания/редактирования теста
- TestForm: смысловые блоки «Метаинформация» / «Версии теста» / «Содержание» / команды - AI-генерация: мини-форма из 3 полей (тема, число вопросов, число вариантов) - Кнопка «Проверить тест» переехала в нижнюю панель команд - Backend: GenerateRequest принимает answers_count, передаётся в промпт - Убрано упоминание API-ключа в fallback-сообщении формы Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -16,6 +16,7 @@ class CheckResponse(BaseModel):
|
||||
class GenerateRequest(BaseModel):
|
||||
topic: str
|
||||
count: int = 7
|
||||
answers_count: int = 3
|
||||
|
||||
|
||||
class GenerateResponse(BaseModel):
|
||||
@@ -73,7 +74,9 @@ async def check_connection(db: AsyncSession = Depends(get_db)):
|
||||
@router.post("/api/llm/generate", response_model=GenerateResponse)
|
||||
async def generate_questions(req: GenerateRequest, db: AsyncSession = Depends(get_db)):
|
||||
try:
|
||||
questions = await llm_service.generate_questions(db, req.topic, req.count)
|
||||
questions = await llm_service.generate_questions(
|
||||
db, req.topic, req.count, req.answers_count
|
||||
)
|
||||
return {"questions": questions}
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=400, detail=str(e))
|
||||
|
||||
@@ -33,7 +33,12 @@ async def check_connection(db: AsyncSession) -> str:
|
||||
return response.choices[0].message.content.strip()
|
||||
|
||||
|
||||
async def generate_questions(db: AsyncSession, topic: str, count: int = 7) -> list[dict]:
|
||||
async def generate_questions(
|
||||
db: AsyncSession,
|
||||
topic: str,
|
||||
count: int = 7,
|
||||
answers_count: int = 3,
|
||||
) -> list[dict]:
|
||||
api_key = await _get_api_key(db)
|
||||
client = _client(api_key)
|
||||
|
||||
@@ -54,7 +59,7 @@ async def generate_questions(db: AsyncSession, topic: str, count: int = 7) -> li
|
||||
}}
|
||||
|
||||
Требования:
|
||||
- Минимум 3 варианта ответа на каждый вопрос
|
||||
- Ровно {answers_count} вариантов ответа на каждый вопрос
|
||||
- Ровно один правильный ответ на каждый вопрос
|
||||
- Вопросы должны проверять практические знания по теме
|
||||
- Варианты ответов должны быть правдоподобными"""
|
||||
|
||||
Reference in New Issue
Block a user