123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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
|