织码在线教育系统--主观题 AI 智能阅卷:批量初评与教师复核如何协同

主观题 AI 智能阅卷:批量初评与教师复核如何协同

客观题可以自动判分,主观题却常常成为成绩发布前的等待环节。同一道论述题,几百名学员就对应几百次阅读、比对和打分;多位教师共同阅卷时,还要反复对齐评分口径。

对企业培训和教培机构来说,缩短阅卷周期只是一个目标。更关键的是:题目按什么标准给分,教师在哪里修正,批量处理失败后又该如何定位。

织码在线教育系统采用"AI 批量初评、教师逐卷复核"的方式,把重复性的初步比对交给模型,把最终评分判断留给教师。本文围绕阅卷入口、异步处理、评分材料和人工复核,梳理这套方案的实现思路与使用边界。

一 从待阅卷列表到教师复核

主观题阅卷位于考试数据管理模块,接口统一挂在 /resource/admin/exam/data 下。管理员先筛选答卷,再发起批量 AI 初评,最后进入单卷视图复核与修正,评分结果回到考试记录 ExamUserRecord。

图 1 阅卷链路中的自动处理与人工确认

接口 方法 职责
/evaluation/list GET 按考试或学员筛选待阅卷答卷
/evaluation/ai/batch POST 提交批量 AI 阅卷请求,返回受理响应
/evaluation/start GET 载入单卷复核所需的试卷与作答材料

列表请求 AdminExamDataEvaluationListReq 包含 examType、relateId、userId,分别对应考试类型、关联考试和学员筛选。批量请求 AdminExamDataEvaluationAiBatchReq 则使用 recordIds 指定答卷记录。

三个接口承担的是查询、受理和载入。尤其需要注意,/evaluation/start 用于进入复核视图,不能把它等同于"保存教师评分"或"确认发布成绩";后续提交动作应以实际评分保存流程为准。

二 异步批处理让提交与评分分开

模型评分耗时受答卷长度、模型响应和服务配额影响。若前端必须等待整批答卷完成后才拿到响应,容易出现长时间等待和请求超时。

AdminExamDataBiz.evaluationAiBatch 将受理与执行拆开:先对 recordIds 去重、形成受理计数,再通过 threadPoolTaskExecutor.execute(...) 启动后台处理,接口随即返回受理响应。

请求被受理,表示处理已经发起,并不表示答卷已经评分成功。 这一区分直接影响管理端如何提示状态,也影响运营人员什么时候可以开始复核。

图 2 提交受理与后台评分分别推进

1 先批量读取 再按答卷组织数据

后台方法 handleEvaluationAiBatch 先通过 examUserRecordDao.listByIds(recordIds) 批量读取答卷,再批量查询作答并按 recordId 分组,随后逐卷调用 AI 评分。

这种组织方式减少了逐卷反复查询数据库的开销。不存在的答卷记录可计入跳过数量,避免单个无效 ID 阻断其他答卷。它优化的是数据读取方式,并不意味着模型调用本身已经并行执行。

2 五个计数器应区分受理状态与处理结果

响应结构 AdminExamDataEvaluationAiBatchResp 包含以下字段:

字段 应如何理解
totalCount 去重后的答卷总数
submittedCount 本次受理的答卷数,不是完成数
successCount 评分成功数量,应结合更新时点理解
skipCount 跳过数量,例如记录不存在
failureCount 处理失败数量

这些字段为批次统计提供了基础,但一次立即返回的 HTTP 响应不会自动携带后台后来更新的计数。要在前端持续展示进度,还需要能查询后台最新状态的机制,例如持久化批次状态并提供查询接口。

因此,仅凭响应中有这五个字段,不能断言系统已经具备实时进度、轮询查询或失败重试能力。管理端能否通过刷新看到结果,应结合实际状态落库与列表查询实现确认。

三 评分口径从参考答案开始

批量处理解决"怎么处理更多答卷",评分材料则决定"模型依据什么给分"。平台通过 AiQuestionGradingReq 将题目和作答组织为统一请求:

字段 提供给评分过程的信息
questionId / questionType 题目身份与题型
questionTitle 题干与作答要求
questionAnswer 参考答案或评分要点
questionScore 本题满分
userAnswer 学员实际作答
optionCount 选择题场景的选项数,主观题不以此作为评分依据

其中,questionAnswer 是模型与教师对齐口径的重要载体。若只提供一段笼统的参考答案,模型仍可能对表达差异、部分正确和遗漏要点作出不同判断。

更适合落地的做法是,在参考答案中写清关键得分点、各点分值、可接受的等价表述及扣分条件。例如,一道 10 分的案例题,可以明确"问题识别 3 分、原因分析 3 分、改进措施 4 分"。这是评分标准的编写示例,不代表平台已经实现自动拆分评分点。

图 3 模型初评与人工复核使用一致的评分材料

多模型接入与调用限流

模型调用由 TextModelService 体系承接,实现包括 AnthropicMessagesTextModelImpl、OpenAiCompatibleTextModelImpl、OpenAiResponsesTextModelImpl,可按配置选择接入方式。

集中阅卷时,Redisson 限流用于控制调用节奏、减少触及模型配额的风险。限流不等于调用一定成功;切换接入方式也不等于评分结果天然一致。正式使用前,仍应使用同一组样卷检查模型与人工评分的差异。

四 教师复核决定最终评分

AI 初评后的答卷需要回到教师工作台。/evaluation/start 根据 recordId 返回 AdminExamDataEvaluationStartResp,将复核所需的考试信息、试卷结构和学员作答放在同一上下文中。

信息组 关键字段 复核用途
考试与答卷 recordId、examType、examName 确认复核对象
试卷身份 paperId、paperName 核对所关联试卷
时间信息 submitTime、answerTime 辅助了解作答过程
分值规则 totalScore、passScore 对照试卷满分与及格线
题目结构 titles(ExamTitle 列表) 对照题干、参考答案与学员作答

管理端页面位于 views/content/exam/record/evaluation/:index.vue 提供工作台入口,List.vue 承担列表和批量操作,Card.vue 展示答卷及考生信息,Question.vue 支持单题评分。

教师复核时应重点检查部分正确、等价表达和边界得分,确认模型是否漏看有效要点、误解作答含义,或给出超出本题满分的分数。AI 可以减轻初步阅读与比对的负担,最终成绩仍以教师复核结果为准。

现有字段说明中没有展示置信度指标或自动分流规则,因此不宜把"只复核低置信度答卷"作为现成功能对外描述。没有经过验证的筛选机制时,应保留必要的逐卷复核安排。

五 从小批样卷开始落地

建议先选一组覆盖完整作答、部分正确、空白答案和不同表达方式的样卷,由教师形成评分参照,再测试 AI 初评。确认主要偏差后,优先调整评分要点,而不是直接扩大处理规模。

场景 建议做法
客观题占主导 延续已有自动判分,按需要处理主观题
主观题集中考试 分批发起 AI 初评,安排教师复核后定分
多教师共同阅卷 提前统一得分点与扣分条件,减少宽严差异
处理失败或记录跳过 分别检查答卷数据、调用错误及配额状态,确认后再处理
成绩申诉 对照题干、参考答案、原始作答和复核结果进行解释

运营评估可以关注批次完成耗时、失败与跳过数量、人工修正比例和单卷复核用时。这些是建议观察的指标,不代表平台已经内置相应看板,也不应预设固定的提效比例。

与 AI 出题相比,两者使用相似的模型能力,但处理对象不同:出题将知识资料转成题目,需审核后入库;阅卷将题目、参考答案与作答转成初评结果,需复核后定分。人工确认应落在各自业务流程的关键位置。

总结

主观题 AI 阅卷的价值,来自批量处理能力与教师判断的配合。异步机制把提交等待与评分执行分开,批量读取减少重复查询,统一的评分材料为口径一致提供基础,单卷复核则让教师能够校正模型判断。

真正可用的阅卷流程,还需要把受理与完成、初评与定分、统计字段与进度查询区分清楚。评分标准越明确,处理状态越可追踪,教师复核越有依据,AI 辅助阅卷才能稳定融入考试管理。

相关推荐
Shockang7 小时前
llama.cpp 本地运行 9B 模型:部署、工具调用与微调数据
人工智能
Shockang7 小时前
n8n 智能体工作流实战:触发、工具、记忆与发布护栏
人工智能
冬奇Lab9 小时前
开源项目第241期:YuE2 —— 用符号乐谱当“白盒“接口的开源音乐生成模型,SongBench 超越 Suno v5/v6
人工智能
鶴哥只手遮天10 小时前
Spring AI 2.0.1 深度解析-第 14 章 MCP 服务端(上):注解式实现与工具来源
java·人工智能·开源
鶴哥只手遮天10 小时前
Spring AI 2.0.1 深度解析-第 15 章 MCP 服务端(下):三种协议形态、Streamable 传输与状态管理
java·人工智能·开源
鶴哥只手遮天10 小时前
Spring AI 2.0.1 深度解析-第 16 章 向量存储(上):`VectorStore` 接口体系、`BatchingStrategy`
java·人工智能·开源
鶴哥只手遮天10 小时前
Spring AI 2.0.1 深度解析-第 12 章 工具循环的流式形态、Usage 累加与扩展体系
java·人工智能·开源
鶴哥只手遮天10 小时前
Spring AI 2.0.1 深度解析-第 23 章 模型供应商实现:从 `OpenAiSetup` 到 Bedrock
java·人工智能·开源