Prompt Advance 分析文档(中文版)
概述
prompt_advance.py 包含用于时空关系抽取的高级提示词模板,针对军事/情报文本。主要关注三类任务:
- task_1_co_occurrence:同一时间/地点共现的实体(≥2 个实体)。
- task_2_location_chronicle:单一地点跨多个时间的实体时间线(≥2 个时间点)。
- task_3_spatial_distribution:单一时间快照下多地点的实体分布(≥2 个地点)。
核心原则:
- 仅提取文本中明确信息(禁止推断/猜测)。
- 时间/地点/实体名称使用原文表述。
- 时间:ISO 8601 格式(例如
2024-08-01T09:00:00)。 - 输出:严格 JSON,无关系时为空数组
[]。
提示词版本:1.0 (2026-01-09)。
提示词类型:定义与区别
| 类型 | 定义 | 关键机制 | 与其他类型的区别 | 示例输出结构 |
|---|---|---|---|---|
| Few-shot 示例 | 6 个精选示例覆盖所有 3 类任务。每例包含 text、thinking(分析步骤)、result(JSON)。 |
通过示例的上下文学习。 | 其他提示词的基础;无独立推理——通过示范指导模型。 | 用于 ReAct/CoT;例如仁爱礁共现。 |
| ReAct | 推理 + 行动循环,确保抽取准确。步骤:1. 思考(识别),2. 行动(抽取),3. 验证,4. 输出。 | 迭代:思考 → 行动 → 验证 → 输出。嵌入 few-shot。 | 动态循环 vs. 线性(CoT)或并行(Self-Consistency)。适合复杂推理。 | reasoning 对象 + 3 类任务数组。 |
| 思维链 (CoT) | 逐步分解(7 步:时间/地点/实体提取 → 分析 → 验证)。 | 线性推理链。嵌入 few-shot。 | 详细顺序步骤 vs. 循环(ReAct)或多角度(Self-Consistency)。最佳透明推理。 | analysis 对象(步骤细节) + 3 类任务数组。 |
| 自一致性 (Self-Consistency) | 多角度分析(时间/空间/实体/关系)→ 共识。 | 并行视角 + 投票。无 few-shot。 | 通过一致性降低错误 vs. 单路径(ReAct/CoT)。追求可靠性。 | 4 个角度对象 + final_consensus(3 类任务)。 |
| 多阶段 | 4 个顺序阶段:1. 时间/地点,2. 实体,3. 关系,4. 验证。 | 管道:一阶段输出喂入下一阶段。 | 模块化/可链式 vs. 整体提示词。适合结构化迭代 LLM 调用。 | 阶段特定 JSON,最终验证 3 类任务。 |
使用场景:
- Few-shot:嵌入其他提示词提供示例。
- ReAct:需验证循环的复杂文本。
- CoT:可解释的逐步分析。
- Self-Consistency:高准确性共识(多次运行)。
- 多阶段:大型文本拆分成 API 调用。
使用说明(“说明书”)
1. 准备
import prompt_advance # 假设文件作为模块导入
2. 辅助函数
format_few_shot_examples()→ 6 个示例的格式化字符串。get_react_prompt(text: str) → str→ 完整 ReAct 提示词(含示例)。get_cot_prompt(text: str) → str→ 完整 CoT 提示词(含示例)。get_self_consistency_prompt(text: str) → str→ 自一致性提示词。get_staged_prompts(text: str) → Dict[str, str]→ 4 个阶段提示词字典(注意:阶段 2-4 需要前阶段输出作为{time_location_info}等)。
3. 使用流程
通用流程
- 准备
text(输入句子/段落)。 - 选择提示类型 → 通过函数获取提示词。
- 送入 LLM(例如 Grok/DeepSeek)→ 解析 JSON 输出。
- 验证:检查 ISO 时间、原文名称、任务标准。
- 多运行聚合(例如 Self-Consistency)。
类型特定
ReAct/CoT:
prompt = prompt_advance.get_react_prompt("您的文本")
# 送入 LLM,预期 JSON 含 reasoning + 任务
Self-Consistency:
prompt = prompt_advance.get_self_consistency_prompt("您的文本")
# 运行 3-5 次,取 `final_consensus` 多数。
多阶段:
stages = prompt_advance.get_staged_prompts("您的文本")
# 阶段 1 → LLM → time_loc = 输出
# 阶段 2: stages['stage2'].format(time_location_info=json.dumps(time_loc), text="...")
# 重复 3-4,链式输出。
提示
- LLM 参数:多样性用高温度 (0.7+)(Self-Consistency);精确用低 (0.1)。
- 错误处理:非 JSON 重试;验证 schema。
- 批量:嵌入 queue_manager.py/main.py 处理。
- 示例:查看
FEW_SHOT_EXAMPLES处理边缘情况(单/多地点/时间)。
提示词模板总结
- 全部强制纯 JSON 输出(无 Markdown)。
- 嵌入任务定义/判断标准。
- Few-shot 用于 ReAct/CoT,提升零样本 → 少样本效果。
版本说明
- v1.0:Few-shot + ReAct/CoT/Self-Consistency/多阶段。
- 原则:仅基于原文,无幻觉。
生成时间:2026-02-04
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com