init. project

This commit is contained in:
2026-04-13 11:34:23 +08:00
commit c7c0659a85
202 changed files with 31196 additions and 0 deletions

View 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",
]