基于DeepSeek的AI作文批改系统

发布时间:2026/6/27 3:33:23
基于DeepSeek的AI作文批改系统 一、项目背景在教育信息化浪潮下语文教师面临作文批改工作量大、反馈不及时的痛点。大语言模型的兴起为自动化作文批改提供了新的可能。本项目基于硅基流动平台的DeepSeek-R1模型构建了一个集智能批改、对比分析、语音输入、报告导出于一体的全栈AI作文批改系统。选题意义探索AI在教育教学中的实际应用场景解决教师批改作文效率低下的现实问题为学生提供即时、客观、多维度的写作反馈二、技术选型技术栈选型理由后端框架Flask轻量灵活适合快速原型开发前端方案原生HTML/CSS/JS无框架依赖部署简单展示直观AI模型DeepSeek-R1-0528-Qwen3-8B推理能力强中文理解优秀性价比高API平台硅基流动(SiliconFlow)国内访问稳定兼容OpenAI接口格式文档解析python-docx支持Word文档读取与生成图表可视化Canvas Confetti CSS动画轻量级特效无需引入重型图表库三、核心功能3.1 智能作文批改四维评分从主旨、结构、语言、创意四个维度量化评分错误标记自动识别错别字、用词重复、病句原文红色波浪线高亮佳句赏析识别精彩句子并单独展示绿色下划线标记修改建议针对每个错误给出具体修改方案和理由3.2 对比批改模式支持上传修改前后的两篇作文AI对比分析进步之处和仍需改进的地方帮助学生直观看到自己的成长轨迹。3.3 语音输入基于浏览器Web Speech API支持语音实时转文字输入作文降低输入门槛。3.4 对话追问批改完成后可在聊天区继续追问AI老师深入探讨写作技巧。3.5 报告导出一键生成Word格式的批改报告包含评分、错误列表、佳句赏析和总体评价。3.6 其他亮点 暗黑模式切换 历史记录本地存储最近10条 高分彩带特效⭐ 星级可视化评分⌨️ 评语打字机效果四、项目架构textessay-grader/ ├── app.py # Flask后端主程序 ├── config.py # API密钥配置 ├── grader.py # AI批改逻辑 ├── templates/ │ └── index.html # 前端完整页面 ├── requirements.txt # 依赖清单 └── README.md # 项目说明数据流text用户输入 → 前端JS → Flask API → 硅基流动DeepSeek-R1 → 返回JSON → 前端渲染展示五、详细实现5.1 环境准备bash# 创建虚拟环境 python -m venv venv venv\Scripts\activate # Windows source venv/bin/activate # Mac/Linux # 安装依赖 pip install flask requests python-docx5.2 配置API密钥python# config.py SILICONFLOW_API_KEY sk-你的密钥 SILICONFLOW_API_URL https://api.siliconflow.cn/v1/chat/completions MODEL_NAME deepseek-ai/DeepSeek-R1-0528-Qwen3-8B5.3 核心提示词设计这是整个系统的灵魂。通过精心设计的System Prompt让模型返回结构化JSONpythonsystem_prompt 你是一位资深的语文教师请仔细批改学生作文必须严格按照以下JSON格式返回 { scores: {主旨: 0, 结构: 0, 语言: 0, 创意: 0}, errors: [{original: 错误原文, correct: 修改后, reason: 错误原因}], highlights: [{original: 优美句子, comment: 点评理由}], overall_advice: 总体评价和建议 } 要求 - scores中每项满分10分 - errors中只列出语法错误、用词重复、错别字、病句 - highlights中列出写得精彩的句子 - errors和highlights分开不要混在一起 设计要点角色设定资深的语文教师——让模型以专业视角批改严格格式明确JSON结构避免模型自由发挥分离错误与亮点errors和highlights分开便于前端独立展示可定位性要求original是原文真实片段确保前端能准确高亮5.4 错误高亮实现前端收到AI返回的错误列表后在原文中查找并包裹高亮标签javascript// 标记错误红色波浪线 errors.forEach(e { const original escapeHtml(e.original); const tooltip escapeHtml(e.reason) → escapeHtml(e.correct); highlightedEssay highlightedEssay.replace( original, span classhighlight-error${original} span classtooltip-text${tooltip}/span/span ); }); // 标记佳句绿色下划线 highlights.forEach(h { const original escapeHtml(h.original); const tooltip ✨ escapeHtml(h.comment); // 使用正则避免重复标记 const regex new RegExp((?![^]*)${escapeRegExp(original)}(?![^]*), g); highlightedEssay highlightedEssay.replace( regex, span classhighlight-good${original} span classtooltip-text${tooltip}/span/span ); });5.5 语音输入实现利用浏览器原生Web Speech API几行代码即可实现javascriptfunction toggleVoice() { const SpeechRecognition window.SpeechRecognition || window.webkitSpeechRecognition; recognition new SpeechRecognition(); recognition.lang zh-CN; // 中文识别 recognition.interimResults true; // 实时显示 recognition.continuous true; // 持续监听 recognition.onresult function(event) { let transcript ; for (let i event.resultIndex; i event.results.length; i) { transcript event.results[i][0].transcript; } document.getElementById(essay).value transcript; }; recognition.start(); }5.6 评分动画与彩带特效javascript// 数字跳动动画 keys.forEach((key, i) { const targetScore scores[key] || 0; let current 0; const step targetScore / 20; const timer setInterval(() { current step; if (current targetScore) { current targetScore; clearInterval(timer); el.style.transform scale(1.4); // 到达时放大 el.style.color #2e7d32; // 变绿 } el.textContent Math.round(current); }, 40); }); // 均分≥9分触发彩带 if (avgScore 9) { confetti({ particleCount: 150, spread: 80, origin: { y: 0.6 } }); }六、效果展示6.1 批改主界面左侧作文输入区支持粘贴、上传TXT/Word、语音输入右侧批改结果区评分、错误标记、修改建议、佳句赏析、追问聊天6.2 错误标记展示红色波浪线语法错误、错别字、用词重复绿色下划线精彩句子鼠标悬停可查看具体修改建议和点评。6.3 评分可视化数字从0跳动到目标分数星级展示满分5星高分触发彩带庆祝特效6.4 暗黑模式一键切换暗黑/明亮主题偏好自动保存。七、踩坑记录7.1 DeepSeek-R1返回格式不稳定问题模型有时在JSON外包裹思考过程文字。解决增加容错处理提取json...代码块pythontry: return json.loads(ai_message) except json.JSONDecodeError: if json in ai_message: json_str ai_message.split(json)[1].split()[0] return json.loads(json_str)7.2 前端高亮重复标记问题先用字符串替换标错误再标佳句时可能误替换已标记的span内容。解决使用负向前瞻正则只匹配未被HTML标签包裹的纯文本。7.3 语音识别兼容性问题Web Speech API仅Chrome/Edge支持良好。解决增加浏览器检测不支持时隐藏语音按钮并给出提示。7.4 Word文档段落读取问题python-docx读取的段落可能为空。解决过滤空段落paragraphs [p.text for p in doc.paragraphs if p.text.strip()]八、项目总结8.1 技术收获掌握了大模型API调用和提示词工程的实战技巧深入理解了前后端分离的协作模式学会了Web API语音识别和Canvas粒子背景的使用积累了用户体验设计经验动画、暗黑模式、骨架屏8.2 不足与展望批量批改目前仅支持单篇批改可扩展为批量上传更细粒度分析可增加段落结构分析、论证逻辑检测学生画像积累批改数据后可生成学生写作能力成长曲线多模型对比可接入多个模型对比批改效果