用Ollama搭建AI大模型模拟考试环境:从部署到自动判分
想用AI大模型做模拟考试,最直接的方式是在自己的服务器上运行一个本地模型,通过API生成题目、接收答案并判分。
这样数据不出内网,也方便反复练习。
本文以Ollama为例,在Ubuntu 22.04上完成部署和调用,适合零基础用户跟着操作。
先确认服务器条件和模型选择
Ollama支持Linux、macOS和Windows。
模拟考试对响应速度要求不高,普通CPU服务器也能跑小参数模型,但生成速度会慢一些。
建议准备:
- 系统:Ubuntu 20.04及以上,已安装
curl和systemd - 内存:至少8GB,运行7B参数模型建议16GB以上
- 磁盘:预留10GB以上空间存放模型
- 网络:能访问模型下载源,或者提前下载模型文件
模型选择上,qwen2:7b或llama3.1:8b对中文支持较好,适合出题和判分。
如果服务器配置较低,可以先用qwen2:1.5b测试流程。
安装Ollama并拉取模型
用官方脚本安装,执行后会自动注册为系统服务:
curl -fsSL https://ollama.com/install.sh | sh
安装完成后检查服务状态:
systemctl status ollama
看到active (running)即表示服务已启动。
接着拉取模型:
ollama pull qwen2:7b
拉取时间取决于网络和磁盘速度。
完成后用ollama list确认模型存在。
通过API生成试题和判分
Ollama默认监听127.0.0.1:11434。
如果模拟考试程序也在同一台机器,直接调用本地地址即可;
如果要从其他机器访问,需要修改服务配置。
先测试生成一道题:
curl http://127.0.0.1:11434/api/generate -d '{
"model": "qwen2:7b",
"prompt": "生成一道关于Linux文件权限的选择题,包含题干、四个选项和正确答案,用JSON格式输出。",
"stream": false
}'
返回的response字段就是模型输出。
判分时,把题目和用户答案一起发给模型,要求它只返回“正确”或“错误”并给出简短理由。
为了减少格式错误,可以在prompt中明确要求纯文本输出,不要Markdown。
如果要从外部访问,编辑服务配置:
sudo systemctl edit ollama
在打开的文件中加入:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
保存后重启服务:sudo systemctl restart ollama。
注意开放端口后要配置防火墙,只允许可信IP访问,避免模型被滥用。
容易踩的坑和对应处理
- 模型输出格式不稳定:判分时模型可能返回多余解释。在prompt里限定“只输出一个词:正确或错误”,并在代码里做字符串匹配兜底。
- 响应超时:7B模型在CPU上生成一道题可能需要几十秒。调用API时把超时时间设长,或者换更小的模型。
- 端口无法访问:先检查
OLLAMA_HOST是否生效,再检查防火墙规则。用ss -tlnp | grep 11434确认监听地址。 - 模型幻觉导致判分偏差:模拟考试用于练习可以接受,但不建议把自动判分结果作为正式成绩。重要考试应保留人工复核。
验证模拟考试流程是否可用
完成配置后,按以下顺序验证:
- 用
curl调用生成接口,确认能返回题目文本。 - 构造一个包含题目和用户答案的请求,确认判分接口返回“正确”或“错误”。
- 连续调用3次,观察响应时间是否稳定,模型输出是否都在预期格式内。
- 从另一台机器访问
http://服务器IP:11434,确认网络策略符合预期。
如果以上步骤都通过,就可以把API接入你的考试页面或脚本。
建议在正式使用前,用20道已知答案的题目做一次批量测试,统计判分准确率,再决定是否用于实际练习。
模拟考试的核心是让练习过程可重复、可检查。
Ollama方案部署简单,适合内网小规模使用;
如果并发较高,需要评估服务器资源或考虑专用推理服务。