【AI+教学】让课堂实时讲解语音知识库沉淀下来

今天给大家分享一个教学的 AI 使用场景,主要用来解决课堂老师实时讲解的内容如何让学生快速了解学习。

一、教学场景说明:

课堂上老师上完课后,课堂实时讲解的内容,部分与教材或者课件有偏差(临场发挥),希望通过AI小助手将这部分知识沉淀总结下来。方便学生了解回顾。

二、AI 流程设计说明:

该 AI 小助手同时被老师和学生使用,然后进入小助手之后先选择

三、使用的 AI 应用平台

MaxKB:强大易用的企业级 AI 助手(开源)

更多信息:https://maxkb.cn/

四、涉及模型及组件

4.1大语言模型:

本次使用的是阿里云百炼大语言模型,实现 AI 问答;对接说明参见:https://maxkb.cn/docs/user_manual/model/bailian_model/

4.2语音识别模型

阿里云百炼语音识别模型,实现语音转文本;

对接说明:https://maxkb.cn/docs/user_manual/model/bailian_model/

4.3文档内容提取

实现将文档内容提取文本信息,详细操作说明参见:https://maxkb.cn/docs/user_manual/app/workflow_app/#112

4.4语音转文本

将音频文件通过模型转换为文本文件。具体操作说明参见:https://maxkb.cn/docs/user_manual/app/workflow_app/#113

4.5文档生成函数:

负责将语音识别到的文本和文档内容提取到的文本信息转换成word 文档。

详细函数代码如下所示:

复制代码
import requests

def convert_markdown_to_word(markdown_text):
    """
    发送 Markdown 文本到指定的 API,并获取生成的 Word 文件的下载链接

    :param markdown_text: Markdown 格式的文本
    :param api_url: API 的 URL
    :return: Word 文件的下载链接
    """
    # pandoc-api 部署 pandoc-api 的服务器的URL地址
    api_url = "http://ip:5000/convert"
    # 构造请求数据
    data = {
        "markdown": markdown_text
    }

    # 发送 POST 请求
    response = requests.post(api_url, json=data)

    # 检查响应状态
    if response.status_code == 200:
        # 解析 JSON 响应
        response_data = response.json()
        if 'download_url' in response_data:
            # 返回下载链接
            return response_data['download_url']
        else:
            return "Error: 'download_url' not found in the response"
    else:
        # 返回错误信息
        return f"Error: {response.status_code}, {response.text}"

其中将markdown_test设置成输入参数,具体参见如下:

4.6知识库导入 API 调用函数:

将文档生成函数生成word文档通过Python函数调用 API 接口导入到MaxKB的知识库中。

详细函数代码如下所示:

复制代码
import requests
import json
def main(user_key,dataset_id,file_name,audio_name):

    # 使用字符串的 split 方法截取 /download/ 后面的内容
    file_name = file_name.split("/download/")[1]

    # 定义下载链接(文档生产函数中的文档上传地址)和目标路径
    url = "http://IP:5000/download/"+file_name
    maxkb_filename = audio_name[0].get('name')+"-"+file_name;
    # 从pan-doc下载的文件,重新命名为录音文件的原名
    target_path = "/opt/maxkb/app/sandbox/python-packages/"+ maxkb_filename
    
    try:
        # 发送 GET 请求下载文件
        response = requests.get(url)
        response.raise_for_status()  # 检查请求是否成功
    
        # 将文件内容写入目标路径
        with open(target_path, "wb") as file:
            file.write(response.content)
        print(f"文件已成功下载到 {target_path}")
    except requests.exceptions.RequestException as e:
        print(f"下载失败:{e}")
        print("请检查链接的合法性或网络连接,并稍后重试。")
        
    # 目标 MaxKB URL访问地址
    url = "https://域名/api/dataset/document/split"
    
    # 请求头
    headers = {
        "accept": "application/json",
        "AUTHORIZATION": user_key
    }
    
    # 要上传的文件
    files = {
        "file": (maxkb_filename, open(target_path, "rb"), "text/plain")
    }
    
    # 发送 POST 请求
    response = requests.post(url, headers=headers, files=files)
    
    # 打印响应内容
    print("Response Status Code:", response.status_code)
    print("Response Content:", response.json())
    
    #根据指定知识库id,开始创建分段
    # 目标 MaxKB URL访问地址
    url = "https://域名/api/dataset/"+dataset_id+"/document/_bach"
    
    # 请求头
    headers = {
        "accept": "application/json",
        "AUTHORIZATION": user_key,
        "Content-Type": "application/json"
    }


    # 请求数据
    data = response.json().get("data")
    # 将第一个content重命名为paragraphs
    data[0]["paragraphs"] = data[0].pop("content")  
    
    # 发送 POST 请求
    response = requests.post(url, headers=headers, data=json.dumps(data))
    
    # 打印响应内容
    print("Response Status Code:", response.status_code)
    print("Response Content:", response.text)
    return response.text

添加函数输入参数,如下图所示:

其中user_id和dataset_id的含义以及获取方式如下所示:

1、user_key 为调用 MaxKB 的key,参见如下截图到MaxKB中获取:

  • 第一步:进入 api key 管理
  • 第二步:创建专属于自己的user_key

2、dataset_id 是语音知识库需要上传的指定 MaxKB 知识库,参照以下步骤完成。

  • 第一步:基于 MaxKB 创建一个通用型知识库,里面内容为空即可。参见如下截图:
  • 第二步:进入 MaxKB 的 Swagger API 文档,如下图获取访问地址以及user_key
  • 第三步:进入 Swagger API 文档,进入授权输入user_key。

  • 第四步:找到知识库查询的API接口,/api/dataset/ (获取知识库列表)

    参照以下截图获取到 dataset_id 即可。

五、AI 工作流编排

本次涉及两个工作流编排,其中一个 AI 工作流实现知识库入库,另一个 AI 工作流实现问答,两者相互引用满足不通角色的小助手使用。

AI 工作流一:音频知识库入库小助手

如下图所示将相关节点创建完成即可。

AI 工作流二:TCIP-T-AIGK

根据以下流程图编排相关 AI 工作流

其中 AI 工作流的基本信息中需要打开文件上传和设置用户输入参数,如下图所示:

  • 1、基本信息中需要打开文件上传,并同时支持文档和音频文件上传
  • 2、用户输入点击添加用户角色参数,如下图所示:

    同时需要将用户输入的名称信息改为请选择你的身份。

六、AI 教学助手演示

选择角色:进入 AI 教学助手页面,选择角色。

角色一:我是老师,点击上传文档或者音频文件,输入开始,点击发送,如下图所示知识库创建。

角色二:我是学生,提出问题,然后点击发送。

相关推荐
是Yu欸13 小时前
DevUI MateChat 技术演进:UI 与逻辑解耦的声明式 AI 交互架构
前端·人工智能·ui·ai·前端框架·devui·metachat
我不是QI13 小时前
周志华《机器学习---西瓜书》 一
人工智能·python·机器学习·ai
deephub15 小时前
从零开始:用Python和Gemini 3四步搭建你自己的AI Agent
人工智能·python·大语言模型·agent
组合缺一17 小时前
Spring Boot 国产化替代方案。Solon v3.7.2, v3.6.5, v3.5.9 发布(支持 LTS)
java·后端·spring·ai·web·solon·mcp
张彦峰ZYF17 小时前
AI赋能原则1解读思考:超级能动性-AI巨变时代重建个人掌控力的关键能力
人工智能·ai·aigc·ai-native
美林数据Tempodata17 小时前
李飞飞最新论文深度解读:从语言到世界,空间智能将重写AI的未来十年
人工智能·ai·空间智能
豆奶特浓618 小时前
Java面试生死局:谢飞机遭遇在线教育场景,从JVM、Spring Security到AI Agent,他能飞吗?
java·jvm·微服务·ai·面试·spring security·分布式事务
todoitbo18 小时前
基于 DevUI MateChat 搭建前端编程学习智能助手:从痛点到解决方案
前端·学习·ai·状态模式·devui·matechat
xcLeigh18 小时前
AI的提示词专栏:“Re-prompting” 与迭代式 Prompt 调优
人工智能·ai·prompt·提示词
哥布林学者20 小时前
吴恩达深度学习课程三: 结构化机器学习项目 第二周:误差分析与学习方法(一)误差分析与快速迭代
深度学习·ai