init. project
This commit is contained in:
305
rag-web-ui/backend/nano_graphrag/prompt.py
Normal file
305
rag-web-ui/backend/nano_graphrag/prompt.py
Normal file
@@ -0,0 +1,305 @@
|
||||
"""
|
||||
GraphRAG core prompts (Chinese, aerospace-oriented).
|
||||
"""
|
||||
|
||||
GRAPH_FIELD_SEP = "<SEP>"
|
||||
PROMPTS = {}
|
||||
|
||||
PROMPTS[
|
||||
"claim_extraction"
|
||||
] = """-任务定位-
|
||||
你是航天知识情报分析助手,负责从文本中抽取实体相关的主张/断言(claim)。
|
||||
|
||||
-目标-
|
||||
给定输入文本、实体约束和主张说明,抽取满足条件的实体及其对应主张,结果必须可溯源。
|
||||
|
||||
-执行步骤-
|
||||
1. 先识别满足实体约束的命名实体。实体约束可能是实体名称列表,也可能是实体类型列表。
|
||||
2. 对步骤1中的每个实体,抽取其作为主语的主张。每条主张需输出:
|
||||
- Subject: 主张主体实体名(大写;必须来自步骤1)
|
||||
- Object: 客体实体名(大写;未知时使用 **NONE**)
|
||||
- Claim Type: 主张类型(大写;应可复用)
|
||||
- Claim Status: **TRUE**、**FALSE** 或 **SUSPECTED**
|
||||
- Claim Description: 说明主张的依据、逻辑和关键证据
|
||||
- Claim Date: 起止时间(ISO-8601);未知时为 **NONE**
|
||||
- Claim Source Text: 与主张直接相关的原文引文(尽量完整)
|
||||
|
||||
格式要求:
|
||||
(<subject_entity>{tuple_delimiter}<object_entity>{tuple_delimiter}<claim_type>{tuple_delimiter}<claim_status>{tuple_delimiter}<claim_start_date>{tuple_delimiter}<claim_end_date>{tuple_delimiter}<claim_description>{tuple_delimiter}<claim_source>)
|
||||
|
||||
3. 使用 **{record_delimiter}** 连接所有记录。
|
||||
4. 结束时输出 {completion_delimiter}。
|
||||
|
||||
-约束-
|
||||
- 仅基于输入文本,不得编造。
|
||||
- 航天语境优先(如航天器、推进系统、姿态控制、任务阶段、地面系统、试验事件、故障模式等)。
|
||||
|
||||
-输入-
|
||||
Entity specification: {entity_specs}
|
||||
Claim description: {claim_description}
|
||||
Text: {input_text}
|
||||
Output: """
|
||||
|
||||
PROMPTS[
|
||||
"community_report"
|
||||
] = """你是航天领域知识图谱分析助手,负责为一个社区(community)生成结构化研判报告。
|
||||
|
||||
# 目标
|
||||
根据给定的实体、关系和可选主张,输出可用于技术评审与任务决策的社区报告。
|
||||
|
||||
# 报告结构
|
||||
必须返回 JSON 字符串,结构如下:
|
||||
{
|
||||
"title": <标题>,
|
||||
"summary": <执行摘要>,
|
||||
"rating": <0-10 浮点评分>,
|
||||
"rating_explanation": <评分说明>,
|
||||
"findings": [
|
||||
{
|
||||
"summary": <要点小结>,
|
||||
"explanation": <详细说明>
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
# 字段要求
|
||||
- title: 简洁且具体,尽量包含代表性实体。
|
||||
- summary: 说明社区整体结构、核心实体、关键关系与主要风险/价值。
|
||||
- rating: 社区影响度/风险度评分(0-10)。
|
||||
- rating_explanation: 单句说明评分依据。
|
||||
- findings: 5-10 条关键发现,覆盖技术链路、任务影响、可靠性风险、协同关系等。
|
||||
|
||||
# 领域要求(航天)
|
||||
优先关注以下维度:
|
||||
- 任务阶段:论证、研制、总装、测试、发射、入轨、在轨运行、回收/退役
|
||||
- 系统层级:航天器、有效载荷、推进系统、姿态控制、测控通信、地面系统
|
||||
- 关键指标:推力、比冲、功率、带宽、精度、寿命、可靠性、故障率
|
||||
- 风险与依赖:单点故障、接口依赖、时序耦合、供应链与试验验证缺口
|
||||
|
||||
# 证据约束
|
||||
- 仅使用输入中可证据化信息。
|
||||
- 无证据内容不得写入。
|
||||
- 若信息不足,应明确指出不确定性与缺失点。
|
||||
|
||||
# 输入
|
||||
Text:
|
||||
```
|
||||
{input_text}
|
||||
```
|
||||
|
||||
Output:
|
||||
"""
|
||||
|
||||
PROMPTS[
|
||||
"entity_extraction"
|
||||
] = """-任务目标-
|
||||
给定文本与实体类型列表,识别所有相关实体,并抽取实体间“明确存在”的关系。
|
||||
|
||||
-实体类型约束-
|
||||
- entity_type 必须来自给定集合:[{entity_types}]
|
||||
- 若无法确定,使用最接近类型,不可臆造新类型
|
||||
|
||||
-关系类型约束-
|
||||
关系描述必须以“关系类型=<类型>;依据=<说明>”开头。
|
||||
关系类型从以下集合中选择:
|
||||
[组成, 隶属, 控制, 被控制, 供能, 支撑, 测量, 感知, 执行, 通信, 影响, 制约, 因果, 时序前后, 协同, 风险关联, 其他]
|
||||
|
||||
-执行步骤-
|
||||
1. 抽取实体。每个实体输出:
|
||||
- entity_name: 实体名(保留原文专有名词;必要时标准化)
|
||||
- entity_type: 实体类型(必须在给定集合中)
|
||||
- entity_description: 面向航天任务语境的实体描述(属性、职责、行为)
|
||||
|
||||
实体格式:
|
||||
("entity"{tuple_delimiter}<entity_name>{tuple_delimiter}<entity_type>{tuple_delimiter}<entity_description>)
|
||||
|
||||
2. 在步骤1实体中,抽取“证据充分且语义明确”的关系对(source_entity, target_entity)。
|
||||
每条关系输出:
|
||||
- source_entity
|
||||
- target_entity
|
||||
- relationship_description: 必须以“关系类型=<类型>;依据=<说明>”开头
|
||||
- relationship_strength: 1-10 数值,表示关系强度
|
||||
|
||||
关系格式:
|
||||
("relationship"{tuple_delimiter}<source_entity>{tuple_delimiter}<target_entity>{tuple_delimiter}<relationship_description>{tuple_delimiter}<relationship_strength>)
|
||||
|
||||
3. 结果使用 **{record_delimiter}** 拼接。
|
||||
4. 结束时输出 {completion_delimiter}。
|
||||
|
||||
-质量规则-
|
||||
- 只抽取文本中可直接支持的实体和关系。
|
||||
- 不输出模糊、猜测或无依据关系。
|
||||
- 对航天语义优先:航天器、分系统、任务阶段、参数指标、故障模式、试验事件。
|
||||
|
||||
-输入-
|
||||
Entity_types: {entity_types}
|
||||
Text: {input_text}
|
||||
Output:
|
||||
"""
|
||||
|
||||
PROMPTS[
|
||||
"summarize_entity_descriptions"
|
||||
] = """你是航天知识库整理助手。
|
||||
给定一个或两个实体名称,以及若干描述片段,请合并为一段一致、完整、可复用的摘要。
|
||||
|
||||
要求:
|
||||
- 覆盖所有有效信息
|
||||
- 若描述冲突,给出最一致、最保守的综合结论
|
||||
- 使用第三人称
|
||||
- 保留实体名,避免指代不清
|
||||
- 优先保留任务阶段、技术指标、系统依赖和风险信息
|
||||
|
||||
#######
|
||||
-输入数据-
|
||||
Entities: {entity_name}
|
||||
Description List: {description_list}
|
||||
#######
|
||||
Output:
|
||||
"""
|
||||
|
||||
PROMPTS[
|
||||
"entiti_continue_extraction"
|
||||
] = """上一轮可能遗漏了实体或关系。请仅补充遗漏项,严格沿用既定输出格式,不要重复已输出记录:"""
|
||||
|
||||
PROMPTS[
|
||||
"entiti_if_loop_extraction"
|
||||
] = """请判断是否仍有遗漏实体或关系。仅回答 YES 或 NO。"""
|
||||
|
||||
PROMPTS["DEFAULT_ENTITY_TYPES"] = [
|
||||
"航天器",
|
||||
"任务",
|
||||
"任务阶段",
|
||||
"有效载荷",
|
||||
"推进系统",
|
||||
"姿态控制系统",
|
||||
"测控通信系统",
|
||||
"电源系统",
|
||||
"热控系统",
|
||||
"结构机构",
|
||||
"传感器",
|
||||
"执行机构",
|
||||
"地面系统",
|
||||
"组织机构",
|
||||
"试验事件",
|
||||
"故障模式",
|
||||
"参数指标",
|
||||
"轨道",
|
||||
"地点",
|
||||
"时间",
|
||||
]
|
||||
PROMPTS["DEFAULT_TUPLE_DELIMITER"] = "<|>"
|
||||
PROMPTS["DEFAULT_RECORD_DELIMITER"] = "##"
|
||||
PROMPTS["DEFAULT_COMPLETION_DELIMITER"] = "<|COMPLETE|>"
|
||||
|
||||
PROMPTS[
|
||||
"local_rag_response"
|
||||
] = """---角色---
|
||||
你是航天领域图谱问答助手,擅长基于局部子图进行多跳推理。
|
||||
|
||||
---任务---
|
||||
根据输入的数据表(实体、关系、证据片段)回答用户问题。
|
||||
|
||||
---回答要求---
|
||||
1. 先给结论,再给推理链路。
|
||||
2. 推理链路至少包含:
|
||||
- 关键实体
|
||||
- 关键关系
|
||||
- 中间推断
|
||||
- 最终结论
|
||||
3. 若证据不足,明确说明“证据不足以得出结论”。
|
||||
4. 严禁编造。
|
||||
5. 使用中文、专业且简洁。
|
||||
|
||||
---目标长度与格式---
|
||||
{response_type}
|
||||
|
||||
---输入数据表---
|
||||
{context_data}
|
||||
|
||||
---输出格式建议---
|
||||
- 结论
|
||||
- 推理链路
|
||||
- 证据与不确定性
|
||||
"""
|
||||
|
||||
PROMPTS[
|
||||
"global_map_rag_points"
|
||||
] = """---角色---
|
||||
你是航天知识全局研判助手,负责从社区级信息中提炼关键观点。
|
||||
|
||||
---任务---
|
||||
根据输入数据表,输出一组可用于后续全局汇总的关键点。
|
||||
|
||||
---输出要求---
|
||||
- 必须输出 JSON:
|
||||
{
|
||||
"points": [
|
||||
{"description": "观点描述", "score": 0-100整数}
|
||||
]
|
||||
}
|
||||
- description: 观点需可证据化,优先覆盖跨系统影响、任务阶段耦合、技术风险和性能趋势。
|
||||
- score: 对回答用户问题的重要性分值。
|
||||
- 若无法回答,输出 1 条 score=0 且明确说明信息不足。
|
||||
- 仅使用输入证据,不得编造。
|
||||
|
||||
---输入数据表---
|
||||
{context_data}
|
||||
"""
|
||||
|
||||
PROMPTS[
|
||||
"global_reduce_rag_response"
|
||||
] = """---角色---
|
||||
你是航天领域总师级分析助手,负责融合多位分析员报告并给出全局结论。
|
||||
|
||||
---任务---
|
||||
根据按重要性降序排列的分析员报告,输出面向决策的综合回答。
|
||||
|
||||
---要求---
|
||||
1. 先给总体结论,再给分项分析(趋势、共性风险、关键差异、建议动作)。
|
||||
2. 报告融合时去重、去噪,保留高证据密度信息。
|
||||
3. 必须指出不确定性与信息缺口。
|
||||
4. 仅基于输入报告,不得编造。
|
||||
5. 使用中文,风格专业、严谨。
|
||||
|
||||
---目标长度与格式---
|
||||
{response_type}
|
||||
|
||||
---分析员报告---
|
||||
{report_data}
|
||||
"""
|
||||
|
||||
PROMPTS[
|
||||
"naive_rag_response"
|
||||
] = """你是航天知识问答助手。
|
||||
下面是可用知识:
|
||||
{content_data}
|
||||
---
|
||||
请基于上述知识回答用户问题,要求:
|
||||
- 回答准确、简洁、专业
|
||||
- 若信息不足,明确说明缺失点
|
||||
- 不得编造
|
||||
---目标长度与格式---
|
||||
{response_type}
|
||||
"""
|
||||
|
||||
PROMPTS["fail_response"] = "抱歉,当前无法基于现有信息回答该问题。"
|
||||
|
||||
PROMPTS["process_tickers"] = ["-", "\\", "|", "/"]
|
||||
|
||||
PROMPTS["default_text_separator"] = [
|
||||
"\n\n",
|
||||
"\r\n\r\n",
|
||||
"\n",
|
||||
"\r\n",
|
||||
"。",
|
||||
".",
|
||||
".",
|
||||
"!",
|
||||
"!",
|
||||
"?",
|
||||
"?",
|
||||
" ",
|
||||
"\t",
|
||||
"\u3000",
|
||||
"\u200b",
|
||||
]
|
||||
Reference in New Issue
Block a user