AI试题生成配置:从零搭建可用的题目自动生成服务

想用 AI 自动生成试题,核心是把模型接口、提示词和输出解析三部分配置好。
本文以 Python 调用 OpenAI 兼容接口为例,带你从零完成一套可运行的 AI 试题生成配置,默认你有一台能上网的 Linux 或 Windows 电脑,并已注册可用的模型服务账号。

先确认运行环境和依赖

这套配置对系统要求不高,但需要 Python 3.8 以上版本。
打开终端或命令提示符,执行 python --version 确认版本。
如果低于 3.8,建议先升级。
接着安装 OpenAI 官方 SDK:

pip install openai

安装完成后,用 pip show openai 查看版本,确保没有报错。
如果你使用的是其他兼容 OpenAI 接口的服务(如国内中转或自建模型),同样可以用这个 SDK,只需在代码中替换 base_url。

配置密钥和接口地址

不要把 API 密钥直接写在代码里。
推荐用环境变量管理。
Linux/macOS 下在 ~/.bashrc 或 ~/.zshrc 末尾添加:

export OPENAI_API_KEY="你的密钥"
export OPENAI_BASE_URL="https://api.openai.com/v1"

Windows 用户可在系统环境变量中新建同名变量。
保存后重新打开终端,用 echo $OPENAI_API_KEY 检查是否生效。
如果你用的是第三方兼容服务,把 OPENAI_BASE_URL 改成服务商提供的地址,注意末尾不要多写斜杠。

编写试题生成脚本

新建文件 generate_quiz.py,填入以下代码。
这段脚本会调用模型生成 5 道单选题,并解析成 JSON 格式输出:

import os, json
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("OPENAI_API_KEY"),
    base_url=os.getenv("OPENAI_BASE_URL")
)

prompt = """请生成5道关于Python基础语法的单选题,以JSON数组返回,每个对象包含question、options(4个选项的数组)、answer(正确选项的索引,从0开始)。只输出JSON,不要额外解释。"""

resp = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": prompt}],
    temperature=0.7
)

content = resp.choices[0].message.content
print(content)

保存后运行 python generate_quiz.py。
如果一切正常,终端会打印一段 JSON 数组。注意:模型名 gpt-4o-mini 需替换为你实际可用的模型,不确定时查看服务商文档。

调整提示词让题目更符合要求

默认提示词只说了“Python基础语法”,实际使用时需要按学科、难度、题型定制。
把 prompt 变量改成类似下面的结构:

请生成3道关于【初中数学一元一次方程】的单选题,难度为中等,以JSON数组返回,每个对象包含question、options(4个选项)、answer(正确选项索引,从0开始)。只输出JSON。

如果模型返回了多余的解释文字,可以在提示词末尾加上“不要输出任何非JSON内容”,并设置 temperature=0.3 降低随机性。
对于需要固定答案顺序的场景,还可以在提示词中要求“正确答案随机分布在四个选项中”。

常见报错和避坑提醒

  • 报错 AuthenticationError:检查 OPENAI_API_KEY 是否设置正确,环境变量是否在同一个终端会话中生效。
  • 报错 ConnectionError 或超时:确认 OPENAI_BASE_URL 可访问,服务器网络是否放行 443 端口。国内服务器可能需要配置代理,或者换用国内可直连的兼容服务。
  • 返回内容不是 JSON:模型偶尔会输出 Markdown 代码块,解析前先用字符串替换去掉 `json 和 ` 标记,再用 json.loads 转换。
  • 生成题目重复或太简单:适当增加提示词中的约束,比如“避免重复考察同一知识点”“至少包含一道应用题”。

验证生成结果是否可用

运行脚本后,不要只看打印内容。
把输出保存到文件,用下面的代码检查 JSON 结构是否完整:

import json
data = json.loads(content)
assert isinstance(data, list) and len(data) > 0
for item in data:
    assert "question" in item and "options" in item and "answer" in item
    assert len(item["options"]) == 4
    assert 0 <= item["answer"] <= 3
print("校验通过,共生成", len(data), "道题")

如果校验失败,根据报错信息调整提示词或解析逻辑。
建议先用少量题目测试,确认稳定后再批量生成。

关于模型选择和成本

不同模型生成题目的质量和速度差异较大,配置时优先选择支持 JSON 模式或函数调用的模型,可以减少解析失败。
费用按 token 计费,生成 5 道题通常消耗几百 token,具体单价以服务商当前价格为准。
如果只是测试,先用免费额度或低价模型跑通流程,再决定是否升级。

完成以上步骤后,你就拥有了一套可重复使用的 AI 试题生成配置。
后续只需修改提示词中的学科、题型和数量,就能快速产出不同试卷。
遇到异常时,优先检查密钥、网络和返回内容格式这三项。

分享到:
上一篇
AI教案生成配置:从零搭建可用的自动备课流程
下一篇
零基础 AI 学习路径规划:从环境搭建到模型运行的完整步骤
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意