OCS-LLM_answer 是一个将大模型答题能力封装成 OCS AnswererWrapper 兼容 HTTP 服务 的 Python 项目,适用于网课/题库场景下的本地自动答题接入。
- 提供本地 HTTP 服务,默认监听
127.0.0.1:8866 - 支持
GET /search和POST /search - 支持健康检查
GET /health - 兼容 OCS 题库/AnswererWrapper 的请求格式
- 接入 OpenAI 兼容接口,大模型返回答案后自动提取选项字母或文本结果
- 支持单选、多选、判断、填空题
本项目仅依赖 Python 标准库,不需要额外安装第三方库。
jsonsysreurllib.requesturllib.errorhttp.serverurllib.parse
- Python 3.8 及以上
你可以把它作为 OCS 题库的本地服务,用来把题目转发给大模型,并返回符合 OCS 预期格式的答案结果。
在 llm_answer.py 中配置以下参数:
API_KEYBASE_URLMODEL
当前脚本采用的是 OpenAI 兼容接口。
示例:
API_KEY = "你的 API Key"
BASE_URL = "https://api.openai.com/v1"
MODEL = "gpt-4o-mini"python llm_answer.py默认端口为 8866。
也可以指定端口:
python llm_answer.py --port 9000python llm_answer.py --test进入交互式测试模式后,输入题目、选项和题型,即可直接查看返回结果。
请求示例:
http://127.0.0.1:8866/search?question=题目&options=A.xx\nB.xx&type=single
参数说明:
question:题目内容,也兼容titleoptions:选项内容,使用换行分隔type:题型,支持以下值:singlemultiplejudgementcompletion
请求体示例:
{
"question": "以下哪个是 Python 的特点?",
"options": "A. 简洁\nB. 易读\nC. 跨平台\nD. 以上都是",
"type": "single"
}返回示例:
{
"code": 1,
"question": "以下哪个是 Python 的特点?",
"answer": "D"
}用于健康检查:
{
"code": 1,
"msg": "ok"
}[
{
"contentType": "json",
"data": {
"options": {
"handler": "return (env) => env.options ? env.options.split('\\n') : []"
},
"question": "${title}",
"type": "${type}"
},
"handler": "return (res) => res.answer ? [undefined, res.answer] : [res.msg || '搜索失败', undefined]",
"homepage": "http://127.0.0.1:8866/",
"method": "post",
"name": "本地 LLM 助手",
"type": "GM_xmlhttpRequest",
"url": "http://127.0.0.1:8866/search"
}
]- 题库系统向本地服务发送题目和选项
llm_answer.py组装 prompt- 调用 OpenAI 兼容接口获取模型回复
- 从回复中提取答案
- 返回 OCS 可识别的 JSON 结果
脚本会根据题型构建不同提示词:
- 单选题:只输出一个选项字母
- 多选题:输出多个字母,按字母顺序排列
- 判断题:输出“对”或“错”
- 填空题:输出简洁答案文本
- 请确保
API_KEY、BASE_URL、MODEL已正确配置 - 服务默认只监听本机
127.0.0.1 - 大模型输出不稳定时,提取结果可能受影响
- 当前项目为本地服务,不包含前端页面