Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| import io | |
| from contextlib import redirect_stdout | |
| import compare_models_live | |
| def test_score_from_end_prefers_exact_score_over_rounded_rewards(): | |
| exact = compare_models_live._score_from_end("0.9562", "-0.06,-0.06,0.95") | |
| fallback = compare_models_live._score_from_end(None, "-0.06,-0.06,0.95") | |
| assert exact == 0.9562 | |
| assert fallback == 0.95 | |
| def test_live_comparison_defaults_include_task_e_case(): | |
| assert "CASE-E-001" in compare_models_live.DEFAULT_CASES | |
| def test_print_table_supports_more_than_two_models(): | |
| results = [ | |
| compare_models_live.ModelStats( | |
| model="gpt-3.5-turbo", | |
| average_score=0.71, | |
| success_rate=0.5, | |
| min_score=0.4, | |
| max_score=0.9, | |
| failed_cases=["CASE-D-001"], | |
| case_scores={"CASE-D-001": 0.4}, | |
| api_calls=10, | |
| ), | |
| compare_models_live.ModelStats( | |
| model="gpt-4o", | |
| average_score=0.82, | |
| success_rate=0.75, | |
| min_score=0.5, | |
| max_score=0.95, | |
| failed_cases=["CASE-D-003"], | |
| case_scores={"CASE-D-003": 0.5}, | |
| api_calls=10, | |
| ), | |
| compare_models_live.ModelStats( | |
| model="gpt-5.4", | |
| average_score=0.9, | |
| success_rate=0.83, | |
| min_score=0.6, | |
| max_score=0.99, | |
| failed_cases=[], | |
| case_scores={"CASE-D-004": 0.9}, | |
| api_calls=10, | |
| ), | |
| ] | |
| buffer = io.StringIO() | |
| with redirect_stdout(buffer): | |
| compare_models_live.print_table(results) | |
| output = buffer.getvalue() | |
| assert "gpt-3.5-turbo" in output | |
| assert "gpt-4o" in output | |
| assert "gpt-5.4" in output | |
| assert "Average Score" in output | |
| assert "Tier" in output | |
| def test_build_capability_summary_flags_non_monotonic_model_ordering(): | |
| results = [ | |
| compare_models_live.ModelStats( | |
| model="gpt-4o", | |
| average_score=0.92, | |
| success_rate=0.9, | |
| min_score=0.72, | |
| max_score=0.99, | |
| failed_cases=[], | |
| case_scores={"CASE-A-001": 0.92}, | |
| api_calls=18, | |
| model_profile={"tier": "strong", "capability_score": 4.6}, | |
| ), | |
| compare_models_live.ModelStats( | |
| model="gpt-5.4", | |
| average_score=0.81, | |
| success_rate=0.7, | |
| min_score=0.51, | |
| max_score=0.96, | |
| failed_cases=["CASE-D-004"], | |
| case_scores={"CASE-D-004": 0.81}, | |
| api_calls=24, | |
| model_profile={"tier": "elite", "capability_score": 5.4}, | |
| ), | |
| ] | |
| summary = compare_models_live.build_capability_summary(results) | |
| assert summary["ordered_models"] == ["gpt-4o", "gpt-5.4"] | |
| assert summary["monotonic_by_capability"] is False | |
| assert summary["violations"][0]["stronger_model"] == "gpt-5.4" | |
| def test_build_output_payload_includes_cases_and_model_profiles(): | |
| results = [ | |
| compare_models_live.ModelStats( | |
| model="gpt-5.4", | |
| average_score=0.93, | |
| success_rate=0.86, | |
| min_score=0.71, | |
| max_score=0.99, | |
| failed_cases=["CASE-D-005"], | |
| case_scores={"CASE-D-005": 0.71}, | |
| api_calls=32, | |
| debug_artifact_dir="live_model_comparison_debug/gpt-5.4", | |
| model_profile={"tier": "elite", "capability_score": 5.4}, | |
| ) | |
| ] | |
| payload = compare_models_live.build_output_payload( | |
| results, | |
| cases=["CASE-A-001", "CASE-D-005"], | |
| pass_threshold=0.85, | |
| api_base_url="https://api.openai.com/v1", | |
| env_url="http://127.0.0.1:8000", | |
| ) | |
| assert payload["cases"] == ["CASE-A-001", "CASE-D-005"] | |
| assert payload["case_count"] == 2 | |
| assert payload["capability_order"]["ordered_models"] == ["gpt-5.4"] | |
| assert payload["results"][0]["model_profile"]["tier"] == "elite" | |