SubQuiz Docs
SubQuiz功能概述
有关学科、备课组、知识点、题目类型、题目、测试、用户、权限、推荐、判卷等功能的详细说明已在SubQuiz 部署文档中介绍。在此不再赘述。建议在阅读SubQuiz 部署文档阅读该文档。
以下是SubQuiz中部署文档未涉及的部分的简要介绍。
AI答疑相关功能
附带题目上下文
如果想要将题库中的某道题目附带给AI,仅需在对应的题目右下角,点击「AI」图标,就可将题目附带给AI,无需再描述题目。
工具调用
AI答疑的多数功能都依赖工具调用实现,因此在选择模型的时候尽可能选择支持工具调用的模型。对于不支持工具调用的模型,见非工具调用模型支持。
在SubQuiz中,将工具分为工具组,每个工具组中包含多个工具。 工具组中的工具可以根据上下文或模型特性选择性开启或关闭。同时整个工具组也可以选择性开启或关闭。
以下是SubQuiz中现有的15个工具组的介绍。
工具组:知识库搜索
该工具组主要为基于RAG的知识库搜索工具。目前该工具组下包括4个工具:
- 搜索北大附中资料:所有置于北大附中知识库文件夹下的markdown文件会进行索引组成知识库,该工具基于传统的向量数据库进行搜索,再重排序后返回给AI。
- 搜索教科书:教科书每一页会分别保存为图片并识别文字,文字经由RAG,供模型搜索读取。将返回搜索的页码和搜索结果。
- 读取教科书:考虑到教科书中一个长的文章等,可能横跨数页,因此
搜索教科书往往难以获得完整内容。再加之有读取指定页码的需求,因此提供一个读取教科书的工具。该工具可指定教材和页码,读取指定页码的教科书内容。以便在搜索教科书大致定位后,允许模型进一步查阅前后页码。或通过指定的页码读取内容。 - 搜索用户提供的资料:用户可以上传自己的资料,这些资料会进行索引,供AI搜索。
该工具组会要求模型添加对应的教科书页码、北大附中资料或用户资料的tool data标识。同时该工具组将注册名为user、lib、book的tool 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标识。同时该工具组将注册名为web的tool 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,对内容的合规性进行判断。若不合规,将中止回答,并撤回已经输出的全部内容。
