lsc пре 8 месеци
родитељ
комит
2dd5283425

+ 1 - 1
dist/index.html

@@ -32,7 +32,7 @@
       width: 100%;
       background: #e6eaf0;
       font-family: '黑体';
-    }</style><link href=./static/css/app.3538feecb1ed53f6cda64193f1fc05b6.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.571c38d63f24b1ae9e16.js></script><script type=text/javascript src=./static/js/vendor.ee476e38463461edca63.js></script><script type=text/javascript src=./static/js/app.5c28c34bc8ef8be8cced.js></script></body></html><script>function stopSafari() {
+    }</style><link href=./static/css/app.71fb214d46a1d8ec0f06dbd8406cf612.css rel=stylesheet></head><body><div id=app></div><script type=text/javascript src=./static/js/manifest.571c38d63f24b1ae9e16.js></script><script type=text/javascript src=./static/js/vendor.ee476e38463461edca63.js></script><script type=text/javascript src=./static/js/app.b00af4765b8bb2238773.js></script></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/static/css/app.3538feecb1ed53f6cda64193f1fc05b6.css


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/static/css/app.3538feecb1ed53f6cda64193f1fc05b6.css.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/static/css/app.71fb214d46a1d8ec0f06dbd8406cf612.css


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/static/css/app.71fb214d46a1d8ec0f06dbd8406cf612.css.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/static/js/app.b00af4765b8bb2238773.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/static/js/app.b00af4765b8bb2238773.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
dist/static/js/manifest.571c38d63f24b1ae9e16.js.map


+ 284 - 25
src/components/pages/aiAddCourse/addCourse.vue

@@ -919,11 +919,16 @@
                 <div class="c_info_title">
                   课程目标
                   <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
-                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 auto;"
+                    <button class="c_pub_button_confirm" style="margin: 0px 5px 0px auto;"
                       @contextmenu.prevent="openAiDialog(1, 'aitargetTextDetail2',1)"
                       @click="openAiDialog(2, 'aitargetTextDetail2',1)">生成目标</button>
-                                      </el-tooltip>
-                </div>
+                  </el-tooltip>
+                  <el-tooltip effect="light" content="右键单击可配置提示词" placement="bottom">
+                    <button class="c_pub_button_confirm" style="margin: 0 20px 0 0;"
+                      @contextmenu.prevent="openAiDialog(1, 'aitargetTextDetail3',1)"
+                      @click="openAiDialog(2, 'aitargetTextDetail3',1)">生成目标2</button>
+                    </el-tooltip>
+                 </div>
                 <div style="width: 100%; padding: 0px 20px; box-sizing: border-box">
                   <div style="width: calc(100%);" class='op_task_box'>
                     <textarea v-autoHeight="68" rows="2" class="binfo_input binfo_textarea" cols v-model="targetCourseText2"
@@ -5000,6 +5005,7 @@
         <aiTips ttitle="基础资料" title="提取目标" :detail="aiJson.aiTarget" pan="aiTarget" @setAiJson="setAiJson"  v-if="!yiKeTemplateArray.includes(templateid)"/>
         <aiTips ttitle="基础资料" title="智能检索资料" :detail="aiJson.aiSearchFile" pan="aiSearchFile" @setAiJson="setAiJson"  v-if="!yiKeTemplateArray.includes(templateid)"/>
         <aiTips ttitle="基础资料" title="课程描述优化" :detail="aiJson.aiDetail" pan="aiDetail" @setAiJson="setAiJson" />
+        <!-- <aiTips ttitle="基础资料" title="目标文件检索" :detail="aiJson.aiTargetGet" pan="aiTargetGet" @setAiJson="setAiJson"  v-if="!yiKeTemplateArray.includes(templateid)"/> -->
         <aiTips ttitle="基础资料" title="生成目标" :detail="aiJson.aiTarget2" pan="aiTarget2" @setAiJson="setAiJson"  v-if="!yiKeTemplateArray.includes(templateid)"/>
         <aiTips ttitle="基础资料" title="生成大纲按钮" :detail="aiJson.aiOutline" pan="aiOutline" @setAiJson="setAiJson" v-if="templateid != '61c628b9-3d96-11ef-b873-005056b86db5' && templateid != '4480d65a-1e48-11ef-bee5-005056b86db5' && templateid != 'cf5722a4-401b-11ef-b873-005056b86dc3'"/>
         <aiTips ttitle="课程大纲" title="大纲任务生成" :detail="aiJson.aiOutlineTask" pan="aiOutlineTask" @setAiJson="setAiJson" v-if="templateid == '61c628b9-3d96-11ef-b873-005056b86db5'"/>
@@ -7687,26 +7693,23 @@ export default {
             this.openAiDialog(clickType, 'aiTeacher2')
             return;
           }
-          if(!(this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3")){
-            let _pan2 = 1
-            for (var k = 0; k < this.unitJson[0].chapterInfo[0].taskJson.length; k++) {
-              if(!this.unitJson[0].chapterInfo[0].taskJson[k].taskDetail2){
-                _pan2 = 2
-                this.$message.error(`请完善任务${k+1}的课程大纲`)
-                break;
-              }
-              if(!this.unitJson[0].chapterInfo[0].taskJson[k].taskDetail3){
-                _pan2 = 2
-                this.$message.error(`请完善任务${k+1}的课程教案`)
-                break;
-              }
+          let _pan2 = 1
+          for (var k = 0; k < this.unitJson[0].chapterInfo[0].taskJson.length; k++) {
+            if(!this.unitJson[0].chapterInfo[0].taskJson[k].taskDetail2 && !(this.templateid == "4480d65a-1e48-11ef-bee5-005056b86db5" || this.templateid == "cf5722a4-401b-11ef-b873-005056b86dc3")){
+              _pan2 = 2
+              this.$message.error(`请完善任务${k+1}的课程大纲`)
+              break;
             }
-
-            if(_pan2 == 2){
-              return;
+            if(!this.unitJson[0].chapterInfo[0].taskJson[k].taskDetail3){
+              _pan2 = 2
+              this.$message.error(`请完善任务${k+1}的课程教案`)
+              break;
             }
           }
 
+          if(_pan2 == 2){
+            return;
+          }
           const functionA = () => {
             setTimeout(() => {
               this.loading = false
@@ -8326,6 +8329,15 @@ export default {
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <title>${a}</title>
           <style>
+            table {
+              border-collapse: collapse; /* 折叠边框 */
+              width: 100%;
+            }
+            th, td {
+              border: 1px solid black; /* 线条样式 */
+              padding: 8px;
+              text-align: left;
+            }
           </style>
       </head>
       <body>
@@ -8414,6 +8426,15 @@ export default {
           <meta name="viewport" content="width=device-width, initial-scale=1.0">
           <title>${a}</title>
           <style>
+            table {
+              border-collapse: collapse; /* 折叠边框 */
+              width: 100%;
+            }
+            th, td {
+              border: 1px solid black; /* 线条样式 */
+              padding: 8px;
+              text-align: left;
+            }
           </style>
       </head>
       <body>
@@ -10450,7 +10471,7 @@ export default {
         delete this.unitJson[i].isUpdate;
       }
       if(!this.targetCourseText2){
-        this.courseText = this.targetCourseText ? JSON.parse(JSON.stringify(this.targetCourseText)) : this.courseText
+        this.courseText = this.teacherCourseText ? JSON.parse(JSON.stringify(this.teacherCourseText)) : this.courseText
       }
       let params = [
         {
@@ -10714,7 +10735,7 @@ export default {
         delete this.unitJson[i].isUpdate;
       }
       if(!this.targetCourseText2){
-        this.courseText = this.targetCourseText ? JSON.parse(JSON.stringify(this.targetCourseText)) : this.courseText
+        this.courseText = this.teacherCourseText ? JSON.parse(JSON.stringify(this.teacherCourseText)) : this.courseText
       }
       let params = [
         {
@@ -10849,7 +10870,8 @@ export default {
             this.aiJson.aiAbstract = this.aiJson.aiAbstract ? this.aiJson.aiAbstract : '从用户提供的教案资料(文件形式)中,自动总结教案摘要与教案的学科关键词(每个学科3个)。注意,在提取信息方面你绝对不能虚拟出不存在的东西。然后,你基于用户上传的教案,生成项目的驱动性问题和最终作品。'
             this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
             this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
-            this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
+            this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,**从你的知识库去检索5个最相关的信息**,如果没有相关的信息,请你根据已有的知识,并参考#参考资料中的内容,生成本课程的教学目标。你仅需要输出与课程目标相关的内容。'
+            this.aiJson.aiTargetGet = this.aiJson.aiTargetGet ? this.aiJson.aiTargetGet : '从用户提供的教案资料(文件形式)中,自动提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
             this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
             this.aiJson.aiRateRule = '根据<评价维度>和<维度描述>,制定具体的评价细则。 具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。'
             if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
@@ -10867,7 +10889,7 @@ export default {
             //   this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
             //   this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
             //   this.aiJson.aiDetail = '请根据#参考资料(上下文中可能蕴含不相关的内容,请你无视不相关内容),为一个<课程标题>的<学科>整合跨学科的,面向<年级>年级学生的项目式学习课程生成课程概况,驱动性问题(有且仅需要生成1个问题)和项目成果&评价标准。请你再生成时更有创意一点,不要与#参考资料中原有的驱动性问题重复。'
-            //   this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
+            //   this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,**从你的知识库去检索5个最相关的信息**,如果没有相关的信息,请你根据已有的知识,并参考#参考资料中的内容,生成本课程的教学目标。你仅需要输出与课程目标相关的内容。'
             //   this.aiJson.aiOutline = '请为这个名为<课程名字>的<课程学科>学科的,面向<面向年级>学生的项目式学习课程设计序列教学活动(需要每个任务都需要至少200个token的详细描述)。你需要参考课程简要描述<课程简要描述>和<课程目标>和#参考资料(上下文中可能蕴含不相关的内容,请你无视不相关内容),并产出每个教学任务的设计以及每个教学活动的评价量规(学生能做到...)。'
             //   this.aiJson.aiTeacher = '请根据<任务名+单一任务描述>和并参考<课程简要描述>和#参考上下文(上下文中可能蕴含不相关的内容,请你无视不相关内容),为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),评价标准(学生能做到...),相关知识点的讲解,练习(练习需要包含示例答案)。'
             // }
@@ -12835,7 +12857,8 @@ export default {
                 this.aiJson.aiAbstract = this.aiJson.aiAbstract ? this.aiJson.aiAbstract : '从用户提供的教案资料(文件形式)中,自动总结教案摘要与教案的学科关键词(每个学科3个)。注意,在提取信息方面你绝对不能虚拟出不存在的东西。然后,你基于用户上传的教案,生成项目的驱动性问题和最终作品。'
                 this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
                 this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
-                this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
+                this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,**从你的知识库去检索5个最相关的信息**,如果没有相关的信息,请你根据已有的知识,并参考#参考资料中的内容,生成本课程的教学目标。你仅需要输出与课程目标相关的内容。'
+                this.aiJson.aiTargetGet = this.aiJson.aiTargetGet ? this.aiJson.aiTargetGet : '从用户提供的教案资料(文件形式)中,自动提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
                 this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
                 this.aiJson.aiRateRule = '根据<评价维度>和<维度描述>,制定具体的评价细则。 具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。'
                 if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
@@ -12973,7 +12996,8 @@ export default {
                 this.aiJson.aiAbstract = this.aiJson.aiAbstract ? this.aiJson.aiAbstract : '从用户提供的教案资料(文件形式)中,自动总结教案摘要与教案的学科关键词(每个学科3个)。注意,在提取信息方面你绝对不能虚拟出不存在的东西。然后,你基于用户上传的教案,生成项目的驱动性问题和最终作品。'
                 this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
                 this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
-                this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,从你的知识库去检索5个最相关的信息'
+                this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,**从你的知识库去检索5个最相关的信息**,如果没有相关的信息,请你根据已有的知识,并参考#参考资料中的内容,生成本课程的教学目标。你仅需要输出与课程目标相关的内容。'
+                this.aiJson.aiTargetGet = this.aiJson.aiTargetGet ? this.aiJson.aiTargetGet : '从用户提供的教案资料(文件形式)中,自动提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
                 this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
                 this.aiJson.aiRateRule = '根据<评价维度>和<维度描述>,制定具体的评价细则。 具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。'
                 if(this.templateid == '61c628b9-3d96-11ef-b873-005056b86db5'){
@@ -14925,6 +14949,15 @@ export default {
         this.aiText2 = ''
       }else if(pan == 'aiTask2'){
         this.aiJson['aiTask'] = string
+      }else if(pan == 'aiteacherTextDetail'){
+        this.aiJson['aiAbstract'] = string
+      }else if(pan == 'aitargetTextDetail'){
+        this.aiJson['aiTarget'] = string
+      }else if(pan == 'aitargetTextDetail2'){
+        this.aiJson['aiTarget2'] = string
+      }else if(pan == 'aitargetTextDetail3'){
+        this.aiJson['aiTargetGet'] = string
+        this.aiJson['aiTarget2'] = string2
       }else {
         this.aiJson[pan] = string
       }
@@ -15266,6 +15299,18 @@ export default {
         this.aitype = type
         this.aiText = this.aiJson.aiTarget2
         this.aiCallBack = callback
+      } else if (type == 'aitargetTextDetail3'){
+        if (this.ttargetTextLoading2) {
+          this.$message({
+            message: "请回答完毕后再次发送",
+            type: "warning"
+          });
+          return;
+        }
+        this.aitype = type
+        this.aiText = this.aiJson.aiTargetGet
+        this.aiText2 = this.aiJson.aiTarget2
+        this. aiCallBack= callback
       } else if (type == 'aiSearchFile'){
         if(this.fileSLoading) {
           this.$message({
@@ -15582,6 +15627,8 @@ ${msg} 以及##参考资料
         this.aitargetTextDetail(msg)
       } else if (this.aitype == "aitargetTextDetail2") {
         this.aitargetTextDetail2(msg)
+      } else if (this.aitype == "aitargetTextDetail3") {
+        this.aitargetTextDetail3(msg)
       } else if (this.aitype == 'aiSearchFile'){
         let messages = `NOTICE
 Role: 你是创建课程的老师,可以利用file_search的方式完整的去分析文件内容(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容),并生成需要的JSON数据。
@@ -19566,6 +19613,115 @@ Instruction: Based on the context, follow "Format example", write content.
 #Context
 ## 参考资料
 课程标题:${this.courseName}
+${sub.length ? '学科:' + sub.join(",") : ''}
+${mclass.length ? '面向年级:' + mclass.join(",") : ''}
+${this.teacherCourseText ? '课程摘要:' + this.teacherCourseText.replaceAll('#', " ").replaceAll('*', "").replaceAll('\n', "") : ''}
+${this.targetCourseText && this.aiCallBack == 2 ? '参考内容:'+this.targetCourseText : ''}
+
+## 要求
+${msg}
+
+${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参考内容>即可不用重新生成,让内容更具体化,更具体' : ''}`
+      let _uuid = uuidv4();
+      // let params = JSON.stringify({
+      //   // "model": "Chat",
+      //   model: 'gpt-3.5-turbo',
+      //   temperature: 0,
+      //   max_tokens: 4096,
+      //   top_p: 1,
+      //   frequency_penalty: 0,
+      //   presence_penalty: 0,
+      //   messages: [{
+      //     content: messages,
+      //     role: 'user'
+      //   }],
+      //   uid: _uuid,
+      //   mind_map_question: "",
+      // })
+      let params = {
+        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
+        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
+        session_name: _uuid,
+        userId: _this.userid,
+        uid: _uuid,
+        file_ids: fileid.length ? [...fileid] : '',
+      }
+      // let params = JSON.stringify({
+      //     message: {
+      //         anthropic_version: "bedrock-2023-05-31",
+      //         max_tokens: 4096,
+      //         temperature: 0,
+      //         top_p: 1,
+      //         messages:  [{
+      //             "role": "user",
+      //             "content": messages
+      //         }] , 
+      //     },
+      //     uid: _uuid,
+      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
+      // });
+      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
+      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat_new', params).then(function (response) {
+      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
+        console.log(response);
+        // let data = response.data.FunctionResponse
+        // if (data.choices && data.choices.length && data.choices[0].message) {
+        //   _this.courseText = data.choices[0].message.content
+        // }
+        if (converter(response.data.FunctionResponse.result) == converter("发送成功")) {
+        } else {
+          _this.$message.warning(response.data.FunctionResponse.result);
+        }
+
+      }).catch(function (error) {
+        _this.targetTextLoading2 = false
+        _this.ttargetTextLoading2 = false
+        console.log(error);
+      });
+      await _this.aitargetTextDetail2getAiContent(_uuid)
+    },
+    async aitargetTextDetail22(msg,msg2) {
+      let _this = this
+      
+      let fileid = [] // file-okF1PSRw4VYjRl81SykkxWSo 科学目标fileid  'file-okF1PSRw4VYjRl81SykkxWSo' 目标
+      _this.targetTextLoading2 = true
+      _this.ttargetTextLoading2 = true
+      let sub = []
+      if (_this.courseTypeId.length) {
+        for (var i = 0; i < _this.courseTypeId.length; i++) {
+          let _sid = _this.courseTypeId[i]
+          for (var j = 0; j < _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
+            if (_sid == _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
+              sub.push(_this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
+            }
+          }
+        }
+      }
+      let mclass = []
+      if (_this.courseTypeId.length) {
+        for (var i = 0; i < _this.courseTypeId.length; i++) {
+          let _sid = _this.courseTypeId[i]
+          for (var j = 0; j < _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
+            if (_sid == _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
+              mclass.push(_this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
+            }
+          }
+        }
+      }
+
+      let messages = `NOTICE
+Role: 你是创建课程的老师,内容以markdown形式出现(注:如果文件内容里面不包含需要检索的内容,就不引用文件内容)。
+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.
+
+#Context
+## 参考资料
+课程标题:${this.courseName}
+${sub.length ? '学科:' + sub.join(",") : ''}
+${mclass.length ? '面向年级:' + mclass.join(",") : ''}
+课程目标:${msg2}
+${this.teacherCourseText ? '课程摘要:' + this.teacherCourseText.replaceAll('#', " ").replaceAll('*', "").replaceAll('\n', "") : ''}
 ${this.targetCourseText && this.aiCallBack == 2 ? '参考内容:'+this.targetCourseText : ''}
 
 ## 要求
@@ -19675,6 +19831,101 @@ ${this.targetCourseText && this.aiCallBack == 2 ? '注意,优化原有的<参
         // this.$forceUpdate();
       };
     },
+    async aitargetTextDetail3(msg) {
+      let _this = this
+      
+      let fileid = ['file-okF1PSRw4VYjRl81SykkxWSo'] // file-okF1PSRw4VYjRl81SykkxWSo 科学目标fileid
+      _this.targetTextLoading2 = true
+      _this.ttargetTextLoading2 = true
+      let sub = []
+      if (_this.courseTypeId.length) {
+        for (var i = 0; i < _this.courseTypeId.length; i++) {
+          let _sid = _this.courseTypeId[i]
+          for (var j = 0; j < _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'].length; j++) {
+            if (_sid == _this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].id) {
+              sub.push(_this.CourseTypeJson['34629907-d02f-11ec-8c78-005056b86db5'][j].name)
+            }
+          }
+        }
+      }
+      let mclass = []
+      if (_this.courseTypeId.length) {
+        for (var i = 0; i < _this.courseTypeId.length; i++) {
+          let _sid = _this.courseTypeId[i]
+          for (var j = 0; j < _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'].length; j++) {
+            if (_sid == _this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].id) {
+              mclass.push(_this.CourseTypeJson['34628934-d02f-11ec-8c78-005056b86db5'][j].name)
+            }
+          }
+        }
+      }
+
+      let messages = `${msg}`
+      let _uuid = uuidv4();
+      // let params = JSON.stringify({
+      //   // "model": "Chat",
+      //   model: 'gpt-3.5-turbo',
+      //   temperature: 0,
+      //   max_tokens: 4096,
+      //   top_p: 1,
+      //   frequency_penalty: 0,
+      //   presence_penalty: 0,
+      //   messages: [{
+      //     content: messages,
+      //     role: 'user'
+      //   }],
+      //   uid: _uuid,
+      //   mind_map_question: "",
+      // })
+      let params = {
+        assistant_id: 'f8e1ebb2-2e0d-11ef-8bf4-12e77c4cb76b',
+        message: [{"type":"text", "text":messages.replaceAll('\n', " ").replaceAll('*', "")}],
+        session_name: _uuid,
+        userId: _this.userid,
+        uid: _uuid,
+        file_ids: fileid.length ? [...fileid] : '',
+      }
+      // let params = JSON.stringify({
+      //     message: {
+      //         anthropic_version: "bedrock-2023-05-31",
+      //         max_tokens: 4096,
+      //         temperature: 0,
+      //         top_p: 1,
+      //         messages:  [{
+      //             "role": "user",
+      //             "content": messages
+      //         }] , 
+      //     },
+      //     uid: _uuid,
+      //     model: "Claude 3 Sonnet" // Claude 3 Sonnet或者Claude 3 Haiku
+      // });
+      // _this.ajax.post('https://gpt4.cocorobo.cn/chat', params).then(function (response) {
+      _this.ajax.post('https://gpt4.cocorobo.cn/ai_agent_park_chat', params).then(function (response) {
+      // _this.ajax.post('https://claude3.cocorobo.cn/chat', params).then(function (response) {
+        console.log(response);
+        // let data = response.data.FunctionResponse
+        // if (data.choices && data.choices.length && data.choices[0].message) {
+        //   _this.courseText = data.choices[0].message.content
+        // }
+        console.log(response);
+        let data = response.data.FunctionResponse
+        // if (data.choices && data.choices.length && data.choices[0].message) {
+        //   console.log(data.choices[0].message.content);
+        //   _this.unitJson[0].chapterInfo[0].taskJson[_tindex2].eList = JSON.parse(data.choices[0].message.content)
+        //   _this.$forceUpdate()
+        // }
+        if (data.message) {
+          console.log('返回回来的目标:',data.message);
+          _this.aitargetTextDetail22(_this.aiJson.aiTarget2, data.message.replaceAll('#', " ").replaceAll('*', "").replaceAll('\n', ""))
+        
+        }
+        
+      }).catch(function (error) {
+        _this.targetTextLoading2 = false
+        _this.ttargetTextLoading2 = false
+        console.log(error);
+      });
+    },
     againEva(msg, i, k) {
       if(!this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].value || !this.unitJson[0].chapterInfo[0].taskJson[i].eList[k].detail){
         this.$message.error(`任务${i+1}的第${k+1}个评价完善信息后再生成细则`)
@@ -19995,6 +20246,14 @@ ${msg}
       this.isOutline = true
       this.isOutline2 = true
       this.courseTextBool = true
+      this.aiJson.teacherDetail2 = this.aiJson.teacherDetail2 ? this.aiJson.teacherDetail2 : '请根据<任务名>、<任务描述>,<课程简要描述>,为该任务设计详细的教案,教案需要包含该任务的教学目标,教学过程(包含分步骤的教师活动和学生活动,教师活动与学生活动应该一一对应),相关知识点的讲解,练习(练习需要包含示例答案)。'
+      this.aiJson.aiAbstract = this.aiJson.aiAbstract ? this.aiJson.aiAbstract : '从用户提供的教案资料(文件形式)中,自动总结教案摘要与教案的学科关键词(每个学科3个)。注意,在提取信息方面你绝对不能虚拟出不存在的东西。然后,你基于用户上传的教案,生成项目的驱动性问题和最终作品。'
+      this.aiJson.aiTarget = this.aiJson.aiTarget ? this.aiJson.aiTarget : '从用户提供的教案资料中,提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
+      this.aiJson.aiSearchFile = this.aiJson.aiSearchFile ? this.aiJson.aiSearchFile : '请根据<关键词>,从你的相应知识库去检索5个最相关的信息。'
+      this.aiJson.aiTarget2 = this.aiJson.aiTarget2 ? this.aiJson.aiTarget2 : '请根据课程标题<课程标题>,**从你的知识库去检索5个最相关的信息**,如果没有相关的信息,请你根据已有的知识,并参考#参考资料中的内容,生成本课程的教学目标。你仅需要输出与课程目标相关的内容。'
+      this.aiJson.aiTargetGet = this.aiJson.aiTargetGet ? this.aiJson.aiTargetGet : '从用户提供的教案资料(文件形式)中,自动提取出课程目标(如不存在课程目标则返回“未提取到目标”。注意,在提取信息方面你绝对不能虚拟出不存在的东西。'
+      this.aiJson.aiOutlineDetail2 = this.aiJson.aiOutlineDetail2 ? this.aiJson.aiOutlineDetail2 : '请参考#参考资料,重新生成该任务,生成内容需包含任务名,任务设计,评价标准。注意,你绝对不能重复已有其他任务,也不要输出其他内容'
+      this.aiJson.aiRateRule = '根据<评价维度>和<维度描述>,制定具体的评价细则。 具体的评价细则分为6级——0星,1星,2星,3星,4星,5星。'
     }
     this.loading = false;
     this.timer2 = setInterval(() => {

Неке датотеке нису приказане због велике количине промена