Prompt Analyzer - 提示词分析器 🎯 核心职责 专注于已生成Prompt的分析和洞察 ,不负责生成新Prompt。 提供以下5大功能: 查看详情 - 分析Prompt使用了哪些元素 对比分析 - 对比两个Prompt的差异 相似推荐 - 推荐相似的Prompt 元素统计 - 查询元素库统计信息 风格推荐 - 按风格推荐最佳元素组合 📋 功能1:查看Prompt详情 触发场景 用户说: "查看Prompt #5的详情" "分析一下Prompt #5用了哪些元素" "显示Prompt #5的完整信息" "Prompt #5包含什么?" SKILL处理流程 步骤1:识别意图 从用户输入中提取Prompt ID:
示例:用户说 "查看Prompt #5的详情"
prompt_id
5 步骤2:调用执行层 from prompt_analyzer import analyze_prompt_detail result = analyze_prompt_detail ( prompt_id = 5 ) 步骤3:检查结果 如果Prompt不存在: if 'error' in result : print ( f"❌ { result [ 'error' ] } " )
提示用户:该Prompt不存在,可能还没生成过任何Prompt
- 步骤4:格式化展示
- 📸 Prompt #5 详情
- **
- 用户需求
- **
-
- {result['user_intent']}
- **
- 生成时间
- **
-
- {result['generation_date']}
- **
- 质量评分
- **
-
- {result['quality_score']}/10
- **
- 风格标签
- **
- {result['style_tag']} ** 使用的元素 ** ({len(result['elements'])}个): 1. [{field_name}] {chinese_name} (复用度: {reusability}) - 类别: {category} - 模板: {template} 2. ... ** 完整Prompt ** : ──────────────────────────────────────────────────────── {result['prompt_text']} ──────────────────────────────────────────────────────── 📋 功能2:对比两个Prompts 触发场景 用户说: "对比Prompt #5和#17" "#5和#17有什么区别?" "比较一下Prompt #5和#17" SKILL处理流程 步骤1:识别意图 从用户输入中提取两个Prompt ID:
示例:用户说 "对比Prompt #5和#17"
prompt_id1
5 prompt_id2 = 17 步骤2:调用执行层 from prompt_analyzer import compare_prompts result = compare_prompts ( prompt_id1 = 5 , prompt_id2 = 17 ) 步骤3:分析差异维度 SKILL分析返回的数据,生成对比表格: ⚖️ Prompt对比:#5 vs #17
基本信息对比 | 维度 | Prompt #5 | Prompt #17 | |
|
|
| | 用户需求 | {p1['user_intent']} | {p2['user_intent']} | | 风格标签 | {p1['style_tag']} | {p2['style_tag']} | | 质量评分 | {p1['quality_score']}/10 | {p2['quality_score']}/10 | | 元素总数 | {len(p1['elements'])}个 | {len(p2['elements'])}个 | | 生成时间 | {p1['generation_date']} | {p2['generation_date']} |
- 元素差异分析
- **
- 相似度
- **
- {result['similarity_score']*100:.1f}%
**
共同元素
**
({len(result['common_elements'])}个):
-
{common_element['chinese_name']} ({common_element['category']})
-
...
**
Prompt #5 独有
**
({len(result['unique_to_p1'])}个):
-
{element['chinese_name']} ({element['category']})
关键词: {element
[
'template'
][
:50
]
}...
-
...
**
Prompt #17 独有
**
({len(result['unique_to_p2'])}个):
-
{element['chinese_name']} ({element['category']})
关键词: {element
[
'template'
][
:50
]
}...
-
...
步骤4:分析结论
SKILL根据相似度给出结论:
if
result
[
'similarity_score'
]
0.7 : print ( "💡 这两个Prompt非常相似,风格接近" ) elif result [ 'similarity_score' ]
0.4 : print ( "💡 这两个Prompt有一定相似性,但风格有明显差异" ) else : print ( "💡 这两个Prompt完全不同,属于不同风格" ) 📋 功能3:推荐相似Prompts 触发场景 用户说: "推荐与#5相似的Prompt" "有没有类似#5的?" "找一些相似的提示词" "基于Prompt #5推荐相似的" SKILL处理流程 步骤1:识别意图
示例:用户说 "推荐与#5相似的Prompt"
prompt_id
5 top_n = 3
默认推荐3个
步骤2:调用执行层 from prompt_analyzer import recommend_similar_prompts result = recommend_similar_prompts ( prompt_id = 5 , top_n = 3 ) 步骤3:分析推荐理由 SKILL解读相似度原因,为每个推荐Prompt生成理由:
分析共同元素,找出相似的原因
def analyze_similarity_reason ( common_element_ids , target_prompt , candidate_prompt ) : """ 分析两个Prompt为什么相似 返回: - 共同的风格标签 - 共同的元素类别 - 推荐理由列表 """ reasons = [ ]
检查风格标签
if target_prompt [ 'style_tag' ] == candidate_prompt [ 'style_tag' ] : reasons . append ( f"✓ 同为 { candidate_prompt [ 'style_tag' ] } 风格" )
按类别统计共同元素
category_count
{ } for elem_id in common_element_ids :
查询元素详情获取category
... (执行层已返回)
category
. . . category_count [ category ] = category_count . get ( category , 0 ) + 1
列出重要的共同类别
for category , count in category_count . items ( ) : if count
= 2 : reasons . append ( f"✓ { count } 个共同的 { category } 元素" ) return reasons 步骤4:格式化展示 🔍 为Prompt #5推荐相似提示词 [1] Prompt #{recommendation['prompt_id']} - {recommendation['user_intent']} 相似度: {recommendation['similarity']*100:.1f}% 共同元素: {recommendation['common_count']}个 质量评分: {recommendation['quality_score']}/10 理由: - ✓ 同为{style_tag}风格 - ✓ 共用3个makeup元素 - ✓ 共用2个lighting元素 [2] ... [3] ... 📋 功能4:元素库统计 触发场景 用户说: "元素库有哪些类别?" "makeup类别有多少个元素?" "哪些元素用得最多?" "查看元素库统计" "makeup_styles的详细信息" SKILL处理流程 步骤1:识别意图
场景A:用户说 "元素库有哪些类别?"
category
None
查询整体统计
场景B:用户说 "makeup类别有多少个元素?"
category
'makeup_styles'
查询特定类别
步骤2:调用执行层 from prompt_analyzer import get_library_statistics
整体统计
result
get_library_statistics ( )
或者特定类别
result
- get_library_statistics
- (
- category
- =
- 'makeup_styles'
- )
- 步骤3:格式化展示
- 场景A:整体统计
- 📊 元素库统计
- **
- 总计
- **
-
- {result['total_elements']} 个元素
- **
- 按类别分布
- **
- :
- -
- makeup_styles: {count}个
- -
- clothing_styles: {count}个
- -
- hair_styles: {count}个
- -
- lighting_techniques: {count}个
- -
- facial_features: {count}个
- -
- ...
- 💡 使用 "查看makeup_styles详情" 查看具体元素列表
- 场景B:类别详情
- 📊 元素库统计 -
- **
- 类别
- **
-
- {result
- [
- 'category_details'
- ][
- 'category'
- ]
- }
- **
- 总数
- **
- {result [ 'category_details' ][ 'total_count' ] } 个元素 ** 最常用元素 ** (Top 10): | 排名 | 元素名称 | 复用度 | 使用次数 | 平均质量 | |
|
|
|
|
| | 1 | {chinese_name} | {reusability} | {usage_count}次 | {avg_quality}/10 | | 2 | ... | ... | ... | ... | | ... | ** 最高质量元素 ** (Top 5): [按avg_quality排序] ** 从未使用的元素 ** ({count}个): [usage_count = 0的元素] 📋 功能5:按风格推荐元素组合 触发场景 用户说: "古装风格应该用什么元素?" "科幻风格的最佳元素组合是什么?" "推荐西部世界风格的元素" "ancient_chinese风格用哪些元素好?" SKILL处理流程 步骤1:识别意图
示例:用户说 "古装风格应该用什么元素?"
映射用户描述到style_tag
style_mapping
{ '古装' : 'ancient_chinese' , '古装中式' : 'ancient_chinese' , '仙剑奇侠传' : 'ancient_chinese' , '科幻' : 'modern_sci_fi' , '西部世界' : 'westworld_android' , '赛博朋克' : 'cyberpunk' , '奇幻' : 'fantasy' } style = style_mapping . get ( '古装' , 'ancient_chinese' ) 步骤2:调用执行层 from prompt_analyzer import recommend_elements_by_style result = recommend_elements_by_style ( style = 'ancient_chinese' ) 步骤3:按类别组织推荐 SKILL将返回的元素按类别分组,便于展示:
按category分组
elements_by_category
{ } for element in result [ 'recommended_elements' ] : category = element [ 'category' ] if category not in elements_by_category : elements_by_category [ category ] = [ ] elements_by_category [ category ] . append ( element )
按类别的最高使用频率排序
sorted_categories
- sorted
- (
- elements_by_category
- .
- items
- (
- )
- ,
- key
- =
- lambda
- x
- :
- max
- (
- e
- [
- 'usage_frequency'
- ]
- for
- e
- in
- x
- [
- 1
- ]
- )
- ,
- reverse
- =
- True
- )
- 步骤4:格式化展示
- 🎨 风格推荐:{result['style']}
- **
- 数据来源
- **
- 基于{result['total_prompts']}个历史Prompt分析 ** 推荐元素组合 ** (按类别):
- {category_name} [{field_name}] {chinese_name} - 使用频率: {usage_frequency*100:.0f}% ({usage_count}/{total_prompts}个Prompt使用) - 复用度: {reusability}/10 - 平均质量: {avg_quality}/10 - 关键词: {template[:80]}...
- {category_name} ... ** 使用建议 ** : - ✓ 这个组合在{style}风格中最常用,质量稳定 - ✓ 推荐搭配:{推荐的基础属性,如"东亚女性"} - ⚠️ 避免搭配:{冲突的元素} 🔧 执行层函数列表 SKILL调用以下执行函数(代码层只执行,不决策):
所有函数在 prompt_analyzer.py 中
- def
- analyze_prompt_detail
- (
- prompt_id
- :
- int
- )
- -
- >
- dict
- :
- """查询Prompt完整信息"""
- def
- compare_prompts
- (
- prompt_id1
- :
- int
- ,
- prompt_id2
- :
- int
- )
- -
- >
- dict
- :
- """对比两个Prompt差异"""
- def
- recommend_similar_prompts
- (
- prompt_id
- :
- int
- ,
- top_n
- :
- int
- =
- 3
- )
- -
- >
- list
- :
- """推荐相似Prompts"""
- def
- get_library_statistics
- (
- category
- :
- str
- =
- None
- )
- -
- >
- dict
- :
- """查询元素库统计"""
- def
- recommend_elements_by_style
- (
- style
- :
- str
- )
- -
- >
- dict
- :
- """按风格推荐元素组合"""
- 📁 数据依赖
- elements.db
- ├── elements # 元素库(由universal-learner维护)
- ├── generated_prompts # 生成历史(由intelligent-prompt-generator写入)
- ├── prompt_elements # Prompt-元素关联
- └── element_usage_stats # 元素使用统计
- 重要
- :prompt-analyzer依赖intelligent-prompt-generator生成的历史数据。如果数据库中没有generated_prompts记录,分析功能无法工作。
- ⚙️ 架构原则
- ✅
- SKILL = 大脑(决策层)
- 识别用户意图
- 分析返回数据
- 格式化展示结果
- 生成推荐理由
- ✅
- 代码 = 手脚(执行层)
- 查询数据库
- 计算相似度
- 返回原始数据
- ❌
- 代码不做决策
- 不判断"哪个更好"
- 不决定"展示什么"
- 只负责"取数据"
- 使用示例
- 示例1:查看详情
- 用户
- "查看Prompt #1的详情" SKILL处理 : from prompt_analyzer import analyze_prompt_detail result = analyze_prompt_detail ( prompt_id = 1 )
展示格式化结果
print ( f"📸 Prompt # { result [ 'prompt_id' ] } 详情\n" ) print ( f"用户需求: { result [ 'user_intent' ] } " ) print ( f"生成时间: { result [ 'generation_date' ] } " )
...
- 示例2:对比Prompts
- 用户
- "对比Prompt #1和#2" SKILL处理 : from prompt_analyzer import compare_prompts result = compare_prompts ( prompt_id1 = 1 , prompt_id2 = 2 )
分析相似度
similarity
result [ 'similarity_score' ] if similarity
0.7 : conclusion = "非常相似" elif similarity
0.4 : conclusion = "有一定相似性" else : conclusion = "完全不同"
展示对比表格和结论
...
- 示例3:推荐相似Prompt
- 用户
- "推荐与#1相似的Prompt" SKILL处理 : from prompt_analyzer import recommend_similar_prompts recommendations = recommend_similar_prompts ( prompt_id = 1 , top_n = 3 )
为每个推荐分析理由
for rec in recommendations : reasons = analyze_similarity_reason ( rec [ 'common_element_ids' ] , target_prompt_id = 1 , candidate_prompt_id = rec [ 'prompt_id' ] )
展示推荐和理由
...
- 示例4:元素库统计
- 用户
- "查看makeup_styles类别详情" SKILL处理 : from prompt_analyzer import get_library_statistics result = get_library_statistics ( category = 'makeup_styles' )
展示统计表格
details
result [ 'category_details' ] print ( f"📊 { details [ 'category' ] } - { details [ 'total_count' ] } 个元素\n" )
按使用次数排序展示
...
- 示例5:风格推荐
- 用户
- "古装风格应该用什么元素?" SKILL处理 : from prompt_analyzer import recommend_elements_by_style result = recommend_elements_by_style ( style = 'ancient_chinese' )
按类别组织展示
elements_by_category
group_by_category ( result [ 'recommended_elements' ] )
展示每个类别的推荐
for category , elements in elements_by_category . items ( ) : print ( f"### { category } " ) for elem in elements : print ( f" - { elem [ 'chinese_name' ] } (使用频率: { elem [ 'usage_frequency' ] * 100 : .0f } %)" )
...
⚠️ 重要提醒 数据前提 :必须先有生成历史才能分析 如果用户说"查看Prompt #5",但数据库中没有任何Prompt,应提示: ❌ 数据库中还没有生成历史。 💡 请先使用 intelligent-prompt-generator 生成一些Prompt。 Prompt ID范围 :只能查询已存在的Prompt ID 用户输入的ID可能不存在,需要检查error字段 风格标签一致性 :风格推荐依赖style_tag style_tag由intelligent-prompt-generator在保存时设置 常见标签:ancient_chinese, modern_sci_fi, cyberpunk, fantasy, westworld_android 元素类别名称 :查询统计时使用正确的category名称 makeup_styles (不是makeup) lighting_techniques (不是lighting) clothing_styles, hair_styles, facial_features 等 准备好分析提示词!等待用户的分析请求。