我尝试使用 AI 构建考试系统。它运行良好……直到它失效。
I’m happy to translate the article for you, but I’ll need the full text you’d like translated. Could you please paste the content (excluding the source line you already provided) here? Once I have it, I’ll translate it into Simplified Chinese while preserving the original formatting and markdown.
从结构化数据错误到 AI 驱动的考试平台之旅
我最初并不是想要构建一个考试平台。问题起源于另一个场景:我们在使用 AI 为 API 生成结构化数据。一开始返回的结果看起来还可以,但在生产环境中我们开始看到细微的格式错误——例如返回 120.5 而不是要求的 120.50。下游系统因为期待精确的格式而拒绝了该值。
这些微小的问题耗费了大量调试时间,并且不断复现。
为什么这与考试有关
如果 AI 在简单的数字格式上都会出错,那么当我们让它 生成考试题目 或 评估答案 时会怎样?在演示中看起来很惊艳——即时生成题目、自动批改,但在实际使用中一致性就成了问题:
- 难度等级随机波动。
- 答案的结构并不统一。
- 评估可能带有主观性。
这对学生和学校来说都不可靠。
第一次尝试:提示工程
我尝试了常规的修复办法:改进提示词。我把提示写得更长,加入更多规则,并且非常具体。虽然有一点帮助,但并没有根本解决问题——边缘案例仍然会产生略有偏差的输出。
真正的问题不在提示词,而在于 在没有任何控制的情况下直接信任原始 AI 输出。
解决方案:一个小型 Java 包装器
我没有去“修复 AI”,而是构建了一个轻量级的 Java 应用(以 JAR 形式分发)。用户可以:
- 输入他们的详情。
- 选择科目和主题。
- 生成题目、启动计时、提交答案并获取报告。
新颖之处不在于 UI 本身,而在于 UI 与 AI 之间 的处理过程。下面是 UI 界面的逐步演示。
首页(登陆页 + 功能)
主要入口清晰展示整体概念——一个全栈 AI 驱动的考试平台,用户可以生成题目、注册并选择主题。
- 不仅仅是一个基础的表单应用。
- 定位为 完整的考试框架,已集成 AI 题目生成、评估、计时和报告功能。
- 下面的功能区以结构化方式突出核心能力,强调平台处理 完整的考试生命周期,而不仅是题目生成。
学生注册
捕获详细的学生信息——姓名、电子邮件、年龄、国家、经验、兴趣和教育水平。
- 这些上下文使系统能够个性化生成问题。
- 设计超越了通用问题,迈向自适应考试生成。
- 布局简洁,但理念强大:收集足够的上下文,让 AI 生成相关且有意义的问题。
Topic Selection
预定义的考试主题(Java、Spring、系统设计等),并提供清晰的细节:
- 难度等级
- 题目数量
- 时间时长
此界面增加了结构性:
- 灵活性 – 可选择多个主题。
- 可控性 – 固定的时长和难度等级。
通过减少随机性,考试变得可预测且公平。
考试开始界面
考试开始前显示的说明,包括以下规则:
- 时间限制。
- 禁止刷新页面。
- 提交后答案不可更改。
Mathematics – Easy
展示基本的数学题目(加法、乘法)。虽然看起来像普通测验,但题目是根据所选科目(Mathematics)和难度(Easy)由 AI 实时生成的。
当用户选择主题时,系统会向 AI 发送类似以下的提示:
“生成 easy‑level 数学题目,包含 two‑digit addition 和 single‑digit multiplication。每个问题的格式返回为
Q:,答案的格式返回为A:。”
随后系统会解析响应,显示题目,并在之后自动进行评估。
关键要点
- 控制 AI,别盲目信任它。
- 添加确定性层 (prompt templates, strict output parsing, validation) 以确保一致性。
- 收集上下文数据 (student profile, topic settings) 使 AI 输出更具相关性和可复现性。
- 将 AI 包装在轻量级应用中,强制执行规则、计时和报告——将“酷炫演示”转变为可投入生产的考试平台。
如果您对源代码感兴趣或想自行尝试 JAR,欢迎联系!
概览
系统在向学生展示每个 AI 生成的考试题目之前都会进行验证。
验证层会检查:
- 结构 – 每道题必须恰好有四个选项。
- 格式一致性 – 所有题目使用相同的布局。
- 正确答案提取 – 将指定的答案识别并存储。
对于 数学 题目,系统还可以确定性地验证答案(例如,重新计算 15 + 27 并确认结果)。
科学 – 中等

在此界面中,题目属于概念性(化学符号、物理事实)。由于答案不是数值型,系统依赖 AI 知识,但仍然强制执行:
- 结构化的问题格式
- 唯一正确答案
- 有效的选项集合
验证过程
- 交叉检查答案格式 – 确保答案符合预期的模式。
- 确保仅标记一个正确答案。
- 在响应含糊时可选地重新提示 AI。
编程 – 困难

这些屏幕包含高级问题(时间复杂度、数据结构)。AI 生成:
- 特定领域的问题
- 合适的难度等级
- 相关的答案选项
可靠性措施
- 强制已知模式(例如,Big‑O 表示法格式)
- 验证选项一致性
- 确保仅选中一个正确答案
在可能的情况下,还会应用基于规则的验证,例如:
- 有效的复杂度值(
O(n)、O(log n)等) - 标准问题的已知正确答案
考试流程
- “Start Exam Now” 将设置阶段与执行阶段分离,提供清晰的流程控制。
- 每个 AI 响应都会通过验证层,验证层会:
- 检查结构
- 修复格式问题
- 确保必需字段存在
- 保证输出一致性
因此,AI 建议 内容,但系统 决定 实际使用的内容。
显示答案
当学生点击 “Show Answer” 时:
- 从 AI 响应中 提取 答案。
- 对答案进行 验证,确保其正确性和格式正确。
- 对于数值题,系统在显示之前 重新检查计算。
这让学生对显示的答案准确可靠充满信心。
影响
- 输出现在在每次运行中保持一致。
- 系统行为可预测,不再像“演示”。
- 实现仍然保持有意的简洁:一个带有内存数据库的 Java JAR,可在本地运行。
合作邀请
如果您在以下方面有经验:
- AI 生成的数据
- 考试或测验系统
- 验证/控制层
我很想了解您是如何解决类似挑战的。您是改进了提示词,还是引入了控制机制?
项目仓库:
https://github.com/swapneswarsundarray/ai-assisted-exam
该项目仍处于早期阶段,欢迎贡献。请随意尝试、提出改进建议,或添加真实场景的输入。
要点
AI 单独并不能取代系统;它成为更大架构的 组件。
真正的价值来自于周围的 结构、验证和控制,使整个解决方案可靠。




