chengjie 4 月之前
父节点
当前提交
e8f2309b4e
共有 1 个文件被更改,包括 70 次插入38 次删除
  1. 70 38
      src/api/yjbdc/yjbdcController.js

+ 70 - 38
src/api/yjbdc/yjbdcController.js

@@ -188,46 +188,78 @@ export async function GenerateArticle(ctx) {
188 188
         if (words){
189 189
             
190 190
             const menuConfig=constantClass.GetYJBDCGenerateConfig();
191
-            let content = "将"+words+"这些单词生成一篇英文文章。要求"+
192
-            "[难度];"+
193
-            "文章类型是'"+articleStyle+"([类型])';"+
194
-            "要求提供丰富上下文线索、清晰的文章结构;"+
195
-            "文章单词数在200个左右,最多不能超过300个;"+
196
-            "文章按每句分成数组,且每句都有中文翻译[补充1];"+
197
-            "提供5道针对文章阅读理解的单项选择题,各有四个唯一选项,并提供答案;"+
198
-            "单项选择题和选项也要有中文翻译;"+
199
-            "必须确保用户提供的每个单词(除像'fuck'、'shit'等脏话外)至少在文章中出现一次,可以是原形或某种变形(第三人称单数、复数、过去式、过去分词、现在分词、比较级、最高级等等所有可能的变形形式)。比如用户输入'go',文章除了'go'以外,也可以生成像'goes'、'went'、'gone'、'going'等单词;"+
200
-            "内容格式为JSON,必须严格按照以下格式,不能有任何字段名错误或缺失:{"+
201
-            "  \"ArticleEnglish\":[\"<英文文章句子1>\",\"<英文文章句子2>\"...],"+
202
-            "  \"ArticleChinese\":[\"<中文翻译句子1>\",\"<中文翻译句子2>\"...],"+
203
-            "  \"Question\":[{"+
204
-            "    \"QuestionEnglish\":\"<英语题目1>\","+
205
-            "    \"QuestionChinese\":\"<题目1中文翻译>\","+
206
-            "    \"OptionsEnglish\":[\"A.<英语选项1>\",\"B.<英语选项2>\",\"C.<英语选项3>\",\"D.<英语选项4>\"],"+
207
-            "    \"OptionsChinese\":[\"A.<选项1中文翻译>\",\"B.<选项2中文翻译>\",\"C.<选项3中文翻译>\",\"D.<选项4中文翻译>\"],"+
208
-            "    \"Answer\":\"<答案>\""+
209
-            "  }...]"+
210
-            "}";
211 191
 
192
+            // let content = "将"+words+"这些单词生成一篇英文文章。要求"+
193
+            // "[难度];"+
194
+            // "文章类型是'"+articleStyle+"([类型])';"+
195
+            // "要求提供丰富上下文线索、清晰的文章结构;"+
196
+            // "文章单词数在200个左右,最多不能超过300个;"+
197
+            // "文章按每句分成数组,且每句都有中文翻译[补充1];"+
198
+            // "提供5道针对文章阅读理解的单项选择题,各有四个唯一选项,并提供答案;"+
199
+            // "单项选择题和选项也要有中文翻译;"+
200
+            // "必须确保用户提供的每个单词(除像'fuck'、'shit'等脏话外)至少在文章中出现一次,可以是原形或某种变形(第三人称单数、复数、过去式、过去分词、现在分词、比较级、最高级等等所有可能的变形形式)。比如用户输入'go',文章除了'go'以外,也可以生成像'goes'、'went'、'gone'、'going'等单词;"+
201
+            // "内容格式为JSON,必须严格按照以下格式,不能有任何字段名错误或缺失:{"+
202
+            // "  \"ArticleEnglish\":[\"<英文文章句子1>\",\"<英文文章句子2>\"...],"+
203
+            // "  \"ArticleChinese\":[\"<中文翻译句子1>\",\"<中文翻译句子2>\"...],"+
204
+            // "  \"Question\":[{"+
205
+            // "    \"QuestionEnglish\":\"<英语题目1>\","+
206
+            // "    \"QuestionChinese\":\"<题目1中文翻译>\","+
207
+            // "    \"OptionsEnglish\":[\"A.<英语选项1>\",\"B.<英语选项2>\",\"C.<英语选项3>\",\"D.<英语选项4>\"],"+
208
+            // "    \"OptionsChinese\":[\"A.<选项1中文翻译>\",\"B.<选项2中文翻译>\",\"C.<选项3中文翻译>\",\"D.<选项4中文翻译>\"],"+
209
+            // "    \"Answer\":\"<答案>\""+
210
+            // "  }...]"+
211
+            // "}";
212
+
213
+            // if (!params.Level || params.Level=="" || params.Level==undefined || params.Level>="4"){
214
+            //     params.Level="0";
215
+            // }
216
+            // content = content.replace("[难度]",menuConfig.Level[Number(params.Level)].Content);
217
+            
218
+            
219
+            // for(let i=0;i<menuConfig.ArticleStyle.length;i++){
220
+            //     if (menuConfig.ArticleStyle[i].Name==articleStyle){
221
+            //         content = content.replace("[类型]",menuConfig.ArticleStyle[i].Content);
222
+            //         break;
223
+            //     }
224
+            // }
225
+            
226
+            //console.log("content:"+content);
227
+
228
+            let level="";
212 229
             if (!params.Level || params.Level=="" || params.Level==undefined || params.Level>="4"){
213 230
                 params.Level="0";
231
+                //level="A2";
214 232
             }
215
-            content = content.replace("[难度]",menuConfig.Level[Number(params.Level)].Content);
233
+            // if (params.Level=="1")
234
+            //     level="B1";
235
+            // if (params.Level=="2")
236
+            //     level="B2";
237
+            // if (params.Level=="3")
238
+            //     level="C1";
239
+
240
+            level=menuConfig.Level[Number(params.Level)].Content;
216 241
             
217
-            // if (articleStyle=="随机" || articleStyle=="任意") {
218
-            //     // 获取ARTICLE_STYLE对象的所有键(文章类型)
219
-            //     const articleTypes = Object.keys(ARTICLE_STYLE);
220
-            //     // 随机选择一个文章类型
221
-            //     const randomIndex = stringUtils.Random(0, articleTypes.length-1);
222
-            //     articleStyle = articleTypes[randomIndex];
223
-            // }
224
-            for(let i=0;i<menuConfig.ArticleStyle.length;i++){
225
-                if (menuConfig.ArticleStyle[i].Name==articleStyle){
226
-                    content = content.replace("[类型]",menuConfig.ArticleStyle[i].Content);
227
-                    break;
242
+            let content={
243
+                "instruction": "用单词("+words+")生成"+level+"难度童话故事。要求:",
244
+                "requirements": [
245
+                    "200-300词,要求:"+articleStyle+"([类型])",
246
+                    "每句分数组提供中英双语",
247
+                    "所有单词至少出现一次(允许变形)",
248
+                    "生成5道四选一阅读题(含答案)"
249
+                ],
250
+                "output_format": {
251
+                    "ArticleEnglish": ["句子1", "句子2..."],
252
+                    "ArticleChinese": ["翻译1", "翻译2..."],
253
+                    "Question": [{
254
+                    "QuestionEnglish": "题干",
255
+                    "QuestionChinese": "题干翻译",
256
+                    "OptionsEnglish": ["A.选项", "B.选项", "C.选项", "D.选项"],
257
+                    "OptionsChinese": ["A.译", "B.译", "C.译", "D.译"],
258
+                    "Answer": "正确选项字母"
259
+                    }]
228 260
                 }
229
-            }
230
-            //console.log("content:"+content);
261
+            };
262
+            content=JSON.stringify(content);
231 263
             
232 264
             // 从请求参数中获取AI提供者,如果没有指定则使用默认值
233 265
             let aiProvider = '';
@@ -247,10 +279,10 @@ export async function GenerateArticle(ctx) {
247 279
             }
248 280
 
249 281
 
250
-            if (aiProvider.indexOf("llama")>=0)
251
-                content=content.replace("[补充1]",",如果生成的JSON中有ArticleEnglishCorrected和ArticleChineseCorrected,直接覆盖原有的ArticleEnglish和ArticleChinese,不要再生成。");
252
-            else
253
-                content=content.replace("[补充1]","");
282
+            // if (aiProvider.indexOf("llama")>=0)
283
+            //     content=content.replace("[补充1]",",如果生成的JSON中有ArticleEnglishCorrected和ArticleChineseCorrected,直接覆盖原有的ArticleEnglish和ArticleChinese,不要再生成。");
284
+            // else
285
+            //     content=content.replace("[补充1]","");
254 286
             
255 287
             
256 288
             try {