import json from string import Template import dotenv from app.models.gemini_caller import GeminiGenerator from app.core.type import Node from app.utils.prompt import EXTRACT_ENTITIES_PROMPT dotenv.load_dotenv() def extract_entities(text: str) -> list[Node]: try: gemini = GeminiGenerator() prompt = Template(EXTRACT_ENTITIES_PROMPT).substitute(ctext=text) entities = gemini.generate(prompt) entities = (json.loads(clean_text(entities.text)))["entities"] return [Node.map_json_to_node(entity) for entity in entities] except Exception as e: print(f"Error while extract knowledge entities: {str(e)}") return [] def clean_text(text: str): text = text.replace("```json", "").replace("```", "") return text