SanHQin 9 months ago
parent
commit
1a2d18fe0a

+ 246 - 9
src/components/pages/classroomObservation/components/chatArea.vue

@@ -1314,6 +1314,239 @@ export default {
 		noShowRoleList() {
 			this.showRoleList = false;
 		},
+		getBehaviorCoding(list){
+			let start = 0;
+			let end = 0;
+			let _pList = [];
+			let _step = 100;
+			let promiseList  = []
+			for(let i = 0;i<=list.length-1;i++){
+				_pList.push(list[i])
+				if(i==0)continue;
+				if(i%_step==0){
+					end = i;
+					promiseList.push(this.getBehaviorCodingPromise(start,end,_pList).then(_res=>{
+						let {startIndex,endIndex,data} =_res;
+						data.forEach((item2,index2)=>{
+							list[startIndex+index2].aiBehavior = item2;
+						})
+						// let 
+					}))
+					start = i;
+					continue;
+				}
+				if(i==(list.length-1)){
+					end = i;
+					promiseList.push(this.getBehaviorCodingPromise(start,end,_pList).then(_res=>{
+						let {startIndex,endIndex,data} =_res;
+						console.log("promise👉",_res)
+						data.forEach((item2,index2)=>{
+							list[startIndex+index2].aiBehavior = item2;
+						})
+					}))
+					start = i;
+					break;
+				}
+			}
+
+			console.log(promiseList)
+
+			Promise.all(promiseList).then(_=>{
+				console.log('👇')
+				console.log(list)
+			})
+			
+			// list.forEach((item,index)=>{
+			// 	if(index==0){
+			// 		start = 0;
+			// 		end = 0;
+			// 		_pList = [];
+			// 	}
+
+			// }) 
+
+		},
+		getBehaviorCodingPromise(start,end,list){
+			return new Promise((resolve,reject)=>{
+				let _uuid = uuidv4();
+				let _workText = '';
+				list.forEach(i=>{
+					_workText+=`${i.message} ${i.time} ${i.role}\n`
+				}) 
+				let _msg = `Language: Please use the same language as the user requirement, if the user speaks Chinese, the specific text of your answer should also be in Chinese.
+ATTENTION: Use '##' to SPLIT SECTIONS, not '#'. Output format carefully referenced "Format example".
+Instruction: Based on the context, follow "Format example", write content
+				
+请你基于以下{用户给定的文本},执行以下任务,按要求输出对应内容。
+
+## 角色
+
+你是专业的课堂行为分析员,熟悉课堂行为编码的标准和分类,能够准确识别和标注课堂中的各种行为。
+
+## 任务
+
+根据用户给定的文本和文本上下文背景,为用户提供的每一行文本,打上相应的行为编码的标签。输出行为编码的名称,以及你的判断理由。严格按照指定的格式输出编码名称,请仅仅只是输出编码名称,无需任何其它的解释性文字。
+
+## 工作流程
+
+1. 仔细阅读并分析用户提供的文本。
+2. 仔细阅读用户指定的某一行文本,结合上下文,参考知识库中的编码特征描述,为该行文本打上相应的行为编码标签。
+3. 严格按照指定的格式输出编码名称,请仅仅只是输出编码名称,无需任何其它的解释性文字。
+
+
+## 知识库
+
+### 简单版本的编码特征描述
+
+每个编码类型的名字、评价标准、语言学特征,以及相应的课堂实例。
+
+| 行为编码       | 评价标准                                               | 语言学特征                                                   | 课堂实例                                                     |
+| -------------- | ------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
+| 老师讲课       | 老师进行知识传授、活动安排、总结等。                   | 使用陈述句,语气平稳,内容多为知识传授、活动安排、总结等。   | 1.' '好了,接下来我们进行一个小实验,请大家按照步骤操作'。' <br> 2.' '那孩子们仔细看老师的手指,十个手指中有一些指向陆地,有一些指向海洋'。' <br> 3.' '现在我随机把这个球传给我们班上的任意1位同学,请你数数几个陆地几个海洋'。' |
+| 老师提问或点名 | 老师提问学生或点名学生回答问题。                       | 使用疑问句或指令性语言,语气较为引导,内容多为提问或点名。   | 1.' '请你说'。' <br> 2.' '请你帮我数一数有多少个陆地,多少个海洋'。' <br> 3.' '那这个时候我们可以怎么办?这些困难又会给我们带来什么样的启发呢?'' |
+| 老师板书或操作 | 老师在黑板上书写或进行实验操作。                       | 使用描述性语言和指令性语言,语气较为平稳,内容多为书写或操作指令。 | 1.' '请大家看黑板,这里是我们今天要学习的重点'。' <br> 2.' '接下来我们进行一个小实验,请大家按照步骤操作'。' <br> 3.' '我现在在黑板上写下这个公式,大家要记住'。' |
+| 老师评价或反馈 | 老师对学生的回答或表现进行评价或反馈。                 | 使用评价性语言和反馈性语言,语气较为鼓励,内容多为评价或反馈。 | 1.' '所以你是个观察仔细的同学,请坐'。' <br> 2.' '你是一个善于思考的孩子'。' <br> 3.' '非常好的方法'。' |
+| 老师其它       | 老师进行与课堂内容相关的其他活动。                     | 使用描述性语言和指令性语言,语气较为活泼,内容多为活动描述或操作指令。 | 1.' '这实在是太有趣了,原来失重使太空与地球之间的生活形成了如此大的差别'。' <br> 2.' '请大家自由编创,同学们可以想一想'。' <br> 3.' '我们将白玫瑰横向剪开,再纵向剪开,观察茎的内部结构'。' |
+| 学生发言       | 学生在课堂上进行简短的发言或回答老师的问题。           | 使用简短的陈述句或疑问句,语气较为随意,内容多为回答问题或简短发言。 | 1.' '我觉得是一号'。' <br> 2.' '因为一号比那个二号大好'。' <br> 3.' '因为呢海洋看上去面积更大'。' |
+| 学生讨论       | 学生进行小组讨论或合作活动。                           | 使用讨论性语言和合作性语言,语气较为互动,内容多为讨论或合作。 | 1.' '请小评委们对照评价标准,小组内先讨论一下,可以站起来找同学说说你的想法'。' <br> 2.' '大家请看视频,先选取一朵白玫瑰,将水染色,把白玫瑰插入水中,等待一天'。' <br> 3.' '我们严格执行调查计划,通过百度、豆包等渠道搜集相关资料'。' |
+| 学生小组活动   | 学生进行小组讨论或合作活动。                           | 使用讨论性语言和合作性语言,语气较为互动,内容多为讨论或合作。 | 1.' '请小评委们对照评价标准,小组内先讨论一下,可以站起来找同学说说你的想法'。' <br> 2.' '大家请看视频,先选取一朵白玫瑰,将水染色,把白玫瑰插入水中,等待一天'。' <br> 3.' '我们严格执行调查计划,通过百度、豆包等渠道搜集相关资料'。' |
+| 学生自主学习   | 学生进行自主学习或独立完成任务。                       | 使用描述性语言和指令性语言,语气较为平稳,内容多为学习任务或指令。 | 1.' '请大家独立完成这道题目'。' <br> 2.' '现在大家可以开始阅读课本的第十页'。' <br> 3.' '请同学们在接下来的十分钟内完成这份练习'。' |
+| 学生汇报分享   | 学生进行小组汇报、分享学习成果、展示活动成果等。       | 使用陈述句和描述性语言,语气较为正式,内容多为汇报、分享学习成果。 | 1.' '我们小组用了拼接法来比较海陆的面积'。' <br> 2.' '我们利用粘豆子的方法来比较海陆面积'。' <br> 3.' '我们采取数格子的方法比较海陆面积'。' |
+| 学生其他       | 学生进行与课堂内容相关的其他活动,如表演、实验操作等。 | 使用描述性语言和指令性语言,语气较为活泼,内容多为活动描述或操作指令。 | 1.' '这实在是太有趣了,原来失重使太空与地球之间的生活形成了如此大的差别'。' <br> 2.' '请大家自由编创,同学们可以想一想'。' <br> 3.' '我们将白玫瑰横向剪开,再纵向剪开,观察茎的内部结构'。' |
+
+
+### 行为编码详细的特征描述
+
+#### 【老师讲课】的特征
+
+老师的发言内容具有结构清晰、互动性强、鼓励参与、引导性强、教育性和启发性、反馈及时、语言简洁明了和注重细节等特征。这些特征有助于提高学生的参与度和学习效果,营造积极的课堂氛围。
+
+1. **结构清晰**:发言内容按照时间顺序进行,逻辑性强,层次分明。老师先介绍活动背景和目的,然后逐步引导学生进行展示和互动,最后进行总结和评价。
+2. **互动性强**:老师频繁与学生互动,鼓励学生提问、分享和展示。例如,老师多次邀请学生上台展示成果,并给予鼓励和表扬。
+3. **鼓励参与**:老师通过掌声、表扬和鼓励性语言,激发学生的参与热情,增强他们的自信心。例如,老师多次使用“掌声欢迎”、“太棒了”等词语。
+4. **引导性强**:老师在发言中起到了引导和组织的作用,明确活动的流程和要求,帮助学生更好地理解和参与活动。例如,老师详细说明了展示的内容和形式,并在每个环节进行引导。
+5. **教育性和启发性**:发言内容不仅传授知识,还注重培养学生的思维能力和团队合作精神。例如,老师强调相互学习、汲取智慧、共同掌握知识等。
+6. **反馈及时**:老师在学生展示和分享后,及时给予反馈和评价,帮助学生认识到自己的优点和不足。例如,老师在学生展示后进行点评,并表扬表现优秀的学生。
+7. **语言简洁明了**:老师的发言内容简洁明了,易于学生理解和接受。例如,老师使用了大量简短的句子和明确的指令。
+8. **注重细节**:老师在发言中关注细节,确保活动顺利进行。例如,老师提醒学生坐端正、认真听讲,并对每个环节进行详细说明。
+
+#### 【老师提问或点名】的特征
+
+老师的发言内容具有频繁提问、鼓励参与、引导思考、关注情感、鼓励表达和互动性强等特征。这些特征有助于激发学生的学习兴趣,增强课堂的互动性和参与度,促进学生的思考和表达能力。
+
+1. **频繁提问**:老师在发言中频繁提问,涉及到学生的感受、意见和解决方案等。这种提问不仅包括直接的问题(如“谁来告诉我”、“你们想投给谁”),还包括引导学生思考和表达的开放性问题(如“这些困难又会给我们带来什么样的启发”)。
+2. **鼓励参与**:老师通过提问和点名的方式,鼓励学生积极参与课堂活动。例如,老师多次邀请学生上台展示或汇报(如“有请繁星植物队”、“让我们有请小苗护卫队的同学上来汇报”)。
+3. **引导思考**:老师的提问不仅仅是为了获取答案,更是为了引导学生进行深入思考。例如,老师在讨论植物成长过程中遇到的困难时,提出“这些困难又会给我们带来什么样的启发”,引导学生从问题中学习和反思。
+4. **关注情感**:老师关注学生的情感和感受,询问他们的想法和感受(如“那两位小朋友这一次获得胜利有什么想说的吗”、“那你们愿意分享一下你们此时此刻的感受吗”)。这种关注有助于建立良好的师生关系,增强学生的课堂参与感。
+5. **鼓励表达**:老师通过提问和点名,鼓励学生表达自己的观点和感受。例如,老师多次邀请学生举手发言,并给予积极的反馈(如“好非常棒还有吗”、“好支持”)。
+6. **互动性强**:老师的发言内容具有很强的互动性,通过提问、点名和邀请学生上台等方式,增加了课堂的互动性和参与度。
+
+#### 【老师评价或反馈 】的特征:
+
+老师的发言内容具有高度的评价性、鼓励性和指导性,旨在通过正面反馈和具体建议帮助学生提升,同时激励他们在未来的学习和生活中继续努力和探索。
+
+1. **频繁的评价和反馈**:老师在整个过程中频繁地对学生的表现进行评价和反馈。这些评价和反馈既有对具体表现的即时评价(如“缺少了节奏感”、“讲得很好”),也有对整体表现的总结性评价(如“非常感谢神探队的精彩分享”、“同学们种子舰队小组的分享很精彩”)。
+2. **正面鼓励和表扬**:老师的发言中充满了正面的鼓励和表扬,强调学生的优点和进步。例如,“我要为种子建队小组点赞”、“你们在老师心目中是一样优秀的”、“希望你们在未来的学习和生活中学会用科学的方法去探索”。
+3. **具体的改进建议**:除了表扬,老师也提供了具体的改进建议,帮助学生认识到需要改进的地方。例如,“缺少了节奏感”、“缺少了音乐”、“语速也很适中是吧”。
+4. **激励和引导**:老师通过发言激励学生继续努力,并引导他们在未来的学习和生活中应用所学知识。例如,“希望你们在未来的学习和生活中学会用科学的方法去探索”、“要勇于探索,学以致用”。
+5. **总结和过渡**:老师在不同环节之间进行总结和过渡,帮助学生理清思路,保持活动的连贯性。例如,“我们今天的汇报活动到此结束”、“下面的时间交给罗老师”。
+6. **互动性**:老师的发言中有一定的互动性,鼓励学生参与和思考。例如,“大家觉得他们俩谁写的比较好呢”、“大家猜一猜”。
+
+【】
+
+#### 【老师其它】的特征:
+
+无法归类为【老师讲课】【老师提问或点名】【老师评价或反馈】,则归类为【老师其它】。这类内容可能具备以下的特点:
+
+1. **引导和组织**:老师在多个时段引导活动的进行,如邀请嘉宾、介绍活动内容、安排学生讨论和投票等。例如,序号417、418、425、548、549、722、723、724、725、763、794等。
+2. **时间管理**:老师在发言中多次提到时间安排,确保活动按计划进行。例如,序号548、794等。
+3. **信息传达**:老师在发言中传达了活动的背景、过程和结果,确保学生了解活动的每个环节。例如,序号544、545、546、547、766、769等。
+
+---
+
+#### 【学生发言】的特征:
+
+学生的发言内容具有频繁且简短、重复和断续、描述和解释、讨论和建议、引用和推理、互动和回应以及内容多样性的特征。这些特征反映了学生在课堂讨论中的积极参与和多方面的思考。
+
+1. **频繁且简短**:学生的发言内容多为简短的句子或片段,时长通常在几秒钟内。这表明学生们的发言较为频繁,但每次发言的内容较为简短。
+2. **重复和断续**:有些发言内容存在重复和断续的现象,如“谁知谁知谁知谁知这个习惯的过程”、“4个4个”等。这可能反映了学生在表达时的思维跳跃或语言组织上的困难。
+3. **描述和解释**:学生们经常描述某些现象或解释某些概念,如“海洋面积大于陆地面积”、“水可以帮助我们发电”等。这表明学生们在尝试通过语言来传达他们的理解和知识。
+4. **讨论和建议**:学生们不仅仅是陈述事实,还会提出建议和进行讨论,如“我建议他们可以不要把两个陆地给重合了”、“因为他外他们有一些群岛就非常多的一些海洋就还是得接触一点”等。这显示了学生们在互动中积极参与并提出自己的见解。
+5. **引用和推理**:有些发言内容引用了书本知识或进行了一些推理,如“我在科普书上看到过”、“如果没有了水的话就会非常的炎热”等。这表明学生们在发言时会结合已有的知识进行推理和论证。
+6. **互动和回应**:学生们的发言中有不少是对他人发言的回应或互动,如“请你说”、“同意请坐”等。这显示了课堂上学生之间的互动性较强,发言不仅仅是单向的表达。
+7. **多样性**:发言内容涉及多个主题和方面,从地理知识到水资源的用途,再到环境保护等,内容多样且广泛。这反映了学生们在课堂讨论中涉及的知识面较广。
+
+#### 【学生小组活动】的特征:
+
+1. **频繁重复**:发言中多次重复“数据”、“谁知”、“谢谢”等词语,显示出学生在表达过程中可能存在词汇匮乏或表达不清的情况。
+2. **短促且断续**:大部分发言时长较短,通常在几秒钟内完成,且内容断续,缺乏连贯性。这可能反映了学生在小组活动中交流的即时性和随意性。
+3. **非正式语言**:使用了大量口语化的表达,如“唉”、“嗯”、“啊”等,显示出学生在小组活动中的交流较为随意和非正式。
+4. **任务导向**:尽管语言较为随意,但发言内容多与任务相关,如讨论数据、完成任务、粘贴结果等,表明学生在进行小组活动时仍然围绕着特定的任务展开。
+5. **互动性强**:发言中多次出现对他人发言的回应和感谢,如“谢谢大家”、“谢谢谢谢”,显示出学生之间的互动频繁,合作性较强。
+6. **信息量有限**:由于发言多为短句和重复,实际传递的信息量较为有限,可能需要更多的时间和交流来完成任务。
+
+#### 【学生讨论】的特征:
+
+发言内容显示出学生在讨论过程中可能存在表达不清、思路不明确、互动不足等问题,影响了讨论的有效性和信息传递的清晰度。
+
+1. **频繁使用填充词**:发言中大量使用“嗯”、“谁知”等填充词,显示出说话者在表达过程中可能存在思考或犹豫。
+2. **表达不清晰**:许多句子结构不完整,逻辑不连贯,难以理解具体意思。例如,“谁知谁知到时候谁知所以患者嗯谁知谁知嗯谁知嗯谁知嗯谁知谁知嗯嗯嗯谁知谁谁知他没有这个应该要做翻译”。
+3. **重复和冗长**:发言中有大量重复的词语和短语,导致内容显得冗长且缺乏重点。例如,“谁知谁知谁知谁知谁知谁知谁知谁知”。
+4. **缺乏具体信息**:大部分发言内容缺乏具体的、有意义的信息,更多的是一些模糊的、泛泛的表述。
+5. **互动性低**:虽然是学生讨论,但从发言内容来看,互动性较低,更多是单方面的表达,缺乏有效的交流和回应。
+6. **情绪表达**:偶尔有情绪表达的词语,如“谢谢”、“好好好”,但整体情绪表达不强烈。
+
+#### 【学生汇报分享 】的特征:
+
+1. **结构化和条理性**:学生的发言内容通常按照一定的逻辑顺序进行,先介绍方法,再给出数据,最后得出结论。例如,学生先介绍使用的方法(拼接法、粘豆子法、数格子法),然后提供具体的测量数据,最后总结出海洋面积大于陆地面积的结论。
+2. **重复和确认**:在发言过程中,学生多次重复和确认数据和结论。这种重复不仅帮助巩固信息,也确保听众能够清楚理解。例如,学生多次确认陆地和海洋的重量或格子数。
+3. **多样化的方法**:学生使用了多种方法来比较海陆面积,包括拼接法、粘豆子法和数格子法。这显示了学生在解决问题时的多样化思维和尝试不同方法的能力。
+4. **数据驱动**:学生的发言内容高度依赖于具体的数据和计算结果。每个方法的介绍都伴随着具体的数值和计算过程,显示了学生对数据的重视和对结果的严谨态度。
+5. **合作和综合**:学生在发言中提到综合不同小组的结果,显示了合作学习和综合分析的特征。例如,学生在总结时提到综合两个小组的结果得出结论。
+6. **简洁明了**:学生的发言内容简洁明了,直接切入主题,避免了冗长的描述。这有助于听众快速抓住重点信息。
+
+综上所述,【发言内容】具有内容丰富、结构清晰、互动性强、语言生动、注重实践、团队合作、教育意义和情感表达等特征,展示了学生们在科学探究和团队合作中的积极表现和学习成果。
+
+#### 【学生其它】的特征:
+
+无法归类为【学生发言】【学生小组活动】【学生讨论】【学生汇报分享】,则归类为【学生其它】。
+
+
+## 数据
+
+这是你需要打标签的特定的多行文本:
+${_workText}
+
+# Format example
+['老师讲话','学生提问','老师回答','老师评价或反馈','老师讲课','学生发言']
+`
+			let params = {
+			  assistant_id: '6063369f-289a-11ef-8bf4-12e77c4cb76b',
+			  userId: this.userId,
+				// message:_msg,
+			  // message: [{role:"user",content:_msg}],
+				message: [{"type":"text","text":_msg}],
+			  session_name:_uuid,
+			  // uid: _uuid,
+			  file_ids: []
+			};
+
+			
+			this.ajax.post("https://gpt4.cocorobo.cn/ai_agent_park_chat", params).then(res=>{
+				// let _data = res.data.FunctionResponse.choices[0].message.content;
+				let _data = res.data.FunctionResponse.message;
+				_data = _data.replaceAll("```json", "").replaceAll("```", "");
+				// console.log(_data)
+				// console.log(JSON.parse(_data))
+				_data = JSON.parse(_data);
+				resolve({startIndex:start,endIndex:end,data:_data})
+			}).catch(err=>{
+				console.log(err);
+				this.$message.error("行为编码错误")
+			})
+
+			})
+		},
 		// convertToMp3(wavDataView) {
 		// 	// 获取wav头信息
 		// 	const wav = lamejs.WavHeader.readHeader(wavDataView); // 此处其实可以不用去读wav头信息,毕竟有对应的config配置
@@ -1519,6 +1752,7 @@ export default {
 								_this.saveEditorBar();
 								return;
 							}
+
 							_this.ajax
 								.put("https://gpt4.cocorobo.cn/upload_file_knowledge", {
 									url: data.Location,
@@ -1787,23 +2021,26 @@ export default {
 				let _sentence = 0;
 				let _words = 0;
 				_div.innerHTML = _data;
+				let _test = []
 				let _tableRows = _div.querySelectorAll(`table tbody tr`);
 				_tableRows.forEach((i, index) => {
 					if (index == 0) return;
-					// let obj = {
-					// 	index: i.cells[0].textContent,
-					// 	startTime: i.cells[1].textContent,
-					// 	endTime: i.cells[2].textContent,
-					// 	message: i.cells[3].textContent,
-					// 	time: i.cells[4].textContent,
-					// 	role: i.cells[5].textContent,
-					// 	behavior: i.cells[6].textContent,
-					// };
+					let obj = {
+						index: i.cells[0].textContent,
+						startTime: i.cells[1].textContent,
+						endTime: i.cells[2].textContent,
+						message: i.cells[3].textContent,
+						time: i.cells[4].textContent,
+						role: i.cells[5].textContent,
+						behavior: i.cells[6].textContent,
+					};
+					_test.push(obj)
 					if(i.cells[3].textContent!=""){
 						_sentence+=1;
 						_words+=i.cells[3].textContent.length;
 					}
 				});
+				// this.getBehaviorCoding(_test)
 				this.editorBarData.sentenceNum = _sentence;
 				this.editorBarData.wordsNum = _words;
 				this.$parent.saveWordFrequency({_sentence,_words})

File diff suppressed because it is too large
+ 126 - 95
src/components/pages/classroomObservation/components/messageArea.vue


+ 15 - 12
src/components/pages/classroomObservation/index.vue

@@ -281,18 +281,18 @@ export default {
 		// 生成报告
 		getReport() {
 			if (!this.fileId) return;
-			this.$confirm("操作将覆盖原有内容,是否继续?", "提示", {
-				confirmButtonText: "确定",
-				cancelButtonText: "取消",
-				type: "warning",
-			})
-				.then(() => {
-					this.$refs.messageAreaRef.getReport();
-				})
-				.catch((e) => {
-					console.log(e)
-					console.log("取消生成报告");
-				});
+			// this.$confirm("操作将覆盖原有内容,是否继续?", "提示", {
+			// 	confirmButtonText: "确定",
+			// 	cancelButtonText: "取消",
+			// 	type: "warning",
+			// })
+			// 	.then(() => {
+				this.$refs.messageAreaRef.getReport();
+			// 	})
+			// 	.catch((e) => {
+			// 		console.log(e)
+			// 		console.log("取消生成报告");
+			// 	});
 		},
 		//预览
 		preview() {
@@ -439,6 +439,9 @@ export default {
 						this.loading = false;
 						console.log(this.optionData);
 						resolve();
+					}).catch(e=>{
+						console.log(e);
+						this.$message.error("获取课堂列表失败")
 					});
 			});
 		},

Some files were not shown because too many files changed in this diff