liurenchaxin/tests/test_enhanced_priority.py

159 lines
6.1 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.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
增强版优先级算法测试脚本
测试新的优先级算法在起承转合辩论系统中的表现
"""
import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'src'))
from jixia.debates.qi_cheng_zhuan_he_debate import QiChengZhuanHeDebateSystem, DebateStage
from jixia.debates.enhanced_priority_algorithm import EnhancedPriorityAlgorithm
def test_enhanced_priority_algorithm():
"""测试增强版优先级算法"""
print("🧪 开始测试增强版优先级算法")
print("=" * 50)
# 创建辩论系统
debate_system = QiChengZhuanHeDebateSystem()
# 模拟辩论场景
test_scenarios = [
{
"name": "起阶段开始",
"stage": DebateStage.QI,
"progress": 1,
"history": []
},
{
"name": "承阶段中期",
"stage": DebateStage.CHENG,
"progress": 3,
"history": [
{"speaker": "正1", "content": "AI投资具有巨大潜力", "timestamp": "2024-01-01T10:00:00"},
{"speaker": "反1", "content": "但风险也很高", "timestamp": "2024-01-01T10:01:00"}
]
},
{
"name": "转阶段激烈辩论",
"stage": DebateStage.ZHUAN,
"progress": 5,
"history": [
{"speaker": "正2", "content": "数据显示AI投资回报率很高", "timestamp": "2024-01-01T10:02:00"},
{"speaker": "反2", "content": "这些数据可能有偏差", "timestamp": "2024-01-01T10:03:00"},
{"speaker": "正3", "content": "我们有严格的风控措施", "timestamp": "2024-01-01T10:04:00"},
{"speaker": "反3", "content": "风控措施并不能完全避免风险", "timestamp": "2024-01-01T10:05:00"}
]
},
{
"name": "合阶段总结",
"stage": DebateStage.HE,
"progress": 2,
"history": [
{"speaker": "正4", "content": "综合来看AI投资利大于弊", "timestamp": "2024-01-01T10:06:00"},
{"speaker": "反4", "content": "我们需要更谨慎的态度", "timestamp": "2024-01-01T10:07:00"}
]
}
]
for i, scenario in enumerate(test_scenarios, 1):
print(f"\n📋 测试场景 {i}: {scenario['name']}")
print("-" * 30)
# 设置辩论状态
debate_system.context.current_stage = scenario['stage']
debate_system.context.stage_progress = scenario['progress']
debate_system.context.debate_history = scenario['history']
# 获取推荐发言者
try:
recommended_speaker = debate_system._get_priority_speaker()
analysis = debate_system.context.last_priority_analysis
print(f"🎯 推荐发言者: {recommended_speaker}")
print(f"📊 优先级分数: {analysis.get('priority_score', 'N/A'):.3f}")
if 'analysis' in analysis:
detailed_analysis = analysis['analysis']
print(f"🔍 详细分析:")
# 显示推荐发言者的详细信息
if recommended_speaker in detailed_analysis:
speaker_info = detailed_analysis[recommended_speaker]
print(f" - 发言者: {recommended_speaker}")
print(f" - 优先级分数: {speaker_info.get('priority_score', 'N/A'):.3f}")
print(f" - 分析时间: {speaker_info.get('analysis_timestamp', 'N/A')}")
profile = speaker_info.get('profile')
if profile:
print(f" - 团队: {profile.team}")
print(f" - 发言次数: {profile.total_speech_count}")
print(f" - 当前能量: {profile.current_energy:.2f}")
print(f" - 辩论风格: {profile.debate_style}")
# 显示所有发言者的分数排名
print(f"\n 📊 所有发言者排名:")
sorted_speakers = sorted(detailed_analysis.items(),
key=lambda x: x[1].get('priority_score', 0),
reverse=True)
for rank, (speaker, info) in enumerate(sorted_speakers[:5], 1):
score = info.get('priority_score', 0)
print(f" {rank}. {speaker}: {score:.3f}")
except Exception as e:
print(f"❌ 测试失败: {e}")
import traceback
traceback.print_exc()
print("\n" + "=" * 50)
print("✅ 增强版优先级算法测试完成")
def test_algorithm_performance():
"""测试算法性能"""
print("\n⚡ 性能测试")
print("-" * 20)
import time
algorithm = EnhancedPriorityAlgorithm()
available_speakers = ["正1", "正2", "正3", "正4", "反1", "反2", "反3", "反4"]
context = {
"current_stage": "",
"stage_progress": 3,
"max_progress": 6,
"time_remaining": 0.5,
"topic_keywords": ["AI", "投资", "风险"],
"positive_team_score": 0.6,
"negative_team_score": 0.4,
"positive_recent_speeches": 3,
"negative_recent_speeches": 2
}
recent_speeches = [
{"speaker": "正1", "content": "AI技术发展迅速"},
{"speaker": "反1", "content": "但存在不确定性"}
]
# 性能测试
start_time = time.time()
iterations = 100
for _ in range(iterations):
speaker, score, analysis = algorithm.get_next_speaker(
available_speakers, context, recent_speeches
)
end_time = time.time()
avg_time = (end_time - start_time) / iterations * 1000 # 转换为毫秒
print(f"📈 平均处理时间: {avg_time:.2f}ms")
print(f"🔄 总迭代次数: {iterations}")
print(f"⚡ 处理速度: {1000/avg_time:.0f} 次/秒")
if __name__ == "__main__":
test_enhanced_priority_algorithm()
test_algorithm_performance()