build_graph.py 2.2 KB

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