Skip to content

linshaona/OCS-LLM_answer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

OCS-LLM_answer

OCS-LLM_answer 是一个将大模型答题能力封装成 OCS AnswererWrapper 兼容 HTTP 服务 的 Python 项目,适用于网课/题库场景下的本地自动答题接入。

功能

  • 提供本地 HTTP 服务,默认监听 127.0.0.1:8866
  • 支持 GET /searchPOST /search
  • 支持健康检查 GET /health
  • 兼容 OCS 题库/AnswererWrapper 的请求格式
  • 接入 OpenAI 兼容接口,大模型返回答案后自动提取选项字母或文本结果
  • 支持单选、多选、判断、填空题

依赖说明

本项目仅依赖 Python 标准库,不需要额外安装第三方库。

标准库依赖

  • json
  • sys
  • re
  • urllib.request
  • urllib.error
  • http.server
  • urllib.parse

运行环境

  • Python 3.8 及以上

使用场景

你可以把它作为 OCS 题库的本地服务,用来把题目转发给大模型,并返回符合 OCS 预期格式的答案结果。

快速开始

1. 配置大模型接口

llm_answer.py 中配置以下参数:

  • API_KEY
  • BASE_URL
  • MODEL

当前脚本采用的是 OpenAI 兼容接口

示例:

API_KEY = "你的 API Key"
BASE_URL = "https://api.openai.com/v1"
MODEL = "gpt-4o-mini"

2. 启动服务

python llm_answer.py

默认端口为 8866

也可以指定端口:

python llm_answer.py --port 9000

3. 命令行测试

python llm_answer.py --test

进入交互式测试模式后,输入题目、选项和题型,即可直接查看返回结果。

接口说明

GET /search

请求示例:

http://127.0.0.1:8866/search?question=题目&options=A.xx\nB.xx&type=single

参数说明:

  • question:题目内容,也兼容 title
  • options:选项内容,使用换行分隔
  • type:题型,支持以下值:
    • single
    • multiple
    • judgement
    • completion

POST /search

请求体示例:

{
  "question": "以下哪个是 Python 的特点?",
  "options": "A. 简洁\nB. 易读\nC. 跨平台\nD. 以上都是",
  "type": "single"
}

返回示例:

{
  "code": 1,
  "question": "以下哪个是 Python 的特点?",
  "answer": "D"
}

GET /health

用于健康检查:

{
  "code": 1,
  "msg": "ok"
}

OCS 题库配置示例

[
  {
    "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"
  }
]

工作原理

  1. 题库系统向本地服务发送题目和选项
  2. llm_answer.py 组装 prompt
  3. 调用 OpenAI 兼容接口获取模型回复
  4. 从回复中提取答案
  5. 返回 OCS 可识别的 JSON 结果

答题规则

脚本会根据题型构建不同提示词:

  • 单选题:只输出一个选项字母
  • 多选题:输出多个字母,按字母顺序排列
  • 判断题:输出“对”或“错”
  • 填空题:输出简洁答案文本

注意事项

  • 请确保 API_KEYBASE_URLMODEL 已正确配置
  • 服务默认只监听本机 127.0.0.1
  • 大模型输出不稳定时,提取结果可能受影响
  • 当前项目为本地服务,不包含前端页面

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages