AutoCourse-DB 是为 OCS 网课助手 编写的一个本地题库程序。它在本地运行一个简单的服务器,将 OCS 与 AI 大模型(如 DeepSeek、OpenAI、Gemini 等)连接起来。
本项目既可以使用大模型自动答题并收集题目生成本地题库,也可以作为纯离线的本地题库服务供 OCS 读取。
- AI 辅助答题与入库:当本地题库中没有当前题目时,程序会调用配置好的 AI 模型获取答案,并自动将题目和答案保存到本地 JSON 文件中。
- 支持脱机查库:可以直接使用他人整理好的题库文件。在关闭 AI 功能的情况下,程序仅从本地 JSON 文件中检索并返回答案,不再消耗模型 API Token。
- 选项乱序兼容:针对平台打乱选项顺序的情况(如 ABCD 随机对应),程序会对选项的具体内容进行提取和匹配,确保选到正确的答案文字。
- 环境简单:仅使用 Python 标准库,不需要安装第三方包。
无论是普通使用者还是开发者,在使用本服务前,都需要先将本地题库接口配置到 OCS 中。 建议使用 OCS 桌面客户端配合浏览器插件:
- 打开 OCS 桌面客户端。
- 进入左侧的 软件设置,在“通用设置”中开启 OCS配置 (同步配置) 选项,点击旁边的 [点击配置]。
- 在弹出的配置窗口中选择 通用 标签页,找到“自动答题设置”并点击 [当前有x个可用题库,点击重新配置]。
- 复制
OCS题库配置.json文件的全部内容,直接粘贴到输入框中来完成导入。 - 保存配置。
配置完成后,OCS 在答题时就会自动尝试向我们在本地启动的这个题库服务器发起查题请求。
对于不需要使用 AI 自动答题收集新题目、只想直接使用整合好题库的使用者,可以直接使用准备好的运行包,完全无需配置 Python 环境。
- 直接双击运行
ocs.exe启动本地服务器。 - 程序启动后会自动扫描
libraries中的题库,请根据弹出的命令行黑框提示,输入你要做的课程对应的数字序号并回车。 - 当看到控制台打印出“🌟 社区共享题库引擎已启动”等字样,说明服务正在运行。此时直接去 OCS 客户端开启作业任务即可。
如果你要做的是一门目前还未收录的新课程,可以通过配置直接在本地用 Python 跑原始脚本,利用 AI 大模型来自动答题并帮你生成这门课的专属题库文件。
确保系统已安装 Python 3.6+ 运行环境。
使用文本编辑器打开 ocs.py,并在顶部的 “用户自定义配置区” 填好大模型的 API 信息:
# ================== 用户自定义配置区 ==================
CONFIG = {
"PORT": 8000, # 本地服务器运行端口
"DB_DIR": "libraries", # 题库文件存放目录
# 当前准备生成的新课程的名称(生成的 json 会以此命名)
"ACTIVE_COURSE": "智慧树-某某新课",
# 开启 AI 查题功能
"ENABLE_AI": True,
# 填写兼容 OpenAI 格式的 API 接口信息 (DeepSeek/GPT/Gemini/Ollama等)
"AI_API_KEY": "sk-your-api-key-here",
"AI_BASE_URL": "https://api.deepseek.com/v1/chat/completions",
"AI_MODEL": "deepseek-chat",
}
# =====================================================- 在命令行终端中,进入项目目录执行以下命令运行该脚本:
python ocs.py
- 看到服务成功启动后,在 OCS 客户端中正常进行作业任务。在此期间,遇到本地不存在的新题时,脚本会发送给 AI 解答,并自动将其写入并保存到
libraries目录下对应的 JSON 文件中。 - 课程做完后,完整的题库文件也就自动收集完毕了。欢迎通过提交 Pull Request 的方式,将收集到的 JSON 题库分享并合并到本项目中。值得注意的是,ai的回答并不总是正确,如果你想提交题库文件至本项目,请人工微调下错误的答案,保证准确率至少在较高水平。
- 请求地址:
http://localhost:<PORT>/(默认为 8000) - 请求方式:
POST - Content-Type:
application/json
发送请求数据格式:
{
"title": "这里是题目的文本内容",
"options": "A. 第一个选项\nB. 第二个选项\nC. 第三个选项",
"type": "single"
}说明:title 为题目要求文本;options 为带有选项字母前缀和换行符构成的选项文本;type 为题目类型(如 single 单选、multiple 多选、judgement 判断)。
返回响应数据格式:
{
"answer": "A. 第一个选项#C. 第三个选项"
}说明:仅返回包含 answer 的 JSON 对象。如果包含多个答案元素,将使用 # 号进行分隔。如果未开启 AI 且本地无匹配记录,通常返回 "未找到答案"。
- 本项目仅供编程学习与接口调用测试交流使用。
- 任何因不当使用本工具导致的风险,由使用者自行承担。