较早些时间,2021年5月份,曾写过一篇分享《试卷类场景这次有点儿更彻底》,功能是通过自建云函数与前端事件的混合使用,实现随机抽题、选项随机排序等,刚看了下,目前浏览量有9000多人次。
再后来,就是自建插件功能上线,一直想着等有时间了,把功能再在这里面实现一下,整整这整整那的,一直未腾出一块时间来搞定这事儿。
最近相继发过两篇内容,均是结合AI对此类场景的一次探索:
探索:AI在线出题、自动批改与解析,助力企业高效培训与学习
分享 :AI 在线试题与阅卷解析 功能搭建全过程
前些天,群里有人谈起来此场景,刚好前些时间的忙碌稍微缓了一些,干脆就在自建插件给折腾了一下,基于自建插件实现随机试题、随机选项、试题批阅,然后再结合AI实现试题解析。
> 搭建演示
>> 哔哩哔哩视频地址
https://www.bilibili.com/video/BV1st421A7CX/
>> 抖音视频地址
https://v.douyin.com/iYEnXwwk/
> 测试链接
https://tnvew1vqtq.jiandaoyun.com/f/662a141773b058d67d85514f
> 效果截图
> 插件源码
点击这里获取插件源码 [非免费]
1、随机出题源码:抽取试题的编号
2、试题整理源码:格式化试题内容
3、试题批阅源码:批阅当前的答题
4、智能解析源码:解析错误的答题
> 实现逻辑
>> 在线答题
核心围绕两个子表单来完成,基于调用插件或呈现内容需要添加有多处辅助字段,试题子表单会基于插件随机抽取的编号列表自动从题库匹配相关试题,同时会基于插件完成组卷呈现在试卷子表单中,答题完毕后可触发插件完成试卷批阅与智能解析。
>> 题库管理
相对以前的实现方式,本次的方式更便于日常管理,因仅为演示场景使用了流水号代替试题编号,实际应用建议应为更便于灵活调整的方式,或可尝试基于数据工厂实现动态编号。
>> 系统辅助
来源于早期子表自动新增行的实现方式,基于此场景中的辅助表,后经测试与优化后形成当前版本,可根据选项的数量,动态匹配选项序号的内容,比如3个选项时为ABC、4个选项时为ABCDE,以些类推,目前提供的模板中可支持到S。 在线答题_系统辅助.xlsx (152.37 K)
> 核心公式
本场景中,随之对功能的细化,可能会用到一些辅助字段,用来重构信息,为插件等提供相应的数据,在辅助字段中所使用较多的函数主要为JOIN()、SPLIT(),可参考 小案例浅析信息的解构与重构 。
例如:试题整理插件中请求参数“试题内容”的值格式如下:
试题分割符:###
内容分割符:***
选项分割符:&&&
试题内容逻辑:
当前试题***试题选项***试题答案###当前试题***试题选项***试题答案
试题内容举例:
当前试题***选项一&&&选项二&&&选项三&&&选项四***选项二&&&选项三###当前试题***选项一&&&选项二&&&选项三&&&选项四***选项二&&&选项三###当前试题***选项一&&&选项二&&&选项三&&&选项四***选项二&&&选项三
>> 微分享智能助理
如果想快速了解函数公式的逻辑,也可以通过 微分享简道云智能助理 来了解,本版“智能助理”基于讯飞星火构建,可辅助于系统设计、表单设计、指标设计、插件设计、公式设计、公式解析、数据模拟、图表推荐 ,建议在电脑端使用,目前手机端内容可能会不稳定。
>>> 链接地址
https://xinghuo.xfyun.cn/botweb/2084440
>> 在线答题 表单字段
001 答题数量:数字
002 正确数量:数字
003 错误数量:数字
004 答题用时 ( 分 ):数字
005 智能解析:多行文本
006 试卷:子表单
01 试题序号:单行文本
02 当前试题:单行文本
03 试题选项:多行文本
04 选项数量:数字
05 当前答题:下拉复选框
06 试题答案:单行文本
07 批阅辅助:单行文本
08 批阅状态:单行文本
09 用户答题:单行文本
10 批阅结果:单行文本
11 解析辅助:多行文本
007 题库名称:单行文本
008 试题数量:数字
009 出题数量:数字
010 试题:子表单
01 试题序号:单行文本
02 当前试题:单行文本
03 试题选项:多行文本
04 试题答案:多行文本
05 内容辅助:单行文本
011 题库选项分割符:单行文本
012 试题分割符:单行文本
013 内容分割符:单行文本
014 选项分割符:单行文本
015 试题内容:单行文本
016 试题随机:下拉框
017 选项随机:下拉框
018 出题状态:单行文本
019 批阅状态:单行文本
020 解析状态:单行文本
021 开始时间:日期时间
022 结束时间:日期时间
023 批阅内容:单行文本
024 批阅结果:单行文本
025 角色定义:单行文本
026 解析内容:多行文本
>> 试题.内容辅助
JOIN(
[
试题.当前试题,
JOIN(
SPLIT(
试题.试题选项,
IF(
NOT(ISEMPTY(题库选项分割符)),
题库选项分割符,
CHAR(10)
)
),
选项分割符
),
JOIN(
SPLIT(
试题.试题答案,
IF(
NOT(ISEMPTY(题库选项分割符)),
题库选项分割符,
CHAR(10)
)
),
选项分割符
)
],
内容分割符
)
>> 试题内容
JOIN(试题.内容辅助,试题分割符)
>> 试卷.批阅辅助
JOIN(
[JOIN(
SPLIT(试卷.试题答案, ""),
选项分割符
),
JOIN(
SPLIT(试卷.用户答题, ""),
选项分割符
)],
内容分割符
)
>> 批阅内容
JOIN(试卷.批阅辅助,试题分割符)
>> 试卷.批阅结果
INDEX(
SPLIT(批阅结果, 试题分割符),
VALUE(试卷.试题序号)
)
>> 试卷.解析辅助
IFS(
试卷.批阅结果 == "错误",
JOIN(
[
CONCATENATE("试题序号:", CHAR(10), 试卷.试题序号),
CONCATENATE("试题内容:", CHAR(10), 试卷.当前试题),
CONCATENATE("试题选项:", CHAR(10), 试卷.试题选项),
CONCATENATE("试题答案:", CHAR(10), 试卷.试题答案),
CONCATENATE("用户答题:", CHAR(10), 试卷.当前答题)
],
CHAR(10)
)
)
>> 角色定义
你现在是阅卷老师,你会仅基于提供的相关试题与考生答题,进行解析,你会针对每一道试题给出考点与注意事项,你只需要回复解析部分的内容,不要回复其它任何额外的内容。
>> 解析内容
JOIN(试卷.解析辅助,CHAR(10))
> 注意事项
当前,在简道云中可将子表单视为一个独立的字段,故而在通过插件调用相关数据时,需注意是否会触发循环调用的问题,即插件的部分数据来自于子表A,插件的结果又需要直接回写到子表A中。
本场景中试题批阅结果遇到的即是此问题,最优的结果是直接回写到试卷中,尝试后发现此问题,故而最后选择先将结果回写到主表中,然后再在子表中通过公式提取相应信息。
> 更多内容
承接简道云技术咨询与应用定制
承接月度技术支持服务
更多沟通交流可添加微信(zmlnow)
添加时请备注:简道云
|