deepresearch/所有文件/prompts.py
2025-07-02 15:35:36 +08:00

340 lines
7.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
所有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}")