|
|
@@ -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)
|