visuddhinanda 1 неделя назад
Родитель
Сommit
b1342ee469
1 измененных файлов с 29 добавлено и 14 удалено
  1. 29 14
      api-v12/app/Services/AITermService.php

+ 29 - 14
api-v12/app/Services/AITermService.php

@@ -8,7 +8,7 @@ use App\Services\OpenAIService;
 use App\Services\AIModelService;
 use App\Http\Resources\AiModelResource;
 use App\Http\Controllers\AuthController;
-
+use App\DTO\Search\SearchDataDTO;
 
 class AITermService
 {
@@ -22,25 +22,28 @@ class AITermService
     private $sysPrompt = <<<md
     请根据提供的文献搜素结果,撰写一个巴利术语的简体中文百科词条。
 
-    每个搜素结果包括一个id
-    类似 "id": "pali_para_202_1878"
-    请提取后面的两个数字拼接成引用链接
-    比如 "id": "pali_para_202_1878"
-    拼接后的引用链接为:{{para|id=202-1878|title=202-1878|style=reference}}
+    搜素结果是json数组
+    字段
+    - title(标题)
+    - content:(内容)
+    - path(章节路径)
+    - link(引用链接)
+
     要求:
     1. 参考维基百科的形式和结构
-    2. 所有观点必须标明巴利文出处,使用脚注格式[数字]
-    3. 直接引用巴利文原文时使用引号并斜体
+    2. 所有观点必须标明巴利文出处,使用我提供的link
+    3. 引用巴利文原文时使用引号并斜体
     4. 提供完整的参考文献列表
     5. 保持学术中立性和客观性
+    6. 请引用我提供的全部内容,不要有任何遗漏
 
     **观点引用标准格式:**
-    《文献中文名》在《章节中文名》中指出/解释/说明:"巴利文原文"(中文翻译及必要说明)。(引用链接)
+    《文献中文名》在《章节中文名》中指出/解释/说明:"巴利文原文"(中文翻译及必要说明)。(link引用链接)
 
     如果某个观点有多个出处,请分别列出巴利文引用链接。范例
-    《文献中文名》在《章节中文名》中指出/解释/说明:"巴利文原文"(中文翻译及必要说明)。(引用链接1)(引用链接2)
+    《文献中文名》在《章节中文名》中指出/解释/说明:"巴利文原文"(中文翻译及必要说明)。(link引用链接1)(link引用链接2)
     示例:
-    《疑惑度脱新注》在《染色学处注释》中指出:"Kiriyākiriyanti nivāsanapārupanato, kappassa anādānato kiriyākiriyaṃ"[9](穿着下衣、披上衣是作为,不采取如法措施是不作为,故为作为-不作为)。{{para|id=202-1878|title=202-1878|style=reference}}
+    《疑惑度脱新注》在《染色学处注释》中指出:"*Kiriyākiriyanti nivāsanapārupanato, kappassa anādānato kiriyākiriyaṃ*"[9](穿着下衣、披上衣是作为,不采取如法措施是不作为,故为作为-不作为)。{{para|id=202-1878|title=202-1878|style=reference}}
 
     词条结构应包括:
     - 标题(术语的巴利语、字面含义)
@@ -56,7 +59,7 @@ class AITermService
     - 使用Markdown格式
     - 标题层级清晰(#, ##, ###)
     - 直接输出百科正文,无需大标题
-    - 引用格式:《文献中文名》在《章节中文名》中 + 动词 + "巴利文" + [数字] + (中文)(引用链接)
+    - 引用格式:《文献中文名》在《章节中文名》中 + 动词 + "巴利文"  + (巴利文的文译文)(link引用链接)
     - 引用动词可用:指出、解释、说明、定义、描述、强调、阐述、论述等
     - 巴利文使用罗马转写
     - 关键术语首次出现时提供巴利文和中文对照
@@ -82,7 +85,8 @@ class AITermService
         $this->model = $this->modelService->getModelById($id);
         $this->modelToken = AuthController::getUserToken($id);
     }
-    private function query(string $word)
+
+    private function query(string $word): array
     {
         $search = app(OpenSearchService::class);
         // 组装搜索参数
@@ -91,7 +95,18 @@ class AITermService
             'pageSize'     => $this->pageSize,
         ];
         $result = $search->search($params);
-        return $result;
+
+        $dto = SearchDataDTO::fromArray($result);
+        $res = array();
+        foreach ($dto->hits->items as $key => $item) {
+            $res[] = [
+                'title' => $item->title,
+                'content' => $item->content,
+                'path' => $item->path,
+                'link' => $item->getParaLink()
+            ];
+        }
+        return $res;
     }
 
     public function create(string $id)