tahamajs's picture
download
raw
3.93 kB
#!/usr/bin/env python3
import json
import os
import sys
from pathlib import Path
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
def load_results(results_dir):
results = {}
for arch_dir in Path(results_dir).glob("*/"):
if arch_dir.is_dir():
arch_name = arch_dir.name
results_file = arch_dir / "demonstration_results.json"
if results_file.exists():
with open(results_file, 'r') as f:
results[arch_name] = json.load(f)
return results
def generate_performance_plots(results, output_dir):
architectures = []
success_rates = []
execution_times = []
reasoning_qualities = []
for arch_name, arch_results in results.items():
if "performance_summary" in arch_results:
perf = arch_results["performance_summary"]
architectures.append(arch_name)
success_rates.append(perf["success_rate"])
execution_times.append(perf["avg_execution_time"])
reasoning_qualities.append(perf["avg_reasoning_quality"])
fig, axes = plt.subplots(2, 2, figsize=(15, 10))
fig.suptitle('Language Agent Architecture Performance Comparison', fontsize=16)
axes[0, 0].bar(architectures, success_rates, color='skyblue')
axes[0, 0].set_title('Success Rate')
axes[0, 0].set_ylabel('Success Rate')
axes[0, 0].set_ylim(0, 1)
axes[0, 1].bar(architectures, execution_times, color='lightcoral')
axes[0, 1].set_title('Average Execution Time')
axes[0, 1].set_ylabel('Time (seconds)')
axes[1, 0].bar(architectures, reasoning_qualities, color='lightgreen')
axes[1, 0].set_title('Average Reasoning Quality')
axes[1, 0].set_ylabel('Quality Score')
axes[1, 0].set_ylim(0, 1)
x = range(len(architectures))
width = 0.25
axes[1, 1].bar([i - width for i in x], success_rates, width, label='Success Rate', alpha=0.8)
axes[1, 1].bar(x, [q for q in reasoning_qualities], width, label='Reasoning Quality', alpha=0.8)
axes[1, 1].set_title('Combined Performance Metrics')
axes[1, 1].set_ylabel('Score')
axes[1, 1].set_xticks(x)
axes[1, 1].set_xticklabels(architectures)
axes[1, 1].legend()
plt.tight_layout()
plt.savefig(output_dir / 'performance_comparison.png', dpi=300, bbox_inches='tight')
plt.close()
print(f"Performance plots saved to {output_dir / 'performance_comparison.png'}")
def generate_summary_report(results, output_dir):
report = {
"summary": {
"total_architectures": len(results),
"timestamp": pd.Timestamp.now().isoformat()
},
"architectures": {}
}
for arch_name, arch_results in results.items():
if "performance_summary" in arch_results:
perf = arch_results["performance_summary"]
report["architectures"][arch_name] = {
"success_rate": perf["success_rate"],
"avg_execution_time": perf["avg_execution_time"],
"avg_reasoning_quality": perf["avg_reasoning_quality"],
"total_tests": perf["total_tests"]
}
with open(output_dir / 'summary_report.json', 'w') as f:
json.dump(report, f, indent=2)
print(f"Summary report saved to {output_dir / 'summary_report.json'}")
def main():
results_dir = Path("results")
plots_dir = results_dir / "plots"
reports_dir = results_dir / "reports"
plots_dir.mkdir(exist_ok=True)
reports_dir.mkdir(exist_ok=True)
results = load_results(results_dir)
if not results:
print("No results found!")
return
generate_performance_plots(results, plots_dir)
generate_summary_report(results, reports_dir)
print("Analysis completed successfully!")
if __name__ == "__main__":
main()

Xet Storage Details

Size:
3.93 kB
·
Xet hash:
c0fcdc45de82d6c608dd9eb8ce6d43236079d9c253994c0140b0cfdbe9fba194

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.