chengjie 2 months ago
parent
commit
3f1587c921
1 changed files with 99 additions and 4 deletions
  1. 99 4
      src/api/miaoguo/literacyController.js

+ 99 - 4
src/api/miaoguo/literacyController.js

@@ -128,18 +128,70 @@ export async function GetMiaoguoAISearch(ctx) {
128 128
             console.log("New Word");
129 129
             isNew=true;
130 130
             //如果是英文单词
131
-            if ((stringUtils.IsEnglish(param.Word)) || param.SearchType!="eng"){
131
+            if ((stringUtils.IsEnglish(param.Word)) || param.SearchType=="eng"){
132 132
             
133 133
             }
134 134
             //整句中是否有中文
135 135
             else if ((stringUtils.IsChineseSentence(param.Word)) && param.SearchType!="eng") {
136 136
             
137
+                //判断是否都是中文
138
+                if (stringUtils.IsChinese(param.Word)){
139
+                    let KaitiArr=[],BiShunArr=[];
140
+                    for(let i in param.Word){
141
+                        let sql="SELECT ID,Name,BiShunUrl,KaitiUrl FROM kylx365_db.HanziWord where Name='"+param.Word[i]+"' limit 1;";
142
+                        let list=await commonModel.RunSql({},sql);
143
+                        if (list && list.length>0){
144
+                            KaitiArr.push(list[0].KaitiUrl);
145
+                            BiShunArr.push(list[0].BiShunUrl);
146
+                        }
147
+                    }
148
+                    result={};
149
+                    result.CHN={};
150
+                    result.CHN.Hanzi=param.Word;
151
+                    result.CHN.KaitiArr=KaitiArr;
152
+                    result.CHN.BiShunArr2=BiShunArr;
153
+
154
+                    let result2=await getAiData(param.Word);
155
+                    let obj={};
156
+                    obj.pinyin=result2.pinyin;
157
+                    obj.explain=result2.explain;
158
+                    if (stringUtils.IsArray(obj.explain))
159
+                        obj.explain=obj.explain.join("");
160
+                    result.CHN.PinYin=[];
161
+                    result.CHN.PinYin.push(obj);
162
+                    result.CHN.TianKong=tiankongFun(param.Word,result2.pinyin);
163
+                    result.CHN.Synonym=result2.synonym;
164
+                    result.CHN.Antonym=result2.antonym;
165
+
166
+                    let eng={};
167
+                    eng.Word=param.Word;
168
+                    eng.Paraphrase={
169
+                        PartOfSpeech:"",
170
+                        ParaphraseList:result2.englishWord.join(","),
171
+                    }
172
+
173
+                    result.ENG=eng;
174
+                    
175
+                    let json=JSON.stringify(result);
176
+
177
+                    let sql3="INSERT INTO `MiaoguoLiteracy` SET ?;";
178
+                    //console.log(sql3);
179
+                    //console.log(json);
180
+                    obj={};
181
+                    obj.Word=param.Word;
182
+                    obj.SearchType='zici';
183
+                    obj.Author='';
184
+                    obj.ShiciUrl='';
185
+                    obj.JSONString=json;
186
+                    await commonModel.RunSql(obj,sql3);
187
+
188
+                    globalCache.set(cacheKey, result, config.BufferMemoryTimeHigh);
189
+                    console.log("缓存");
190
+                    result={"errcode": 10000, result: result};
191
+                }
137 192
             }
138 193
         }
139 194
     }
140
-
141
-    
142
-
143 195
     ctx.body = result;
144 196
 }
145 197
 
@@ -165,3 +217,46 @@ function getWordFrequency(id){
165 217
     }
166 218
     return result;
167 219
 }
220
+
221
+function tiankongFun(word,pinyin){
222
+    let TianKong = [];
223
+    if (word.length <= 4 && pinyin ) {
224
+        
225
+        var arrPinyin = pinyin.split(" ");
226
+        //console.log(arrPinyin);
227
+        for (var i = 0; i < word.length; i++) {
228
+            var str = stringUtils.ReplaceAllString(word,word[i],arrPinyin[i]);
229
+            //var str=param.Word.substring(0,i)+arrPinyin[i]+param.Word.substring(i+1);
230
+            TianKong.push(str);
231
+        }
232
+        TianKong= _.uniq(TianKong);
233
+    }
234
+    return TianKong;
235
+}
236
+
237
+async function getAiData(word){
238
+    let result={};
239
+    let content = {
240
+        "instruction": "生成词语“" + word + "”的相关信息。",
241
+        "output_format": {
242
+            "pinyin": "拼音(空格分隔)",
243
+            "explain": ["释义1", "释义2..."],
244
+            "synonym": ["近义词1", "近义词2..."],
245
+            "antonym": ["反义词1", "反义词2..."],
246
+            "englishWord": ["word1", "word2..."]
247
+        }
248
+    };
249
+    content=JSON.stringify(content);
250
+    //console.log(content);
251
+
252
+    let aiProvider="llama-4-maverick-17b-128e-instruct";
253
+    aiProvider="ali-qwen-plus-2025-07-14";
254
+    
255
+    //生成结果
256
+    result = await aiController.generateArticle(content, aiProvider);
257
+    
258
+    result=JSON.parse(result);
259
+    //console.log("result1:"+result);
260
+    
261
+    return result;
262
+}