build.test.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. import commonModel from '../model/commonModel.js';
  2. import fs from 'fs';
  3. import { stringUtils } from '../util/stringClass.js';
  4. import aiController from '../api/yjbdc/aiController.js';
  5. async function runScript(){
  6. try {
  7. //按照高频单词的使用频率排序,列出所有单词
  8. const sql="select * from Words where BookID=110 and (ExampleSentence is null or ExampleSentence='') order by ID;"
  9. let list = await commonModel.RunSql(null,sql);
  10. let count=list.length;
  11. const start=0;
  12. // 添加延时函数,确保每分钟只发送9次请求(约每6.67秒一次请求)
  13. const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));
  14. const requestDelay = 7000; // 7秒,确保每分钟最多9次请求
  15. for(let i=start;i<count;i++){
  16. let item=list[i];
  17. //获得单词
  18. const word=item.Word;
  19. let content={
  20. "instruction": "用单词"+word+"生成例句,中国学生学习英文使用",
  21. "requirements": [
  22. "判断单词在CEFR的最低级别,比如experience是B1",
  23. "用单词最常用的含义生成最低级别到C1各两句例句,比如experience生成B1、B2、C1各两句",
  24. "单词允许类似过去式、复数等变形",
  25. "提供例句翻译",
  26. "格式要求是JSON格式,完全遵循output_format,另外生成不要有重复“\"”",
  27. "如果有多个方案,直接给最好的"
  28. ],
  29. "output_format":{
  30. "word":"单词",
  31. "CEFR_Level":"A1",
  32. "Sentences": [
  33. {
  34. "Sentence":"句子1",
  35. "Translate": "翻译1",
  36. "Level": "A1",
  37. },{
  38. "Sentence":"句子2",
  39. "Translate": "翻译2",
  40. "Level": "A2",
  41. },
  42. ]
  43. }
  44. };
  45. content=JSON.stringify(content);
  46. const aiProvider="llama-4-maverick-17b-128e-instruct";
  47. //生成例句
  48. let result = await aiController.generateArticle(content, aiProvider);
  49. result=result.replace("\"\"CEFR_Level","\"CEFR_Level");
  50. result=result.replace("CEFR_Level\"\"","CEFR_Level\"");
  51. console.log(result);
  52. let sql2="update Words set ExampleSentence=? where ID="+item.ID+";";
  53. await commonModel.RunSql(result,sql2);
  54. console.log( i +"/"+ list.length);
  55. // 在每次请求后添加延时,除非是最后一个请求
  56. if (i < count - 1) {
  57. console.log(`等待 ${requestDelay/1000} 秒后继续下一个请求...`);
  58. await delay(requestDelay);
  59. }
  60. }
  61. console.log("完成");
  62. } catch (error) {
  63. console.error('Error executing script:', error);
  64. }
  65. }
  66. // 处理Promise并添加错误捕获
  67. runScript().catch(error => {
  68. console.error('Error in runScript:', error);
  69. });
  70. ////批量处理加资料的数据
  71. // async function runScript(){
  72. // try {
  73. // const sql="select ID from MiaoguoLiteracy order by ID;"
  74. // let list = await commonModel.RunSql(null,sql);
  75. // for(let i=0;i<list.length;i++){
  76. // if (i % 1000 == 0)
  77. // console.log("i:"+i+" ID:"+list[i].ID
  78. // let item =await commonModel.RunSql(null,"select * from MiaoguoLiteracy where ID="+list[i].ID+";"
  79. // let json;
  80. // try {
  81. // json = JSON.parse(item[0].JSONString
  82. // } catch (parseError) {
  83. // console.error('JSON Parse Error at ID:', list[i].ID);
  84. // console.error('Error details:', parseError);
  85. // continue;
  86. // }
  87. // if (json && json.CHN && json.CHN.BiShunArr && json.CHN.BiShunArr.length>0){
  88. // console.log(i+" "+json.CHN.HanZi);
  89. // delete json.CHN.BiShunArr;
  90. // let obj={};
  91. // obj.ID=list[i].ID;
  92. // obj.JSONString=JSON.stringify(json);
  93. // await commonModel.RunSql(obj,"update MiaoguoLiteracy set ? where ID="+list[i].ID+";"
  94. // }
  95. // //console.log(json);
  96. // //console.log(item.length);
  97. // }
  98. // console.log("完成"
  99. // } catch (error) {
  100. // console.error('Error executing script:', error);
  101. // }
  102. // }