diff --git a/src/config/index.js b/src/config/index.js index 8954765..dce29ec 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -106,6 +106,69 @@ D. [选项D内容] 9. 解析清晰易懂,有助于学生理解 10. 知识点标注准确,便于分类学习`; +// ── 题目变式生成接口(使用 Gemini-3.1-pro)── +export const VARIANT_API_URL = "https://grsaiapi.com/v1/chat/completions"; +export const VARIANT_MODEL = "gemini-3.1-pro"; +export const VARIANT_TEMPERATURE = 0.8; +export const VARIANT_MAX_TOKENS = 4096; + +// 题目变式生成 System Prompt +export const QUESTION_VARIANT_PROMPT = `你是一位专业的英语试题出题专家。请对用户提供的原始试题进行深度分析,然后生成指定数量的变式题目。 + +【最高优先级 - 必须严格遵守】 +用户会在请求中明确指定需要生成的变式题数量(如:生成 3 道变式题)。你必须完整输出该数量的变式题目,缺一不可。如果用户要求 3 道,就必须输出 3 道变式题;如果用户要求 5 道,就必须输出 5 道变式题。这是最重要的规则,违反此规则将导致任务失败。 + +## 第一步:分析原题 +请先分析原题的以下要素: +- 题型(如:单项选择、完形填空、阅读理解、翻译、写作等) +- 考查知识点(如:语法点、词汇、句型等) +- 难度等级(容易/较易/适中/较难/困难) +- 题目结构和特点 + +## 第二步:生成变式题 +根据分析结果,生成【用户指定数量】的变式题目。要求: +1. 保持与原题相同的题型 +2. 可适当调整难度,但需标注新的难度等级 +3. 考查相同或相关的知识点 +4. 题目形式和风格与原题保持一致 + +## 输出格式 +首先输出原题分析: + +### 原题分析 +**题型**:[题型] +**考查知识点**:[知识点] +**难度等级**:[难度] +**题目特点**:[简要描述] + +然后【必须按用户指定数量】输出变式题,格式如下: + +### 变式题 1 +**题目类型**:[类型] +**难度等级**:[难度] +**题目内容**: +[题目文本,如有选项按A/B/C/D格式列出] +**正确答案**:[答案] +**详细解析**:[解析内容,说明解题思路和关键点] +**考查知识点**:[知识点] + +### 变式题 2 +...(同上格式) + +### 变式题 3 +...(同上格式) + +(以此类推,直到输出完用户指定数量的所有变式题) + +重要规则: +1. 【最高优先级】必须严格按照用户指定的数量生成变式题,不能多也不能少 +2. 每道变式题都必须是完整的、可独立使用的题目 +3. 选项类题目必须提供4个选项(A、B、C、D) +4. 答案必须准确无误 +5. 解析要详细清晰,帮助学生理解 +6. 难度等级从:容易、较易、适中、较难、困难 中选择 +7. 每道变式题必须以"### 变式题 [序号]"开头,序号连续递增`; + // ── 文件上传限制 ── export const IMAGE_MAX_SIZE_MB = 10; export const IMAGE_ALLOWED_TYPES_ESSAY = ["image/jpeg", "image/jpg", "image/png"]; diff --git a/src/router/index.js b/src/router/index.js index 523add5..2851487 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -7,6 +7,7 @@ import ExamAnalysis from '../views/ExamAnalysis.vue' import SpellPractice from '../views/SpellPractice.vue' import ProblemSolving from '../views/ProblemSolving.vue' import QuestionGenerator from '../views/QuestionGenerator.vue' +import QuestionVariant from '../views/QuestionVariant.vue' const router = createRouter({ history: createWebHistory(import.meta.env.BASE_URL), @@ -51,6 +52,11 @@ const router = createRouter({ name: 'question-generator', component: QuestionGenerator }, + { + path: '/question-variant', + name: 'question-variant', + component: QuestionVariant + }, ] }) diff --git a/src/views/HomePage.vue b/src/views/HomePage.vue index 1ccac13..1e693fc 100644 --- a/src/views/HomePage.vue +++ b/src/views/HomePage.vue @@ -69,6 +69,14 @@ const features = ref([ icon: "document", route: "/question-generator", }, + { + id: 9, + title: "题目变式生成", + desc: "输入原始试题,AI 深度分析后生成同类变式题,保持题型不变,可调整难度,快速扩展题库,提升出题效率。", + class: "card-9", + icon: "variant", + route: "/question-variant", + }, ]); // Hover effect for glassmorphism glare @@ -266,6 +274,22 @@ onUnmounted(() => { d="M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z" /> + + + + +

{{ feature.title }}

@@ -448,6 +472,11 @@ h1 { box-shadow: 0 8px 20px -6px rgba(16, 185, 129, 0.5); } +.card-9 .icon-wrapper { + background: linear-gradient(135deg, #6366f1, #8b5cf6); + box-shadow: 0 8px 20px -6px rgba(99, 102, 241, 0.5); +} + .card-title { font-size: 1.5rem; font-weight: 600; diff --git a/src/views/QuestionVariant.vue b/src/views/QuestionVariant.vue new file mode 100644 index 0000000..8380816 --- /dev/null +++ b/src/views/QuestionVariant.vue @@ -0,0 +1,1420 @@ + + + + +