测验大师

:information_source: 摘要 一个主题组件,可将与 AI 机器人的私信转化为互动问答体验。
:hammer_and_wrench: 代码仓库 GitHub - VaperinaDEV/discourse-quizmaster: A theme component that transforms private messages with an AI bot into an interactive quiz experience. · GitHub
:question: 安装指南 如何安装主题或主题组件
:open_book: 初次接触 Discourse 主题? Discourse 主题使用入门指南

安装此主题组件

互动问答主题组件

你好 :waving_hand:
我创建了一个主题组件,可将与 AI 机器人的私信转化为互动问答体验。该组件自动格式化问答题目、处理答案提交、跟踪进度,并通过便捷的下拉菜单管理问答完成,方便快速启动问答。

功能特性

1. 头部下拉菜单问答启动器

网站头部提供了一个可自定义的下拉按钮,可快速访问不同类型的问答:

  • 通过主题设置中的对象模式进行完全配置
  • 支持多语言,通过 i18n 集成标签、描述和消息
  • 每个问答难度级别可自定义图标
  • 默认选项包括:简单、普通、困难和混合难度问答
  • 每个选项会向 AI 机器人发送预配置的消息以启动问答

2. 自动问答题目格式化

该组件可检测并格式化 AI 机器人帖子中的多项选择题。当机器人发布以“A)”、“B)”等开头的列表时,这些选项会自动转换为可点击的问答选项,并应用自定义样式。

3. 一键提交答案

用户可直接点击答案选项(A、B、C、D)提交回答。该组件:

  • 通过加载状态防止重复提交
  • 自动回复到正确的帖子
  • 统一格式化答案(例如:“我的答案:A) 选项文本”)
  • 提供带用户反馈的错误处理

4. 题目计数器

每个问答题目上会显示进度指示器,包括:

  • 当前题目编号与最大允许数量
  • 可自定义的最大题目数(默认为 50)
  • 仅在 AI 机器人的帖子上显示

5. 自动问答终止

该组件包含智能问答管理功能:

  • 里程碑检查点:每 10 题(在第 11、21、31 题等之后)显示“终止问答”按钮
  • 强制上限:达到最大题目数时自动发送终止消息
  • 防止重复:跟踪终止状态以防止多次发布终止消息
  • 验证检查:确保仅在适当时执行终止

6. UI 修改

在问答对话中:

  • 移除机器人帖子中的 AI 重试/分享按钮(非管理员)
  • 移除私信中机器人帖子的回复按钮
  • 防止问答创建者删除自己的帖子(保留问答历史)
  • 添加自定义 CSS 类 is-quiz-chat 用于样式设置

配置

该组件使用以下主题设置:

# 问答行为设置
quizmaster_username: "YourBotUsername"  # AI 机器人的用户名
show_for_groups: ""                     # 头部下拉菜单显示的用户组
quiz_max_questions: 50                  # 自动终止前的最大题目数

# 头部按钮设置
button_icon: "question-circle"          # 主问答按钮的图标

# 下拉问答选项(对象模式)最多 4 项
dropdown_items:
  type: objects
  default: 
    - label_template: quiz_easy_label
      description_template: quiz_easy_description
      icon: star
      message_template: quizmaster_input_easy
    - label_template: quiz_normal_label
      description_template: quiz_normal_description
      icon: star-half-alt
      message_template: quizmaster_input_normal
    - label_template: quiz_hard_label
      description_template: quiz_hard_description
      icon: certificate
      message_template: quizmaster_input_hard
    - label_template: quiz_mixed_label
      description_template: quiz_mixed_description
      icon: random
      message_template: quizmaster_input_mixed
  schema:
    properties:
      label_template:
        type: string
      description_template:
        type: string
      icon:
        type: string
      message_template:
        type: string
svg_icons:
  default: "far-star-half"
  type: list
  list_type: "compact"
  description: "此主题组件中使用的 FontAwesome 6 图标列表"

翻译键

将以下内容添加到主题的本地化文件中以支持完整的 i18n:

英文 (en.yml)

en:
  js:
    # 头部按钮
    quiz: "Quiz"
    
    # 下拉标签
    quiz_easy_label: "Easy Quiz"
    quiz_normal_label: "Normal Quiz"
    quiz_hard_label: "Hard Quiz"
    quiz_mixed_label: "Mixed Quiz"
    
    # 下拉描述
    quiz_easy_description: "Basic questions for beginners"
    quiz_normal_description: "Average difficulty questions"
    quiz_hard_description: "Advanced level challenge"
    quiz_mixed_description: "Random difficulty questions"
    
    # 消息模板
    quizmaster_input_easy: "Give me an easy quiz question"
    quizmaster_input_normal: "Give me a normal difficulty quiz question"
    quizmaster_input_hard: "Give me a hard quiz question"
    quizmaster_input_mixed: "Give me a mixed difficulty quiz question"
    
    # 问答交互
    my_answer: "My answer to the question is:"
    terminate_quiz: "Thanks for the game, I'd like a summary!"
    max_questions_text: "questions (or until my source runs dry). Every 10, you choose: stay or venture on."

使用场景

此组件非常适合:

  • 带有 AI 导师的教育问答
  • 培训评估
  • 知识测试
  • 互动学习体验
  • 游戏化内容交付
  • 语言学习应用
  • 认证备考课程

该组件自动处理状态跟踪、错误预防和问答生命周期管理的所有复杂性,为问答创建者和参与者提供流畅的体验。头部下拉菜单使用户能够极其轻松地启动问答。

自定义

管理员可以通过以下方式轻松自定义问答体验:

  • 在本地化文件中修改问答难度标签和描述
  • 添加新的语言翻译
  • 更改不同问答类型的图标
  • 调整发送给 AI 机器人的消息模板
  • 配置哪些用户组可以看到头部按钮
  • 设置最大题目限制

所有自定义操作均可通过管理界面完成,无需触碰任何代码。

AI 系统提示词

该组件通过检测简单的列表格式与 AI 机器人无缝协作。以下是为您的神秘 AI 机器人提供的系统提示词示例(可根据需要自定义):

你是一位严格但公正的神秘问答大师。以权威但乐于助人的方式发言,就像一位现代巫师。使用一些与魔法相关的短语(例如“让我们看看你知识的迷雾中隐藏着什么……”),但请坚持技术事实。

### 问答难度级别(模式)
用户将通过指定难度级别来启动对话。请使用以下指南来校准问题的深度:

1. **简单:**
   [在此处填写你的简单模式标准]
   
2. **普通:**
   [在此处填写你的普通模式标准]
   
3. **困难:**
   [在此处填写你的困难模式标准]
   
4. **混合:** 为每个问题随机选择一个难度和一个类别。

---

### 动态响应逻辑

**指令:** 对于每个新问题,选择一个与前 5 个问题不同的类别(A-E)。

- **多样性规则:** 在同一会话中,绝不重复问题或其主题。
- **升级建议:** 每达到 10 题的里程碑后,如果用户在简单或普通难度上的成功率达到 100%,请在评估块中建议升级到下一级别。

### 核心规则:

1. **连续流程:** 评估答案后,立即在**同一消息**中提供下一个问题。
2. **终止游戏:**
    * 如果用户写道:“谢谢游戏,我想要一个总结!”,请立即停止。
    * 仅根据已回答的问题提供最终评估。
    * 提供最终得分和神秘的告别语。
3. **单一输出:** **关键:评估、当前得分和下一个问题仅出现一次。不要在同一个响应中重复问题或选项列表。**

### 响应结构与格式(强制):

> [正确/错误表情符号] **[对上一个答案的简要解释。]**

*当前得分:[X] 分*

---

### [下一个问题文本在此处]

* A) [选项 A 文本]
* B) [选项 B 文本]
* C) [选项 C 文本]
* D) [选项 D 文本]

---

### 自动化规则(供 AI 使用):

- **无包装标签:** 不要使用 `[wrap]` 标签或任何特殊的 Discourse 语法来创建按钮。
- **严格列表格式:** 你必须按照上述示例,将四个选项作为简单的无序列表提供,以“A)”、“B)”、“C)”和“D)”开头。
- **系统集成:** 外部系统将自动检测你的 A-D 列表并将其转换为交互式按钮。请勿自行尝试为按钮设置样式。

### 限制:

- **语言一致性:** 始终使用用户使用的语言进行回复。
- 解释必须放在块引用(>)内。

注意: 我们最初尝试使用 [wrap] 标签来创建按钮,但 AI 有时会遗漏闭合的 ],导致功能失效。简单的无序列表格式(* A)* B) 等)更加可靠,AI 几乎不可能出错。主题组件会自动检测此格式并将其转换为交互式按钮。


我非常想听听你的使用案例。请分享!

10 个赞