340 lines
7.8 KiB
Python
340 lines
7.8 KiB
Python
"""
|
||
所有AI模型的提示词模板
|
||
"""
|
||
|
||
PROMPTS = {
|
||
# 1. 判断问题类型
|
||
"question_type_analysis": """
|
||
请分析以下用户问题,判断其属于哪种类型:
|
||
|
||
用户问题:{question}
|
||
|
||
请从以下类型中选择最合适的一个:
|
||
1. factual - 事实查询型:需要具体、准确的信息
|
||
2. comparative - 分析对比型:需要多角度分析和比较
|
||
3. exploratory - 探索发现型:需要广泛探索未知领域
|
||
4. decision - 决策支持型:需要综合分析支持决策
|
||
|
||
请直接返回类型代码(如:factual),不需要其他解释。
|
||
""",
|
||
|
||
# 2. 细化问题
|
||
"refine_questions": """
|
||
基于用户的问题和问题类型,请提出3-5个细化问题,帮助更好地理解和研究这个主题。
|
||
|
||
原始问题:{question}
|
||
问题类型:{question_type}
|
||
|
||
请思考:
|
||
1. 还需要哪些具体信息?
|
||
2. 应该关注问题的哪些方面?
|
||
3. 有哪些潜在的相关维度需要探索?
|
||
|
||
请以列表形式返回细化问题,每个问题独占一行。
|
||
""",
|
||
|
||
# 3. 初步研究思路
|
||
"research_approach": """
|
||
基于用户问题和细化问题,请制定初步的研究思路。
|
||
|
||
原始问题:{question}
|
||
问题类型:{question_type}
|
||
细化问题:
|
||
{refined_questions}
|
||
|
||
请简要说明研究这个问题的整体思路和方法(200字以内)。
|
||
""",
|
||
|
||
# 4. 制定研究大纲
|
||
"create_outline": """
|
||
请为以下研究主题制定详细的研究大纲。
|
||
|
||
主题:{question}
|
||
问题类型:{question_type}
|
||
细化问题:{refined_questions}
|
||
研究思路:{research_approach}
|
||
|
||
请按以下JSON格式输出大纲:
|
||
```json
|
||
{{
|
||
"main_topic": "用户输入的主题",
|
||
"research_questions": [
|
||
"核心问题1",
|
||
"核心问题2",
|
||
"核心问题3"
|
||
],
|
||
"sub_topics": [
|
||
{{
|
||
"topic": "子主题1",
|
||
"explain": "子主题1的简单解释",
|
||
"priority": "high",
|
||
"related_questions": ["核心问题1", "核心问题2"]
|
||
}},
|
||
{{
|
||
"topic": "子主题2",
|
||
"explain": "子主题2的简单解释",
|
||
"priority": "medium",
|
||
"related_questions": ["核心问题2"]
|
||
}}
|
||
]
|
||
}}
|
||
```
|
||
|
||
注意:
|
||
- 子主题数量建议3-6个
|
||
- priority可选值:high/medium/low
|
||
- 确保子主题覆盖所有核心问题
|
||
""",
|
||
|
||
# 5. 大纲验证搜索
|
||
"outline_validation": """
|
||
请评估这个研究大纲是否完整和合理。
|
||
|
||
研究大纲:
|
||
{outline}
|
||
|
||
请思考并搜索验证:
|
||
1. 核心问题是否全面?
|
||
2. 子主题划分是否合理?
|
||
3. 是否有遗漏的重要方面?
|
||
|
||
如果需要改进,请提供具体建议。
|
||
""",
|
||
|
||
# 6. 修改大纲
|
||
"modify_outline": """
|
||
基于用户反馈和验证结果,请修改研究大纲。
|
||
|
||
原大纲:
|
||
{original_outline}
|
||
|
||
用户反馈:
|
||
{user_feedback}
|
||
|
||
验证发现的问题:
|
||
{validation_issues}
|
||
|
||
请输出修改后的大纲,格式与原大纲相同。
|
||
重点关注用户提出的修改意见。
|
||
""",
|
||
|
||
# 8. 评估搜索结果
|
||
"evaluate_search_results": """
|
||
请评估以下搜索结果对于研究子主题的重要性。
|
||
|
||
子主题:{subtopic}
|
||
搜索结果:
|
||
标题:{title}
|
||
URL:{url}
|
||
摘要:{snippet}
|
||
|
||
评估标准:
|
||
1. 主题匹配度:内容与子主题的相关程度
|
||
2. 问题覆盖度:能否回答相关的核心问题
|
||
3. 信息新颖度:是否提供了独特或深入的见解
|
||
|
||
请直接返回重要性级别:high/medium/low
|
||
""",
|
||
|
||
# 9. 信息反思
|
||
"information_reflection": """
|
||
<think>
|
||
好的,现在需要梳理已获取的信息
|
||
|
||
子主题:{subtopic}
|
||
|
||
已获得信息总结:
|
||
{search_summary}
|
||
|
||
让我再仔细思考总结一下是否有哪些信息非常重要,需要更细节的内容:
|
||
|
||
{detailed_analysis}
|
||
</think>
|
||
|
||
基于以上分析,以下信息还需要进一步获取细节内容:
|
||
""",
|
||
|
||
# 11. 信息结构化整合
|
||
"integrate_information": """
|
||
请将子主题的所有搜索结果整合为结构化信息。
|
||
|
||
子主题:{subtopic}
|
||
所有搜索结果:
|
||
{all_search_results}
|
||
|
||
请按以下JSON格式输出整合后的信息:
|
||
```json
|
||
{{
|
||
"key_points": [
|
||
{{
|
||
"point": "关键点描述",
|
||
"evidence": [
|
||
{{
|
||
"source_url": "https://example.com",
|
||
"confidence": "high"
|
||
}}
|
||
],
|
||
"contradictions": [],
|
||
"related_points": []
|
||
}}
|
||
],
|
||
"themes": [
|
||
{{
|
||
"theme": "主题归类",
|
||
"points": ["关键点1", "关键点2"]
|
||
}}
|
||
]
|
||
}}
|
||
```
|
||
""",
|
||
|
||
# 12. 子主题报告撰写
|
||
"write_subtopic_report": """
|
||
请基于整合的信息撰写子主题研究报告。
|
||
|
||
子主题:{subtopic}
|
||
整合信息:
|
||
{integrated_info}
|
||
|
||
撰写要求:
|
||
1. 使用以下格式
|
||
2. 每个观点必须标注来源URL
|
||
3. 保持客观、准确
|
||
4. 突出关键发现和洞察
|
||
|
||
格式要求:
|
||
## [子主题名称]
|
||
|
||
### 一、[主要发现1]
|
||
#### 1.1 [子标题]
|
||
[内容](来源:[具体URL])
|
||
|
||
#### 1.2 [子标题]
|
||
[内容](来源:[具体URL])
|
||
|
||
### 二、[主要发现2]
|
||
#### 2.1 [子标题]
|
||
[内容](来源:[具体URL])
|
||
|
||
### 三、关键洞察
|
||
1. **[洞察1]**:基于[来源URL]的数据显示...
|
||
2. **[洞察2]**:根据[来源URL]的分析...
|
||
|
||
### 四、建议与展望
|
||
[基于研究的可执行建议]
|
||
""",
|
||
|
||
# 13. 幻觉内容检测
|
||
"hallucination_detection": """
|
||
请检查撰写内容是否存在幻觉(与原始来源不符)。
|
||
|
||
撰写内容:
|
||
{written_content}
|
||
声称的来源URL:{claimed_url}
|
||
|
||
原始搜索结果中的对应内容:
|
||
{original_content}
|
||
|
||
请判断:
|
||
1. 撰写内容是否准确反映了原始来源?
|
||
2. 是否存在夸大、错误归因或无中生有?
|
||
|
||
如果存在幻觉,请指出具体问题。
|
||
返回格式:
|
||
{{
|
||
"is_hallucination": true/false,
|
||
"hallucination_type": "夸大/错误归因/无中生有/无",
|
||
"explanation": "具体说明"
|
||
}}
|
||
""",
|
||
|
||
# 14. 幻觉内容重写(V3使用)
|
||
"rewrite_hallucination": """
|
||
请基于原始搜索材料重新撰写这部分内容。
|
||
|
||
原始内容(存在幻觉):
|
||
{hallucinated_content}
|
||
|
||
原始搜索材料:
|
||
{original_sources}
|
||
|
||
请严格基于搜索材料重新撰写,确保准确性。
|
||
保持原有的格式和风格。
|
||
""",
|
||
|
||
# 15. 最终报告生成
|
||
"generate_final_report": """
|
||
请基于所有子主题报告生成最终的综合研究报告。
|
||
|
||
研究主题:{main_topic}
|
||
研究问题:{research_questions}
|
||
|
||
各子主题报告:
|
||
{subtopic_reports}
|
||
|
||
要求:
|
||
1. 综合各子主题的发现
|
||
2. 提炼整体洞察
|
||
3. 保持URL引用格式
|
||
4. 提供可执行的建议
|
||
|
||
报告结构:
|
||
# [研究主题]
|
||
|
||
## 执行摘要
|
||
[整体研究发现概述]
|
||
|
||
## 主要发现
|
||
### 1. [综合发现1]
|
||
基于多个来源的分析...(来源:[URL1], [URL2])
|
||
|
||
### 2. [综合发现2]
|
||
研究表明...(来源:[URL3], [URL4])
|
||
|
||
## 综合洞察
|
||
[基于所有研究的深度洞察]
|
||
|
||
## 建议
|
||
[具体可执行的建议]
|
||
|
||
## 详细子主题报告
|
||
[插入所有子主题的详细报告]
|
||
"""
|
||
}
|
||
|
||
# 搜索相关的提示词(V3使用)
|
||
SEARCH_PROMPTS = {
|
||
"generate_search_queries": """
|
||
为以下子主题生成{count}个搜索查询。
|
||
|
||
子主题:{subtopic}
|
||
子主题说明:{explanation}
|
||
相关问题:{related_questions}
|
||
|
||
要求:
|
||
1. 查询要具体、有针对性
|
||
2. 覆盖不同角度
|
||
3. 使用不同的关键词组合
|
||
4. 每个查询独占一行
|
||
|
||
请直接返回搜索查询列表。
|
||
""",
|
||
|
||
"generate_refined_queries": """
|
||
基于信息反思结果,为以下重点生成细节搜索查询。
|
||
|
||
重点信息:{key_info}
|
||
需要的细节:{detail_needed}
|
||
|
||
请生成3个针对性的搜索查询,每个查询独占一行。
|
||
"""
|
||
}
|
||
|
||
def get_prompt(prompt_name: str, **kwargs) -> str:
|
||
"""获取并格式化提示词"""
|
||
if prompt_name in PROMPTS:
|
||
return PROMPTS[prompt_name].format(**kwargs)
|
||
elif prompt_name in SEARCH_PROMPTS:
|
||
return SEARCH_PROMPTS[prompt_name].format(**kwargs)
|
||
else:
|
||
raise ValueError(f"Unknown prompt: {prompt_name}") |