AI大模型考试题库怎么整理?用Ollama本地生成与校验
自建AI大模型考试题库,最直接的做法是在本地服务器部署一个可调用的模型,用脚本批量生成选择题和简答题,再把返回结果校验后导出成表格。
本文以Ollama为例,在Linux服务器上完成从安装到生成题库的流程,适合需要为培训或课程准备题目的运维和教学人员。
先确认模型部署条件
Ollama对硬件要求不高,普通4核8G的云服务器就能跑7B参数以下的模型,但生成速度会偏慢。
建议准备:
- 一台Linux服务器(Ubuntu 22.04或Debian 11以上),已安装curl和jq。
- 至少8GB内存,若用7B模型建议16GB。
- 磁盘预留10GB以上用于存放模型文件。
- 服务器能访问外网,用于拉取模型。
如果服务器内存不足,模型加载会失败并提示OOM,这时需要换小参数模型或增加swap。
安装Ollama并拉取模型
用官方脚本安装,然后启动服务:
curl -fsSL https://ollama.com/install.sh | sh
systemctl enable --now ollama
systemctl status ollama
确认服务运行后,拉取一个适合中文出题的模型,例如qwen2:7b:
ollama pull qwen2:7b
ollama list
ollama list能看到模型名称和大小即表示拉取成功。
如果拉取超时,检查服务器DNS和出站443端口。
设计出题提示词并调用API
Ollama默认在127.0.0.1:11434提供API。
用curl测试一次生成:
curl http://127.0.0.1:11434/api/generate -d '{
"model": "qwen2:7b",
"prompt": "请生成5道关于Linux文件权限的选择题,每题4个选项,给出正确答案和解析,用JSON数组输出,字段为question、options、answer、explanation。",
"stream": false
}'
返回结果在response字段里。
实际使用时,把提示词写入脚本循环调用,每次生成一批,避免单次请求过长导致超时。
建议在提示词中明确“只输出JSON,不要额外文字”,减少解析失败。
校验格式并导出题库
模型返回的JSON可能带Markdown代码块标记,直接解析会报错。
用jq提取并清洗:
curl -s http://127.0.0.1:11434/api/generate -d @payload.json | jq -r '.response' | sed 's/```json//g; s/```//g' > batch.json
jq length batch.json
如果jq length报错,说明输出不是合法JSON,需要调整提示词或降低temperature参数(在请求中加"options":{"temperature":0.2})。
校验通过后,用jq转成CSV:
jq -r '.[] | [.question, (.options|join("|")), .answer, .explanation] | @csv' batch.json > bank.csv
注意:AI生成的题目可能存在答案错误或重复,导出后必须人工抽查,尤其是计算类和概念易混淆的题目。
常见问题与避坑
- API返回空或超时:检查
systemctl status ollama,确认模型已加载;长提示词可拆分批次。 - JSON解析失败:在提示词末尾强调“不要输出解释性文字”,并在脚本中加清洗步骤。
- 题目重复率高:在提示词中指定不同知识点范围,或生成后按question字段去重。
- 内存不足:换用更小模型(如qwen2:1.5b)或增加swap,不要强行加载大模型。
验证题库可用性
完成导出后,打开CSV检查字段是否完整,随机抽取10道题核对答案。
如果正确率低于预期,回到提示词调整,例如要求模型“先给出答案再解释”,或限定题目难度。
整个流程在本地完成,题目数据不出服务器,适合内部培训场景。