文章

SubQuiz Docs

SubQuiz Docs

SubQuiz功能概述

有关学科、备课组、知识点、题目类型、题目、测试、用户、权限、推荐、判卷等功能的详细说明已在SubQuiz 部署文档中介绍。在此不再赘述。建议在阅读SubQuiz 部署文档阅读该文档。

以下是SubQuiz中部署文档未涉及的部分的简要介绍。

AI答疑相关功能

附带题目上下文

如果想要将题库中的某道题目附带给AI,仅需在对应的题目右下角,点击「AI」图标,就可将题目附带给AI,无需再描述题目。

工具调用

AI答疑的多数功能都依赖工具调用实现,因此在选择模型的时候尽可能选择支持工具调用的模型。对于不支持工具调用的模型,见非工具调用模型支持

在SubQuiz中,将工具分为工具组,每个工具组中包含多个工具。 工具组中的工具可以根据上下文或模型特性选择性开启或关闭。同时整个工具组也可以选择性开启或关闭。

以下是SubQuiz中现有的15个工具组的介绍。

工具组:知识库搜索

该工具组主要为基于RAG的知识库搜索工具。目前该工具组下包括4个工具:

  • 搜索北大附中资料:所有置于北大附中知识库文件夹下的markdown文件会进行索引组成知识库,该工具基于传统的向量数据库进行搜索,再重排序后返回给AI。
  • 搜索教科书:教科书每一页会分别保存为图片并识别文字,文字经由RAG,供模型搜索读取。将返回搜索的页码和搜索结果。
  • 读取教科书:考虑到教科书中一个长的文章等,可能横跨数页,因此搜索教科书往往难以获得完整内容。再加之有读取指定页码的需求,因此提供一个读取教科书的工具。该工具可指定教材和页码,读取指定页码的教科书内容。以便在搜索教科书大致定位后,允许模型进一步查阅前后页码。或通过指定的页码读取内容。
  • 搜索用户提供的资料:用户可以上传自己的资料,这些资料会进行索引,供AI搜索。

该工具组会要求模型添加对应的教科书页码、北大附中资料或用户资料的tool data标识。同时该工具组将注册名为userlibbooktool data。 另见信息来源标识

工具组:CodeRunner

该工具组主要功能是提供一个docker环境给大模型,允许大模型通过工具调用的方式控制docker。

该工具组主要包括3个工具:

  • 运行代码:传入一段python代码,执行,并返回执行结果。
  • 执行命令:传入一个命令,将在bash中执行,并返回执行结果。
  • 上传文件:制定一个docker中的路径,上传给用户。

该工具组目前的功能主要在于,一方面在解数学题时,提供python运行环境,辅助解题。另一方面,该工具组提供了沙盒环境,可以让大模型实现简单的项目开发和测试。

工具组:GetUserInfo

仅提供一个工具,用于获得用户的ID、昵称、实名、学号/工号等信息。

工具组:GlobalMemory

仅提供一个工具,调用该工具可以写入全局记忆,全局记忆将作为系统提示词的一部分给大模型。实现跨对话的记忆。

工具组:ImageGeneration

仅提供一个工具,调用该工具可以生成图片。会根据是否提供图片分别调用T2I、I2I模型。

工具组:Math

该工具组提供了两个工具。

  • 绘制函数图像:传入一个函数/方程,像用户展示函数图像。
  • 学习绘制函数图像,该工具无参数,调用后会返回关于绘制函数图像的使用方法描述。会强制模型先于绘制函数图像调用该工具,以确保模型能够正确使用该工具。该工具设计逻辑见用工具调用优化提示词强制工具调用相对顺序

工具组:MCP

该工具组提供任意多个工具(可能是0个),取决于配置文件。可在配置文件中配置MCP服务器,支持SSE、STDIO、WEBSOCKET。该工具组将这些MCP服务器转为工具提供给大模型。

工具组:MindMap

该工具组提供一个工具,调用该工具接受一个markdown格式的文本,生成思维导图呈现给用户。

工具组:PPT

该工具组提供3个工具:

  • 创建PPT:传入一个ppt的名称,将返回新创建的ppt的id,用于后续操作。同时返回制作ppt的提示词,引导模型制作ppt(见用工具调用优化提示词)。
  • 添加页面:传入一个ppt的id、页码、html内容,将html内容添加到指定页码。
  • 打包PPT:传入一个ppt的id,打包PPT文件,供用户下载。

工具组:Quiz

提供一个工具,用于在题库中搜索题目。

工具组:ReadImage

提供一个工具,该工具仅在当前模型视觉支持时启用。

该工具允许模型传入一个图片/PDF文件的url(也支持传入CodeRunner工具组中的docker中的文件路径,及系统内的其他文件引用格式),以及一段提示词。将把图片/PDF文件和提示词给VLM,将VLM的返回内容给到模型。该工具旨在让无视觉支持的模型能够读取图片/PDF文件。

工具组:ShowHtml

两个工具,分别支持传入一段svg或html,将html或svg展示给用户。

工具组:ShowQuestion

提供一个工具,大模型可以调用该工具出题,将题目展示给用户。

工具组:VideoGeneration

提供一个工具,调用该工具可以生成视频。会根据是否提供图片,分别调用T2V、I2V模型。

工具组:WebSearch

提供3个工具:

  • 搜索:传入一个关键词,返回搜索结果。
  • 读取网页:传入一个url,返回网页内容。
  • 爬取网页:传入一个base url,在base url下递归的爬取网页内容。

该工具会要求模型添加对应的网页url的tool data标识。同时该工具组将注册名为webtool data。另见信息来源标识

信息来源标识

当模型调用信息获得类的工具时,工具会要求模型添加信息来源标识。模型将在回答中用特定格式引用信息来源。这些标识将被渲染,并允许用户点击查看信息来源。

具体表现为,模型在基于信息回答时,回答后会添加对应的角标。形如:

兼容性措施

非工具调用模型支持

SubQuiz答疑中大量功能基于工具调用,因此不支持工具调用是致命的。

对于非工具调用模型支持,在SubQuiz中,将通过提示词,引导模型在需要工具调用时,输出:

0
1
2
3
4
5
6
<|tool_call|>
<|tool_name|> xxxxx <|tool_name|>
<|tool_args|>
{
  ....
}
<|tool_args|>

这种特殊输出格式的内容将被SubQuiz识别为工具调用。工具调用返回结果将以role为user的message返回。这是一种勉强的非工具调用模型支持方式。一般情况下,尽可能不要使用这种方式。模型未在训练中训练工具调用能力,即使添加了提示词引导他调用工具,仍然不能很好的在需要时调用工具,对于交叉思考更是无能为力。

非视觉模型支持

若模型支持视觉,图片将直接给到模型。若模型不支持视觉:

  • 对于附带的题目中的图片,将由VLM描述后给模型。
  • 对于用户上传的图片和PDF,将通过ReadImage工具组,运行模型让vlm描述图片。

对于有时间能力的模型,pdf将逐页截图,作为图片传递给模型。

内容审查

为保证内容的正确,同时避免大模型的回答涉及政治、宗教、色情、暴力等敏感话题,SubQuiz将对大模型的回答进行审查。具体审查逻辑为,边输出边审查,当输出没满400字后请求一次小的llm,对内容的合规性进行判断。若不合规,将中止回答,并撤回已经输出的全部内容。

本文由作者按照 CC BY-NC 4.0 进行授权, 未经许可不得转载。