import json def extract_entity_and_graph(text: str) -> str: """ 通用知识抽取 Prompt 生成器。 从任意输入文本中提取实体、关系和概念信息。 输出 JSON 格式,兼容大模型调用,不会出现格式冲突或转义问题。 """ safe_text = json.dumps(text, ensure_ascii=False) prompt = f""" ### 角色设定 你是一名专业的知识抽取助手,请从输入的文本中识别出关键信息并输出结构化结果。 ### 输入文本: {safe_text} ### 抽取目标 请提取以下三类信息: 1. **entities(实体)** - 指文本中出现的具体对象、人物、机构、地点、技术、产品、事件等。 - 每个实体需包含:名称、类型、别名、描述 - 只需要获取主要,关键内容包含的实体,知识中的示例,样例等补充信息不需要提取实体 2. **relations(关系)** - 指实体之间的语义联系。 - 常见关系类型包括(不限于):属于、隶属、依赖、控制、合作、位于、应用于、开发、影响、由...定义、用于。 - 每条关系需包含:source、target、relation_type、evidence、confidence。 3. **concepts(概念)** - 指文本涉及的主题、核心技术、思想、学科领域、话题关键词等。 ### 输出格式 请严格输出以下 JSON 结构,禁止输出任何解释性文字、注释或 Markdown 代码块。 {{ "entities": [ {{ "name": "string", "type": "string", "aliases": ["string"], "description": "string" }} ], "relations": [ {{ "source": "string", "target": "string", "relation_type": "string", "evidence": "string", "confidence": 0.0 }} ], "concepts": ["string"] }} ### 输出规则 1. 严格输出合法 JSON 格式,可直接解析; 2. 所有字段必须存在,即使为空数组; 3. 若未检测到任何内容,请输出: {{ "entities": [], "relations": [], "concepts": [] }}; 4. `confidence` 为 0.0 ~ 1.0 之间的小数; 5. 禁止推理未出现在文本中的实体或关系; 6. 若出现模糊信息,请保持描述中立; 7. 输出中不允许包含解释性文字、注释、示例或 Markdown。 """ return prompt