modelService = $model; $this->openAIService = $openAI; } public function setModel($id) { $this->model = $this->modelService->getModelById($id); $this->modelToken = AuthController::getUserToken($id); } private function query(string $word): array { $search = app(OpenSearchService::class); // 组装搜索参数 $params = [ 'query' => $word, 'pageSize' => $this->pageSize, ]; $result = $search->search($params); $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) { // 获取术语 $term = app(TermService::class)->getRaw($id); // 全文搜索 $query = $this->query($term->word); $res = json_encode($query, JSON_UNESCAPED_UNICODE); //LLM 生成 $response = $this->openAIService->setApiUrl($this->model['url']) ->setModel($this->model['model']) ->setApiKey($this->model['key']) ->setSystemPrompt($this->sysPrompt) ->setTemperature(0.5) ->setStream(false) ->send("# 文献搜素结果\n\n{$res}\n\n" . "# 巴利术语\n\n{$term->word}\n\n"); $content = $response['choices'][0]['message']['content'] ?? ''; return $content; } public function update() {} }