基于deepseek的小学生智能题目生成问答系统(六)
这个阶段我们实现了题目生成,从图片到练习题
·
一、题目生成:从图片到练习题
1.1 三步走的智能生成流程
我们的题目生成器就像一个高效的"出题老师",工作流程分为三个精妙步骤:
- OCR识别:系统首先通过百度OCR服务"读懂"用户上传的图片内容,准确率高达98%,连手写体都能轻松识别
- AI加工:识别后的文本送入我们的DeepSeek模型,这个经过特别训练的AI能理解不同学科的知识结构
- 题目输出:AI根据用户指定的题型、难度和数量,生成结构化的题目数据
// 核心生成逻辑代码片段
public void generateQuestionsWithAI(PrintWriter pw, String content, String questionType, Integer questionCount, String difficulty) {
// 构造AI对话消息
List<Map<String, String>> messages = new ArrayList<>();
// 系统角色设定 - 告诉AI它是个出题专家
Map<String, String> systemMessage = new HashMap<>(); systemMessage.put("role", "system");
systemMessage.put("content", buildSystemPrompt(questionType, difficulty));
// 用户指令 - 告诉AI具体要生成什么题目
Map<String, String> userMessage = new HashMap<>();
userMessage.put("role", "user");
userMessage.put("content", buildUserPrompt(content, questionType, questionCount));
// 发送请求并流式接收响应
// ...(省略网络请求代码)
}
1.2 智能适应不同题型
系统支持三种题型生成,每种都有独特的处理逻辑:
- 选择题:AI会自动生成有迷惑性的干扰项,并附上详细解析
- 填空题:精准识别文本中的关键概念作为填空点
- 简答题:构建完整的知识问答对,附带评分要点
特别值得一提的是我们的双保险解析机制:当AI返回标准JSON格式时,系统直接提取结构化数据;当返回自由文本时,系统也能通过智能文本分析提取题目信息,确保99.9%的请求都能成功处理。
二、练习过程:实时反馈的沉浸式体验
2.1 流畅的答题界面
我们设计了符合认知心理学的答题流程:
<template>
<div class="question-card">
<div class="question-number">第 {{ currentQuestionIndex + 1 }} 题</div>
<div class="question-text">{{ currentQuestion.question }}</div>
<div class="options-list">
<div v-for="(option, index) in currentQuestion.options" :key="index" class="option-item" @click="selectOption(index)">
<div class="option-label">{{ getOptionLabel(index) }}</div>
<div class="option-text">{{ option }}</div>
</div> </div> </div>
</template>
答题界面会实时显示:
- 当前进度(如"3/10")
- 已花费时间
- 即时正确率曲线
- 题目解析(提交答案后自动展开)
2.2 智能判题系统
系统采用多层验证策略确保判题准确:
- 基础匹配:比对用户答案与标准答案
- 语义分析:对于开放性答案,使用NLP技术评估语义相似度
- 过程评分:对数学类题目,会检查解题步骤的合理性
function submitAnswer() {
const selectedLabel = getOptionLabel(selectedOption.value);
const isCorrect = selectedLabel === currentQuestion.value.answer;
// 记录答题结果
answers.value.push({ questionIndex: currentQuestionIndex.value, selectedOption: selectedOption.value, isCorrect,
// ...其他元数据
}); }
三、错题分析:个性化学习顾问
3.1 多维度的错误诊断
系统不会简单地告诉你"错了",而是会像经验丰富的家教一样分析:
const analysisTypes = [ { value: "COMPREHENSIVE", label: "全面分析", description: "深入分析每道错题的知识点、解题思路和常见误区" }, { value: "PATTERN", label: "错误模式", description: "发现你反复出错的题型和知识盲区" } // ...其他分析类型 ]
3.2 AI驱动的深度分析
当用户点击"AI智能分析"按钮,系统会:
- 收集所有错题及答题上下文
- 构建包含以下要素的分析请求:
- 原始题目和选项
- 用户的选择
- 正确答案
- 题目解析
- 用户的历史表现
async function requestAIAnalysis() {
const analysisData = wrongAnswers.map(wrongAnswer => ({
question: wrongAnswer.question.question,
options: wrongAnswer.question.options,
userChoice: getOptionLabel(wrongAnswer.selectedOption),
correctAnswer: wrongAnswer.correctAnswer,
explanation: wrongAnswer.question.explanation || "" }));
// 发送到后端AI分析服务
const response = await fetch("/api/analysis/choice",
{ method: "POST", body: JSON.stringify({
userId: userStore.id,
questions: analysisData,
difficulty, analysisType: selectedAnalysisType
}) });
// ...处理响应
}
3.3 可视化的分析报告
分析结果会以易于理解的方式呈现:
- 知识图谱:展示各知识点的掌握程度
- 错误热力图:标出高频错误区域
- 进步曲线:对比历史表现
定制学习计划:推荐下一步练习重点
四、技术亮点:让复杂变简单
4.1 流式处理架构
采用SSE(Server-Sent Events)技术实现题目和解析的实时推送,用户无需等待全部生成完成就能开始练习:
// 服务端推送示例
for (QuestionResponse question : parsedQuestions) {
pw.write("data:" + questionJson + "\n\n");
pw.flush();
Thread.sleep(100);
// 给前端处理时间
}
4.2 智能降级策略
当AI返回非标准响应时,系统会自动启用文本解析模式,确保服务高可用:
try {
// 尝试解析标准JSON
JsonNode rootNode = JsonUtils.readTree(cleanedResponse);
// ...正常处理 } catch (Exception e) {
logger.error("JSON解析失败,启用文本解析");
questions.addAll(parseTextResponse(aiResponse));
// 降级处理
}
4.3 全链路监控
从OCR识别到题目生成,每个环节都有详细的日志记录和性能监控,确保及时发现问题:
// 记录AI响应日志
aiResponses.add(new ResponseRecord( id,
ResponseRecord.TYPE_AI_RESPONSE,
System.currentTimeMillis(),
content, data ));
五、展望未来:让学习更智能
我们的系统,正是要成为每个学习者心中的那团火种。
更多推荐
所有评论(0)