in hugegraph-llm/src/hugegraph_llm/operators/llm_op/keyword_extract.py [0:0]
def run(self, context: Dict[str, Any]) -> Dict[str, Any]:
if self._query is None:
self._query = context.get("query")
assert self._query is not None, "No query for keywords extraction."
else:
context["query"] = self._query
if self._llm is None:
self._llm = LLMs().get_extract_llm()
assert isinstance(self._llm, BaseLLM), "Invalid LLM Object."
self._language = context.get("language", self._language).lower()
self._max_keywords = context.get("max_keywords", self._max_keywords)
prompt_run = f"{self._extract_template.format(question=self._query, max_keywords=self._max_keywords)}"
start_time = time.perf_counter()
response = self._llm.generate(prompt=prompt_run)
end_time = time.perf_counter()
log.debug("Keyword extraction time: %.2f seconds", end_time - start_time)
keywords = self._extract_keywords_from_response(
response=response, lowercase=False, start_token="KEYWORDS:"
)
keywords = {k.replace("'", "") for k in keywords}
context["keywords"] = list(keywords)
log.info("User Query: %s\nKeywords: %s", self._query, context["keywords"])
# extracting keywords & expanding synonyms increase the call count by 1
context["call_count"] = context.get("call_count", 0) + 1
return context