今天给大家分享一个教学的 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 教学助手页面,选择角色。

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

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

【AI+教学】让课堂实时讲解语音知识库沉淀下来的更多相关文章

  1. 实时中文语音克隆——开源项目MockingBird体验

    [引子] 在今年大型网络攻防演练前不久,笔者接到一个公司的座机号码来电,上来就问防守准备得怎么样了,哪里还有不足等.等等,这声音不认识,笔者第一反应就是蓝军(Red Team)来进行社会工程攻击,于是 ...

  2. 实时Android语音对讲系统架构

    本文属于Android局域网内的语音对讲项目系列,<通过UDP广播实现Android局域网Peer Discovering>实现了局域网内的广播及多播通信,本文将重点说明系统架构,音频信号 ...

  3. [初识]使用百度AI接口,图灵机器人实现简单语音对话

    一.准备 1.百度ai开放平台提供了优质的接口资源https://ai.baidu.com/  (基本免费) 2.在语音识别的接口中, 对中文来说, 讯飞的接口是很好的选择https://www.xf ...

  4. 基于flask和百度AI接口实现前后端的语音交互

    话不多说,直接怼代码,有不懂的,可以留言 简单的实现,前后端的语音交互. import os from uuid import uuid4 from aip import AipSpeech from ...

  5. 矩池云助力科研算力免费上"云",让 AI 教学简单起来

    矩池云是一个专业的国内深度学习云平台,拥有着良好的深度学习云端训练体验,和高性价比的GPU集群资源.而且对同学们比较友好,会经常做一些大折扣的活动,最近双十一,全场所有的RTX 2070.Platin ...

  6. Nature重磅:华裔科学家成功解码脑电波,AI直接从大脑中合成语音

    [导读]Nature发表华裔作者论文:通过解码大脑活动提升语音的清晰度,使用深度学习方法直接从大脑信号中产生口语句子,达到150个单词,接近正常人水平. 大脑活动能够解码成语音了. 说话似乎是一项毫不 ...

  7. 转载 | Python AI 教学│k-means聚类算法及应用

    关注我们的公众号哦!获取更多精彩哦! 1.问题导入 假如有这样一种情况,在一天你想去某个城市旅游,这个城市里你想去的有70个地方,现在你只有每一个地方的地址,这个地址列表很长,有70个位置.事先肯定要 ...

  8. 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然

    from:https://36kr.com/p/5103044.html 到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务.个人助理将变的更加智能,它是打造这种功能的切入 ...

  9. AliCloudDenoise 语音增强算法:助力实时会议系统进入超清音质时代

    近些年,随着实时通信技术的发展,在线会议逐渐成为人们工作中不可或缺的重要办公工具,据不完全统计,线上会议中约有 75% 为纯语音会议,即无需开启摄像头和屏幕共享功能,此时会议中的语音质量和清晰度对线上 ...

  10. 2019 计蒜之道 初赛 第二场 B. 百度AI小课堂-上升子序列(简单) ( 实现)

    题目背景 ​91029102 年 99 月 22 日,百度在 X 市 XX 中学举办的第一场 AI 知识小课堂大获好评!同学们对矩阵的掌握非常棒. 今天的 AI 知识小课堂的第二场开讲啦.本场 AI ...

随机推荐

  1. C#/.NET/.NET Core技术前沿周刊 | 第 28 期(2025年2.24-2.28)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  2. DeepSeek 开源周回顾「GitHub 热点速览」

    上周,DeepSeek 发布的开源项目用一个词形容就是:榨干性能!由于篇幅有限,这里仅列出项目名称和简介,感兴趣的同学可以前往 DeepSeek 的开源组织页面,深入探索每个项目的精彩之处! 第一天 ...

  3. 分享一个裁剪图片Chrome 扩展 —— Crop Image

    1. 前言 在日常工作和设计过程中,我们常常需要对图片进行裁剪,以适配不同的使用场景.无论是社交媒体头像.网站图片优化,还是艺术设计,精确的图片裁剪都是必不可少的.然而,许多在线工具使用复杂,或者功能 ...

  4. 提示词工程——AI应用必不可少的技术

    引言 在人工智能技术飞速发展的今天,大语言模型(LLM)已成为推动技术革新的核心引擎.然而,如何让这些"聪明"的模型真正落地业务场景.解决实际问题?答案往往不在于模型本身的参数规模 ...

  5. kubeadm init 或 join 失败 [kubelet-check] Initial timeout of 40s passed.

    前言 kubeadm 初始化或 join 时,报错: [etcd] Creating static Pod manifest for local etcd in "/etc/kubernet ...

  6. go time时间格式化

    时间戳与时间格式相互转化 例一 // 时间戳转时间 str_time := time.Unix(1617279282,0).Format("2006-01-02 15:04:05" ...

  7. Error: Address already in use

    端口被某个进程占用 使用命令 lsof -i:端口号 然后看到进程号,直接杀掉进程就好 kill -9 进程号

  8. Oracle体系结构和用户管理

    本篇博客将对Oracle的体系结构.存储结构.内存结构和进程结构进行初步介绍,从而从宏观上把握它的物理组成.文件组成和各种进程,对于进一步的了解可以起到很好地作用 一.Oralce体系结构 1.概述 ...

  9. 10 卷积神经网络CNN原理

    1. 全连接层 前文中我们讨论的几乎都是全连接层,也就是在层间,每个神经元都与前一层的所有神经元相连接,如图: 也就是每层的每个feature,都与前一层所有features相关联,是前一层所有fea ...

  10. [源码系列:手写spring] IOC第十一节:Aware接口

    内容介绍 Aware简洁 在Spring框架中,Aware接口是一个非常有用的工具,用于实现Bean与Spring容器及其他资源之间的集成.Aware接口是一个标记接口,其中定义了各种Aware子接口 ...