class TaskComplexityAnalyzer:
"""任务复杂度分析器"""
def analyze_prompt(self, prompt: str) -> dict:
"""分析提示词的任务复杂度"""
# 统计任务数量
task_indicators = [
"请",
"然后",
"接着",
"随后",
"最后",
"同时",
"并且"
]
task_count = sum(1 for indicator in task_indicators
if indicator in prompt)
# 统计格式要求数量
format_keywords = [
"json",
"csv",
"表格",
"列表",
"段落",
"要点",
"代码"
]
format_count = sum(1 for keyword in format_keywords
if keyword in prompt)
# 计算复杂度分数
complexity_score = task_count + format_count * 1.5
recommendation = self._get_recommendation(complexity_score)
return {
"task_count": task_count,
"format_requirements": format_count,
"complexity_score": complexity_score,
"recommendation": recommendation
}
def _get_recommendation(self, score: float) -> str:
if score <= 2:
return "✓ 可以单次处理"
elif score <= 5:
return "⚠️ 可能需要分解"
else:
return "❌ 强烈建议使用提示词链"
def suggest_decomposition(self, prompt: str) -> list:
"""建议如何分解任务"""
# 识别任务边界
tasks = []
task_keywords = ["请", "然后", "接着", "最后"]
parts = prompt.split("。")
for i, part in enumerate(parts):
for keyword in task_keywords:
if keyword in part:
tasks.append({
"step": i + 1,
"content": part.strip(),
"type": self._classify_task(part)
})
break
return tasks
def _classify_task(self, task_text: str) -> str:
"""分类任务类型"""
if any(w in task_text for w in ["翻译", "转换", "改写"]):
return "转换"
elif any(w in task_text for w in ["摘要", "总结", "概括"]):
return "摘要"
elif any(w in task_text for w in ["分析", "评价", "评分"]):
return "分析"
else:
return "其他"
# 使用示例
analyzer = TaskComplexityAnalyzer()
god_prompt = """请阅读这 10 份财报。
然后将它们翻译成中文。
接着对每一份写个 200 字摘要。
同时评估其情感倾向并打分。
最后将这些汇总成一个带柱状图的 HTML 网页。"""
analysis = analyzer.analyze_prompt(god_prompt)
print(f"复杂度: {analysis['complexity_score']}/10")
print(f"建议: {analysis['recommendation']}")
decomposition = analyzer.suggest_decomposition(god_prompt)
print("\n建议的分解步骤:")
for task in decomposition:
print(f"步骤 {task['step']} ({task['type']}): {task['content'][:50]}...")