Files
PlantAI-dev/update_prompts.py
T

131 lines
4.4 KiB
Python
Raw Normal View History

2026-08-03 18:42:47 +08:00
#!/usr/bin/env python3
"""
批量更新提示词文件,同步到20个阶段
"""
import re
from pathlib import Path
PROMPTS_DIR = Path("/home/xia-lab/wutx/00test/bbav5/prompts")
# 阶段名称映射(旧 -> 新)
STAGE_MAPPINGS = {
# 核心阶段重命名
'`identify`': '`gene-identify`',
'`motif`': '`motif-analysis`',
'`domain`': '`domain-analysis`',
'`promoter`': '`promoter-analysis`',
# 确保新阶段名称一致性
'阶段1:基因家族鉴定': '阶段1:基因家族鉴定 (`gene-identify`)',
'阶段2:系统发育分析': '阶段2:系统发育分析 (`phylogeny`)',
'阶段3:保守基序分析': '阶段3:保守基序分析 (`motif-analysis`)',
'阶段4:结构域分析': '阶段4:结构域分析 (`domain-analysis`)',
'阶段5:蛋白结构分析': '阶段5:蛋白结构分析 (`structure`)',
'阶段6:启动子分析': '阶段6:启动子分析 (`promoter-analysis`)',
'阶段7:共线性分析': '阶段7:共线性分析 (`synteny`)',
'阶段8:染色体定位': '阶段8:染色体定位 (`karyotype`)',
'阶段9:蛋白特性分析': '阶段9:蛋白特性分析 (`pep`)',
'阶段10:表达模式分析': '阶段10:表达模式分析 (`expression`)',
'阶段11:基因注释': '阶段11:基因注释 (`annotation`)',
# 新增阶段
'阶段12:Ka/Ks分析': '阶段12:Ka/Ks分析 (`kaks`)',
'阶段13:种间分析': '阶段13:种间分析 (`interspecies`)',
'阶段14:蛋白互作分析': '阶段14:蛋白互作分析 (`ppi`)',
'阶段15:基因家族汇总': '阶段15:基因家族汇总 (`summary`)',
'阶段16:RNA-seq质控': '阶段16:RNA-seq质控 (`rnaseq-qc`)',
'阶段17:RNA-seq比对': '阶段17:RNA-seq比对 (`rnaseq-align`)',
'阶段18:RNA-seq定量': '阶段18:RNA-seq定量 (`rnaseq-quant`)',
'阶段19:差异表达分析': '阶段19:差异表达分析 (`rnaseq-de`)',
'阶段20:富集分析': '阶段20:富集分析 (`rnaseq-enrich`)',
}
# 需要更新的文件
FILES_TO_UPDATE = [
'execution_agent.md',
'result_parser_agent.md',
'validator_agent.md',
'diagnosis_agent.md',
]
def update_file(filepath: Path) -> dict:
"""更新单个文件"""
content = filepath.read_text(encoding='utf-8')
original_content = content
changes = []
# 应用映射
for old, new in STAGE_MAPPINGS.items():
if old in content:
count = content.count(old)
content = content.replace(old, new)
changes.append(f"'{old}' -> '{new}' ({count}处)")
# 检查是否需要更新阶段数量说明
if '11个阶段' in content:
content = content.replace('11个阶段', '20个阶段')
changes.append("'11个阶段' -> '20个阶段'")
if '标准分析流程(11个阶段)' in content:
content = content.replace('标准分析流程(11个阶段)', '标准分析流程(20个阶段)')
changes.append("更新标题")
# 保存文件
if content != original_content:
filepath.write_text(content, encoding='utf-8')
return {
'file': filepath.name,
'updated': True,
'changes': changes
}
else:
return {
'file': filepath.name,
'updated': False,
'changes': []
}
def main():
print("=" * 60)
print("批量更新提示词文件")
print("=" * 60)
print()
results = []
for filename in FILES_TO_UPDATE:
filepath = PROMPTS_DIR / filename
if filepath.exists():
result = update_file(filepath)
results.append(result)
status = "✅ 已更新" if result['updated'] else "⏭️ 无需更新"
print(f"{status}: {filename}")
if result['changes']:
for change in result['changes']:
print(f" - {change}")
else:
print(f"❌ 文件不存在: {filename}")
print()
print("=" * 60)
print("更新汇总")
print("=" * 60)
updated_count = sum(1 for r in results if r['updated'])
print(f"已更新文件: {updated_count}/{len(FILES_TO_UPDATE)}")
print()
for r in results:
if r['updated']:
print(f"✅ {r['file']}")
for change in r['changes']:
print(f" - {change}")
print("=" * 60)
if __name__ == "__main__":
main()