This commit is contained in:
2025-11-07 09:05:40 +08:00
parent 95ad16945d
commit 3229255f9a

View File

@@ -0,0 +1,517 @@
"""
提示模板 - 定义所有LLM交互的提示模板
"""
from langchain_core.prompts import ChatPromptTemplate
class PromptTemplates:
"""提示模板集合"""
@staticmethod
def get_structure_analysis_prompt() -> ChatPromptTemplate:
"""文档结构分析提示"""
return ChatPromptTemplate([
("human", """
## 任务目标
基于提供的文档内容,执行结构化信息提取,生成标准化的文档元数据。
## 输入参数
**项目基本信息:**
- 项目主题:{project_topic}
- 应用场景:{project_scenario}
- 具体要求:{project_requirements}
**目标受众信息:**
- 受众类型:{target_audience}
- 自定义受众:{custom_audience}
**风格要求:**
- PPT风格{ppt_style}
- 自定义风格提示:{custom_style_prompt}
## 输入文档
{content}
## 核心约束条件
1. **源材料依赖原则**:所有提取信息必须基于上述文档内容,可以理解和转化表达,但不得添加文档外信息
2. **理解转化原则**:允许对源材料内容进行理解、归纳和专业化表达,但必须忠实于原意
3. **数据准确原则**:定量数据(数字、百分比、统计值等)必须保持绝对准确,不得修改或估算
## 提取字段规范
请按以下规范提取信息并输出JSON格式
### 必需字段
- **title** (string|null): 文档标题仅当原文明确包含标题时提取否则设为null
- **type** (string): 文档类型,基于内容特征判断(学术论文/技术报告/商业文档/教程/其他)
- **sections** (array): 章节标题列表,仅提取原文中明确的章节标题,无章节时设为空数组
- **key_concepts** (array): 关键概念列表,仅提取原文中明确提及的专业术语和核心概念
- **language** (string): 文档原始语言标识
- **complexity** (string): 内容复杂度评级(简单/中等/复杂),基于实际内容难度
- **key_data** (array): 关键数据集合,仅提取原文中的具体数值、百分比、统计指标
- **main_conclusions** (array): 主要结论集合,仅提取原文中明确表述的结论性陈述
## 提取执行标准
- **数据完整性**key_data必须为原文中实际出现的精确数值保持绝对准确
- **结论理解性**main_conclusions基于原文结论进行理解和专业化表达保持核心观点一致
- **结构优化性**sections可以对原文章节进行合理整理和专业化表述保持逻辑结构
- **概念专业性**key_concepts基于原文术语可使用更专业和标准的表述方式
## 输出格式示例
```json
{{
"title": "深度学习在自然语言处理中的应用",
"type": "学术论文",
"sections": ["摘要", "引言", "相关工作", "方法论", "实验结果", "结论"],
"key_concepts": ["深度学习", "自然语言处理", "神经网络", "机器学习"],
"language": "中文",
"complexity": "复杂",
"key_data": ["准确率提升15%", "训练时间减少30%", "数据集包含10万条样本"],
"main_conclusions": ["深度学习显著提升了NLP任务性能", "Transformer架构是当前最优选择"]
}}
```
## 质量控制检查点
输出前请执行以下验证:
1. 每项提取信息是否基于原文内容并忠实于原意?
2. 定量数据是否保持绝对准确?
3. JSON格式是否符合规范要求
4. 数据类型是否与字段规范一致?
请严格按照上述规范执行提取任务,确保输出结果的准确性和完整性。
""")
])
@staticmethod
def get_initial_outline_prompt() -> ChatPromptTemplate:
"""初始PPT框架生成提示"""
return ChatPromptTemplate([
("human", """
## 任务目标
基于文档结构和内容结合项目具体要求和目标受众生成PPT演示文稿的初始框架大纲。
## 输入参数
**项目基本信息:**
- 项目主题:{project_topic}
- 应用场景:{project_scenario}
- 具体要求:{project_requirements}
**目标受众信息:**
- 受众类型:{target_audience}
- 自定义受众:{custom_audience}
**风格要求:**
- PPT风格{ppt_style}
- 自定义风格提示:{custom_style_prompt}
**文档结构元数据:**
{structure}
**源文档内容:**
{content}
**页数约束:**
{slides_range}
**目标语言:**
{target_language}
## 核心约束条件
### 1. 源材料理解原则
- 大纲内容必须基于上述文档结构和内容,通过理解和转化形成专业表达
- 允许对源材料进行合理的理解、归纳、重组和专业化表述
- 每个内容要点应忠实反映源材料的核心观点和信息
- 可以进行逻辑整理和结构优化,但不得偏离原意
### 2. 内容转化标准
- 数值数据:必须使用源材料中的原始数据,保持绝对精确性
- 结论观点:基于源材料内容进行理解和专业化表达,保持核心观点一致
- 术语概念:可以使用更专业、标准的术语表述,提升内容的专业性
- 表达优化:鼓励使用更清晰、专业的语言重新组织和表达源材料内容
### 3. 语言表达规范
- **书面化要求**:使用正式、规范的书面语言,避免口语化表达
- **专业化标准**:采用学术或商务场合的专业术语和表达方式
- **目标语言**:所有输出内容必须严格使用目标语言:{target_language}
- **表达提升**:鼓励使用更清晰、准确、专业的语言重新表述源材料内容
### 4. 结构组织原则
- **智能重组**:基于对源材料的理解,进行合理的层次化重组和逻辑优化
- **结构创新**可以创造性地调整内容组织结构使其更适合PPT展示和受众理解
- **逻辑提升**:通过重新组织提升内容的逻辑性和表达效果
- **内容完整**:确保重组后涵盖源材料的所有重要信息和观点
### 5. 数据可视化原则
- 图表配置当源材料包含数值数据时可以添加合适的chart_config提升展示效果
- 数据准确:图表数据必须完全来自源材料,保持绝对准确性
- 支持类型:包括但不限于柱状图(bar)、折线图(line)、饼图(pie)、环形图(doughnut)、雷达图(radar)等
- 可视化优化:可以选择最适合的图表类型来展示数据,提升理解效果
## 项目信息应用指导
### 1. 主题和场景适配
- **主题聚焦**确保PPT大纲紧密围绕项目主题{project_topic}
- **场景适配**:根据应用场景({project_scenario})调整内容组织和表达方式
- **要求整合**:将项目具体要求({project_requirements})融入大纲设计中
### 2. 目标受众定制
- **受众适配**:根据目标受众类型({target_audience})调整内容深度和表达方式
- **自定义考虑**:如有自定义受众描述({custom_audience}),据此优化内容的专业程度和表达风格
- **理解层次**:确保内容难度和表达方式适合目标受众的理解水平
### 3. 风格要求实现
- **风格匹配**根据PPT风格要求{ppt_style})调整内容的组织和表达方式
- **自定义风格**:如有自定义风格提示({custom_style_prompt}),在内容组织中体现相应的风格特征
- **一致性保持**:确保整个大纲在风格上保持一致性
## 生成规范要求
### 1. 标题设计规范
- PPT主标题必须基于文档的实际主题内容和项目主题使用专业化表述
- 采用符合目标受众和应用场景的标题表达方式
- 使用目标语言进行准确表达:{target_language}
- 保持与源材料主题和项目要求的一致性
### 2. 页数控制标准(最高优先级)
- 【强制要求】严格遵守页数约束:{slides_range}
- 【强制要求】页数约束是不可违反的硬性要求,必须优先满足
- 如果内容不足以达到最小页数要求,必须通过以下方式扩展:
* 添加更多的分析和解释
* 增加相关的背景信息和延伸内容
* 将复杂内容拆分为多个页面进行详细阐述
### 3. 结构组织框架
- **标题页**:结合项目主题和文档内容,使用适合目标受众的标题表述
- **目录页**:可对文档章节进行逻辑化重组,形成清晰的层次结构
- **内容页**:基于文档内容,采用适合目标受众的专业化语言表达和逻辑组织
- **结论页**:基于文档结论和项目要求,使用书面化的总结表述
## 内容生成执行标准
### 项目信息整合要求
- **主题对齐**确保PPT内容与项目主题{project_topic})高度一致
- **场景适配**:根据应用场景({project_scenario})调整内容的组织方式和重点
- **需求响应**:将项目具体要求({project_requirements})体现在内容选择和表达中
- **受众定制**:根据目标受众({target_audience})和自定义受众描述({custom_audience})调整内容深度和表达方式
- **风格体现**根据PPT风格{ppt_style})和自定义风格提示({custom_style_prompt})调整内容组织和表达风格
### 语言表达要求
- **书面化标准**所有content_points必须使用正式的书面语言表达
- **专业化程度**:采用适合目标受众的学术、商务或技术领域的专业表述方式
- **表述优化**:在保持源材料原意的前提下,可对表达方式进行专业化改进
- **术语规范**:使用标准化的专业术语,避免口语化表达
- **受众适配**:确保语言复杂度和专业程度适合目标受众理解
### 结构组织要求
- **层次化重组**:可对源材料内容进行合理的层次化重新组织
- **逻辑优化**:调整内容顺序和结构,使其更符合演示逻辑和应用场景
- **内容完整**:确保重组过程中不遗漏源材料的重要信息
- **可视化条件**:图表配置仅在源材料包含具体数值数据时添加
- **场景匹配**:确保结构组织符合应用场景的展示需求
## 输出格式规范
请按以下JSON结构输出大纲
### 根级字段
- **title** (string): PPT主标题基于文档实际内容使用目标语言{target_language}
- **total_pages** (integer): 预计总页数
- **page_count_mode** (string): 固定值"estimated"
- **slides** (array): 幻灯片对象数组
### 幻灯片对象结构
每个幻灯片对象包含以下字段:
- **page_number** (integer): 页码序号
- **title** (string): 幻灯片标题,基于源材料内容,使用专业化的书面表述,目标语言:{target_language}
- **content_points** (array): 内容要点列表,基于源材料内容,使用正式的书面语言和专业表述
- **slide_type** (string): 幻灯片类型("title"/"content"/"conclusion"
- **description** (string): 幻灯片功能描述,使用专业化的描述语言,目标语言:{target_language}
- **chart_config** (object, 可选): 图表配置对象,仅当源材料包含具体数据时添加
### 输出格式示例
```json
{{
"title": "[基于文档实际标题的准确表述]",
"total_pages": 10,
"page_count_mode": "estimated",
"slides": [
{{
"page_number": 1,
"title": "[基于文档实际标题的准确表述]",
"content_points": ["[文档中的实际信息]", "[文档中的实际作者信息]", "[文档中的实际日期信息]"],
"slide_type": "title",
"description": "PPT标题页展示文档核心主题信息"
}},
{{
"page_number": 2,
"title": "[基于文档实际章节标题]",
"content_points": ["[文档中的实际内容要点1]", "[文档中的实际数据]", "[文档中的实际结论]"],
"slide_type": "content",
"description": "基于文档实际内容的主体幻灯片"
}}
]
}}
```
## 质量控制与验证
### 生成前验证检查点
执行以下逐项验证:
1. **内容理解检查**每个content_points是否忠实反映了源材料的核心观点和信息
2. **数据准确性检查**:所有数值、百分比是否保持源材料中的绝对准确性
3. **标题合理性检查**:所有标题是否基于源材料内容并进行了专业化表述
4. **内容充实检查**:内容是否通过理解和转化变得更加专业和清晰
5. **可视化合理检查**:图表配置是否基于源材料数据并选择了合适的展示方式
### 最终质量检查清单
输出前请确认以下要点:
- [ ] 每个幻灯片标题是否基于源材料并进行了专业化表述?
- [ ] 每个content_points是否忠实反映源材料核心内容
- [ ] 所有定量数据是否保持绝对准确?
- [ ] 内容表达是否更加专业、清晰和有逻辑?
- [ ] 所有内容是否统一使用目标语言:{target_language}
- [ ] JSON格式是否符合规范要求
## 执行指令
请严格按照上述规范和约束条件执行大纲生成任务,确保输出结果的准确性、完整性和规范性。
""")
])
@staticmethod
def get_refine_outline_prompt() -> ChatPromptTemplate:
"""内容细化提示"""
return ChatPromptTemplate([
("human", """
## 任务目标
基于现有PPT大纲和新增文档内容结合项目要求和目标受众执行大纲细化和扩展操作。
## 输入参数
**项目基本信息:**
- 项目主题:{project_topic}
- 应用场景:{project_scenario}
- 具体要求:{project_requirements}
**目标受众信息:**
- 受众类型:{target_audience}
- 自定义受众:{custom_audience}
**风格要求:**
- PPT风格{ppt_style}
- 自定义风格提示:{custom_style_prompt}
**现有PPT结构**
{existing_outline}
**新增文档内容:**
{new_content}
**累积上下文信息:**
{context}
**页数约束:**
{slides_range}
**目标语言:**
{target_language}
## 核心约束条件
### 1. 源材料理解原则
- 所有细化和扩展内容必须基于新增内容和累积上下文的深度理解
- 允许对源材料进行合理的分析、归纳和专业化表述
- 每个新增或修改的content_points应忠实反映源材料的核心观点
- 鼓励通过理解和转化提升内容的专业性和表达效果
### 2. 内容转化标准
- **数据完整性**:所有新增数值、百分比必须保持源材料中的绝对准确性
- **观点提升性**:基于源材料内容进行理解和专业化表达,提升观点的清晰度
- **现有内容优化**:在保持准确性的基础上,优化现有内容的表达和组织
- **智能分析**:允许基于源材料进行合理的分析和洞察,提升内容深度
### 3. 语言表达规范
- **书面化要求**:所有新增和修改内容必须使用正式的书面语言
- **专业化标准**:采用专业领域的标准表述方式和术语
- **目标语言**:所有输出内容必须严格使用目标语言:{target_language}
- **风格一致性**:保持新旧内容在专业化语言风格上的一致性
- **表达提升**:鼓励通过理解和转化,使表达更加清晰、专业和有说服力
### 4. 数据可视化原则
- **智能配置**当新增内容包含数值数据时可以添加或优化chart_config
- **数据准确**:图表数据必须保持源材料的绝对准确性
- **效果优化**:可以选择最佳的可视化方式来提升数据展示效果
## 细化任务执行标准
### 1. 内容理解分析
- **深度理解**:深入分析新增内容的核心观点、逻辑结构和关键信息
- **智能提取**:基于理解提取最有价值的信息点和洞察
### 2. 内容智能更新
- **理解更新**:基于对新增内容的理解,智能更新和优化现有幻灯片
- **表达提升**:通过专业化表述提升内容的清晰度和说服力
### 3. 幻灯片扩展优化
- **价值导向**:当新增内容具有独立价值时,创建新的幻灯片展示
- **逻辑完整**:确保扩展后的结构更加完整和有逻辑
### 4. 逻辑连贯性提升
- **结构优化**:基于对内容的理解,优化整体逻辑结构
- **关联强化**:加强新旧内容之间的逻辑关联和过渡
### 5. 内容分布优化
- **智能分配**:基于内容重要性和逻辑关系进行智能分配
- **平衡提升**:通过重新组织实现更好的内容平衡
### 6. 可视化智能配置
- **数据展示**:为源材料中的数据选择最佳的可视化方式
- **效果优化**:通过合理的图表配置提升数据展示效果
## 细化执行原则
### 项目信息整合
- **主题一致性**:确保细化内容与项目主题({project_topic})保持高度一致
- **场景适配性**:根据应用场景({project_scenario})调整细化内容的重点和表达方式
- **需求响应性**:将项目具体要求({project_requirements})体现在内容细化中
- **受众定制化**:根据目标受众({target_audience})和自定义受众({custom_audience})调整内容深度
- **风格统一性**确保细化内容符合PPT风格{ppt_style})和自定义风格要求({custom_style_prompt}
### 内容细化标准
- **智能重组**:基于对内容的深度理解,进行创新性的结构调整和层次化重组
- **逻辑强化**:通过理解内容间的内在联系,强化逻辑关联和表达效果
- **语言提升**:确保新增内容在专业性和表达质量上达到更高标准
- **表达创新**:鼓励通过创新性表述提升内容的影响力和说服力
- **价值最大化**:通过智能分析和重组,最大化内容的展示价值
- **结构完善**:基于内容理解,创建更完善和有逻辑的整体结构
## 输出格式规范
请返回完整的JSON格式PPT大纲包含以下字段
- **title** (string): 更新后的PPT标题基于源材料内容使用目标语言{target_language}
- **total_pages** (integer): 更新后的总页数
- **page_count_mode** (string): 固定值"refining"
- **slides** (array): 完整的幻灯片对象列表,严格基于源材料内容
## 质量控制与验证
### 生成前验证检查点
执行以下逐项验证:
1. **内容理解检查**每个新增或修改的content_points是否忠实反映源材料的核心观点
2. **智能分析验证**:基于源材料的分析和洞察是否合理且有价值?
3. **数据准确性检查**:所有定量数据是否保持源材料的绝对准确性?
4. **可视化优化检查**:图表配置是否基于源材料数据并选择了最佳展示方式?
### 最终质量检查清单
输出前请确认以下要点:
- [ ] 新增内容是否基于源材料并进行了智能理解和转化?
- [ ] 修改内容是否在保持准确性的基础上提升了表达质量?
- [ ] 是否通过理解和分析提升了内容的专业性和价值?
- [ ] 所有内容是否统一使用目标语言:{target_language}
- [ ] JSON格式是否符合规范要求
- [ ] 新旧内容的逻辑连贯性是否得到了优化和提升?
## 执行指令
请严格按照上述规范和约束条件执行大纲细化任务,确保输出结果的准确性、完整性和规范性。
""")
])
@staticmethod
def get_custom_prompt(template: str) -> ChatPromptTemplate:
"""自定义提示模板"""
return ChatPromptTemplate([("human", template)])
@staticmethod
def get_error_recovery_prompt() -> ChatPromptTemplate:
"""错误恢复提示"""
return ChatPromptTemplate([
("human", """
## 任务目标
执行错误恢复操作基于文档内容摘要结合项目要求和目标受众生成基础PPT大纲。
## 输入参数
**项目基本信息:**
- 项目主题:{project_topic}
- 应用场景:{project_scenario}
- 具体要求:{project_requirements}
**目标受众信息:**
- 受众类型:{target_audience}
- 自定义受众:{custom_audience}
**风格要求:**
- PPT风格{ppt_style}
- 自定义风格提示:{custom_style_prompt}
**文档内容摘要:**
{content_summary}
**错误信息:**
{error_info}
**目标语言:**
{target_language}
## 核心约束条件
### 1. 源材料理解原则
- **内容基础**:所有内容必须基于上述文档内容摘要的深度理解
- **智能转化**:允许对摘要内容进行合理的理解、分析和专业化表述
- **价值提取**:基于摘要内容提取最有价值的观点和信息
- **创新表达**:鼓励通过理解和转化,创造更专业和有效的表达
### 2. 内容优化标准
- **数据准确性**:所有数值、百分比必须保持摘要中的绝对准确性
- **观点提升**:基于摘要的结论和观点,进行专业化和清晰化表述
- **智能分析**:基于摘要内容进行合理的分析和洞察,提升内容价值
- **质量优化**:通过理解和重组,优化内容质量和表达效果
### 3. 语言表达规范
- **书面化要求**:所有输出内容必须使用正式的书面语言
- **专业化标准**:采用专业领域的标准表述方式和术语
- **目标语言**:所有输出内容必须使用目标语言:{target_language}
- **表达创新**:鼓励通过创新性表述提升内容的专业性和影响力
- **风格提升**:确保语言表达达到高水准的专业性和一致性
### 4. 项目信息应用原则
- **主题对齐**:确保恢复的大纲与项目主题({project_topic})保持一致
- **场景适配**:根据应用场景({project_scenario})调整内容组织方式
- **需求体现**:在可能的范围内体现项目具体要求({project_requirements}
- **受众考虑**:根据目标受众({target_audience}{custom_audience})调整内容深度
- **风格匹配**尽可能体现PPT风格要求{ppt_style}{custom_style_prompt}
### 5. 数据可视化原则
- **智能配置**:当摘要包含数值数据时,选择最佳的图表配置方式
- **数据准确**:图表数据必须保持摘要中的绝对准确性
- **效果优化**:通过合理的可视化设计提升数据展示效果
## 生成规范要求
请生成一个简洁但完整的PPT大纲结合项目信息包含以下结构
### 基本结构组成
1. **标题页**:结合项目主题和摘要中的实际主题信息
2. **目录页**:基于摘要中的实际章节结构,适配应用场景
3. **主要内容页**3-5个严格基于摘要中的实际内容适合目标受众
4. **结论页**:基于摘要中的实际结论内容,体现项目要求
### 幻灯片规范标准
每个幻灯片必须满足以下要求:
- **内容要点数量**3-6个严格来自摘要中的实际内容
- **信息溯源性**:所有信息必须能在摘要中找到明确对应
- **语言表达**:使用正式的书面语言和专业化表述
- **可视化条件**:仅为摘要中的实际数据添加图表配置
- **长度控制**:严格控制内容长度,确保布局合理性
- **内容价值性**:基于摘要内容,通过理解和转化提升表达的价值和效果
## 质量控制与验证
### 生成前验证检查点
执行以下逐项验证:
1. **内容理解检查**每个content_points是否忠实反映摘要的核心观点和价值
2. **智能转化检查**:是否通过理解和分析提升了内容的专业性和表达效果?
3. **数据准确性检查**:所有定量数据是否保持摘要的绝对准确性?
4. **结构优化检查**:大纲结构是否完整且经过了合理的优化?
## 输出格式要求
返回标准JSON格式确保结构完整且严格基于摘要内容。所有字段必须符合规范要求确保后续处理的兼容性。
## 执行指令
请严格按照上述规范执行错误恢复任务生成可靠的基础PPT大纲。
""")
])
@classmethod
def get_all_prompts(cls) -> dict:
"""获取所有提示模板"""
return {
"structure_analysis": cls.get_structure_analysis_prompt(),
"initial_outline": cls.get_initial_outline_prompt(),
"refine_outline": cls.get_refine_outline_prompt(),
"error_recovery": cls.get_error_recovery_prompt(),
}