跳转至

AI 智能命题

模块目标

程序设计训练(Python)课程的教师与助教需要根据每节课的教学内容设计配套 OJ 题目。命题过程通常包含知识点梳理、难度控制、题面编写、测试点构造以及题目测试等多个环节,需要投入较多时间。

本模块要求开发 AI 智能命题功能,辅助课程教师与助教完成每节课的 OJ 出题工作。命题人员可以输入题目必须覆盖的知识点、预期难度以及其他不同维度的要求;系统应能够据此独立完成题目设计、题目配置生成和测试点生成等多个环节,生成可用于 OJ 题目新增或编辑的完整结果。

本模块不限定具体的页面结构、任务流程或技术方案。实现可以围绕真实命题需求扩展检索、脚本执行、测试数据生成等能力。


前置知识要求

技术点 推荐学习内容
大语言模型 API HTTP 请求、JSON 数据、模型输入与输出
模型配置 提供商 URL、模型名称、模型密钥
异步任务 后台任务、任务状态管理、异常处理
实时通信 流式响应、SSE、WebSocket 或状态轮询
用量统计 输入/输出 Token、模型价格与费用计算
配置安全 API 密钥等敏感信息的保存与使用

上述内容不限定具体框架或实现协议,可参考程序设计训练(Rust)课程的 Agent 架构了解相关概念。


基本功能要求

R1. 出题交互界面

系统应提供可操作的 AI 智能命题界面。可以在基础模块的题目新增、题目编辑页面上扩展相关功能,也可以新增独立的 AI 智能命题页面。

界面应能够提交命题需求、展示处理状态和结果,并支持将所得内容用于后续的题目新增、审阅或修改。具体交互形式不作统一限制。

R2. 可自定义模型配置

系统应支持配置以下模型信息:

  • 提供商 URL;
  • 模型名称;
  • 模型密钥。

配置结果应实际应用于后续模型请求,不得将服务提供商、模型名称或模型密钥固定在程序代码中。模型密钥属于敏感信息,不应在日志、页面响应或错误信息中明文泄露。

R3. 实时进度渲染和中断功能

AI 智能命题任务执行期间,界面应持续展示可观察的进度信息,不得仅在任务全部完成后返回最终结果。

系统应提供任务中断功能。中断操作应能够实际终止当前任务或阻止其继续执行,并在界面中明确展示任务已中断的状态。具体可采用流式响应、SSE、WebSocket、轮询等方式实现,不限定技术方案。

R4. Token 用量与价格统计

系统应统计模型调用产生的 Token 用量,并根据相应的模型价格计算调用费用。统计结果应在界面中清晰展示,至少能够反映当前任务的 Token 用量和费用。

若模型接口能够分别返回输入 Token 和输出 Token,应分别记录和展示。费用统计应说明所采用的计价依据;模型接口不提供完整用量信息时,应明确标注统计方式及其限制。


设计参考

以下示例用于说明本模块关注的设计方向,不限定具体实现方式,也不要求采用其中列出的全部功能。

正例

示例一:通过多次迭代完善题目

允许 AI 按照相应改编要求修改已生成题目(或者其他已有题目)。例如,调整题目的背景与考察内容、修改/加强测试用例,或在保留原有考查目标的基础上设计新的题目情境。

该设计允许 AI 通过多次迭代逐渐完成命题任务,出题人可以根据当前结果继续提出修改要求。具体的迭代流程和交互形式应根据实际设计确定。

示例二:通过工具扩展能力

为 AI 提供若干与命题场景相关的可调用工具。例如,通过 Web 检索相关题目设计资料,或通过服务器 CLI 编写并运行测试数据生成脚本。

该设计利用外部工具扩展模型能力,使系统能够完成单纯文本生成以外的命题任务。工具的选择、权限和执行范围应根据实际设计确定。

反例

示例三:与基础功能相互割裂

仅在页面中添加“AI 出题”按钮,触发后返回一个包含题目信息的压缩包。

该功能与已有题目管理模块相互割裂,所得内容不能便捷地进入题目审阅、编辑或维护流程。

示例四:未能有效辅助命题

AI 功能只能完成单一的文本生成,或者所得题目与输入的知识点、约束条件明显无关。

该功能未能有效处理所声明的命题需求,出题的主要工作仍需人工重新完成。


评分标准

本模块满分为 10 分。

评分项 分值 评分内容
R1. 出题交互界面 1 是否提供完整、可操作的 AI 智能命题界面;是否能够提交需求、展示结果,并与题目新增或修改等操作合理衔接
R2. 可自定义模型配置 1 是否支持配置提供商 URL、模型名称和模型密钥;配置是否实际应用于模型请求
R3. 实时进度渲染和中断功能 1 是否能够实时展示任务进度;是否能够有效中断正在执行的任务,并正确反馈任务状态
R4. Token 用量与价格统计 1 是否能够统计并清晰展示 Token 用量和模型调用费用;费用计算依据是否明确
题目合理性 2 AI 智能命题生成的题目是否满足真实课程要求,是否符合输入的知识点、难度及其他命题要求
测试用例有效性 2 测试用例是否覆盖不同边界条件,数据规模和构造是否能有效区分用户提交的不同时间复杂度算法
功能易用性 2 交互流程是否符合使用习惯,操作是否便捷,功能状态和结果展示是否清晰
合计 10
作者:eternallyproud