prompt-analyzer
npx skills add https://github.com/huangserva/skill-prompt-generator --skill prompt-analyzer
Agent 安装分布
Skill 文档
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ï¼ç±»å«è¯¦æ
ð å
ç´ åºç»è®¡ - {category}
**ç±»å«**: {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åæ
**æ¨èå
ç´ ç»å** (æç±»å«):
### 1. {category_name}
[{field_name}] {chinese_name}
- 使ç¨é¢ç: {usage_frequency*100:.0f}% ({usage_count}/{total_prompts}个Prompt使ç¨)
- å¤ç¨åº¦: {reusability}/10
- å¹³åè´¨é: {avg_quality}/10
- å
³é®è¯: {template[:80]}...
### 2. {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 #5″ï¼ä½æ°æ®åºä¸æ²¡æä»»ä½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 ç
åå¤å¥½åææç¤ºè¯ï¼çå¾ ç¨æ·çåæè¯·æ±ã