2.9 KiB
2.9 KiB
OCS Nuxt AI Answer Service
这是一个基于 Nuxt/Nitro 的 OCS AI 答题服务,迁移自旧版 Python Flask 服务。服务端使用 OpenAI 兼容的 Chat Completions 流式接口生成答案,对 OCS 仍返回普通 JSON。
功能
- 兼容 OCS AnswererWrapper 题库接口。
- 支持
GET、JSONPOST、表单POST调用/api/search。 - 支持单选、多选、判断、填空题提示词处理。
- 支持可选访问令牌校验。
- 支持内存缓存、健康检查、缓存清理和运行统计。
- OpenAI API Key 只在服务端读取,不返回给前端。
环境变量
复制 .env.example 为 .env,然后填写自己的配置:
cp .env.example .env
必填:
OPENAI_API_KEY=your-api-key-here
常用配置:
OPENAI_API_BASE=https://api.openai.com/v1
OPENAI_MODEL=gpt-5.2
MAX_TOKENS=500
TEMPERATURE=0.7
如需限制访问:
ACCESS_TOKEN=your-access-token
启用后,请求需要带 X-Access-Token 请求头或 ?token=... 查询参数。
启动
pnpm install
pnpm dev
默认 Nuxt dev server 地址为 http://localhost:3000。
OCS 配置示例
[
{
"name": "AI智能题库",
"homepage": "http://localhost:3000",
"url": "http://localhost:3000/api/search",
"method": "get",
"type": "GM_xmlhttpRequest",
"contentType": "json",
"data": {
"title": "${title}",
"type": "${type}",
"options": "${options}"
},
"handler": "return (res)=> res.code === 1 ? [res.question, res.answer] : [res.msg, undefined]"
}
]
如果使用自定义域名,请按 OCS 文档把 homepage 和 url 涉及的域名加入脚本 @connect。
API
GET|POST /api/search
参数:
| 参数 | 必填 | 说明 |
|---|---|---|
title |
是 | 题目内容 |
type |
否 | single、multiple、judgement、completion |
options |
否 | 选项文本 |
成功:
{
"code": 1,
"question": "中国的首都是哪个城市?",
"answer": "北京"
}
失败:
{
"code": 0,
"msg": "未提供问题内容"
}
GET /api/health
返回服务状态、版本、缓存开关和模型名。
POST /api/cache/clear
清空内存缓存。若配置了 ACCESS_TOKEN,需要携带访问令牌。
GET /api/stats
返回 uptime、模型、缓存大小和最近问答记录数量。若配置了 ACCESS_TOKEN,需要携带访问令牌。
注意
- 多选题答案按 OCS 要求返回
#分隔字符串。 - OpenAI 调用使用服务端流式请求,但接口对 OCS 返回普通 JSON。
- 内部或上游异常不会透传给 OCS,只返回本地错误文案。