|
|
|
|
|
""" |
|
|
# Process only first 10 questions |
|
|
python auto_pipe.py questions.csv --samples 10 |
|
|
|
|
|
# Process 50 questions with custom output file |
|
|
python auto_pipe.py questions.csv --samples 50 --output results.csv |
|
|
|
|
|
# Create sample CSV with 20 questions and process all |
|
|
python auto_pipe.py --create-sample --sample-size 20 |
|
|
|
|
|
# Process 5 questions from custom column |
|
|
python auto_pipe.py questions.csv --column "user_question" --samples 5 |
|
|
|
|
|
# Process all questions (no limit) |
|
|
python auto_pipe.py questions.csv |
|
|
""" |
|
|
|
|
|
import os |
|
|
import sys |
|
|
import pandas as pd |
|
|
from datetime import datetime |
|
|
|
|
|
|
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__))) |
|
|
|
|
|
|
|
|
from test_runner import run_csv_test, create_sample_csv |
|
|
|
|
|
def main(): |
|
|
print("π€ Wisal CSV Test Runner") |
|
|
print("=" * 40) |
|
|
|
|
|
|
|
|
if len(sys.argv) > 1: |
|
|
csv_file = sys.argv[1] |
|
|
if not os.path.exists(csv_file): |
|
|
print(f"β Error: File '{csv_file}' not found") |
|
|
return |
|
|
else: |
|
|
|
|
|
print("π No CSV file provided. Creating sample questions...") |
|
|
csv_file = create_sample_csv("assets/qa_data.csv") |
|
|
print(f"β
Sample CSV created: {csv_file}") |
|
|
|
|
|
|
|
|
if len(sys.argv) > 3 and sys.argv[2] == "-o": |
|
|
output_file = sys.argv[3] |
|
|
else: |
|
|
base_name = os.path.splitext(csv_file)[0] |
|
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") |
|
|
output_file = f"{base_name}_results_{timestamp}.csv" |
|
|
|
|
|
print(f"π₯ Input file: {csv_file}") |
|
|
print(f"π€ Output file: {output_file}") |
|
|
print("π Starting test run...\n") |
|
|
|
|
|
try: |
|
|
|
|
|
result_file = run_csv_test(csv_file, output_file) |
|
|
|
|
|
|
|
|
print("\nπ Results Preview:") |
|
|
print("-" * 40) |
|
|
df = pd.read_csv(result_file) |
|
|
|
|
|
for idx, row in df.iterrows(): |
|
|
status_emoji = "β
" if row['status'] == 'success' else "β" |
|
|
print(f"{status_emoji} Q{idx+1}: {row['question'][:60]}...") |
|
|
print(f" β±οΈ Time: {row['total_time_seconds']:.2f}s") |
|
|
if row['status'] == 'success': |
|
|
print(f" π¬ Answer: {row['clean_answer'][:100]}...") |
|
|
else: |
|
|
print(f" β Error: {row['error_message']}") |
|
|
print() |
|
|
|
|
|
|
|
|
successful = len(df[df['status'] == 'success']) |
|
|
total = len(df) |
|
|
avg_time = df[df['status'] == 'success']['total_time_seconds'].mean() |
|
|
|
|
|
print("π Summary:") |
|
|
print(f" Total Questions: {total}") |
|
|
print(f" Successful: {successful}") |
|
|
print(f" Failed: {total - successful}") |
|
|
print(f" Average Time: {avg_time:.2f} seconds") |
|
|
print(f" Results saved to: {result_file}") |
|
|
|
|
|
except Exception as e: |
|
|
print(f"β Error running test: {e}") |
|
|
return |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
main() |